'use strict'; const commando = require("@iceprod/discord.js-commando"); const { getChannel, trySend, defaultImageEmbed, parseDoubleDash, parseDash, parseComa } = require("../../resources/functions"); module.exports = class eventlog extends commando.Command { constructor(client) { super(client, { name: "eventlog", aliases: ["eventlogs"], memberName: "eventlog", group: "moderation", description: "Configure server's Event Log Channels.", guildOnly: true, userPermissions: ["MANAGE_GUILD"] }); } async run(msg, arg) { if (!msg.guild.dbLoaded) await msg.guild.dbLoad(); const set = parseDoubleDash(arg); let eventChannels = msg.guild.eventChannels; if (set.length < 2 && set[0].length === 0) return trySend(this.client, msg, await resultEmbed(this)); let report = "", joinlog, leavelog, channellog, banlog, unbanlog, mesEdlog = { channel: undefined, ignore: [] }, invitelog, rolelog, guildlog, membernicklog, emotelog, memberroleslog, remove = false, [setMesEdIgnore, setMesDelIgnore] = [false, false], mesDellog = { channel: undefined, ignore: [] }; for (const args of set) { if (args.startsWith("r ")) remove = true; if (args.startsWith("j ")) { if (remove) eventChannels.join = undefined; else { leavelog = getChannel(msg, args.slice("j".length).trim(), ["category", "voice"])?.id; if (!leavelog) report += "**[JOIN]** Unknown channel.\n"; } } if (args.startsWith("l ")) { if (remove) eventChannels.leave = undefined; else { leavelog = getChannel(msg, args.slice("l ".length).trim(), ["category", "voice"])?.id; if (!leavelog) report += "**[LEAVE]** Unknown channel.\n"; } } if (args.startsWith("c ")) { if (remove) eventChannels.channel = undefined; else { channellog = getChannel(msg, args.slice("c ".length).trim(), ["category", "voice"])?.id; if (!channellog) report += "**[CHANNEL]** Unknown channel.\n"; } } if (args.startsWith("b ")) { if (remove) { eventChannels.ban = undefined; } else { banlog = getChannel(msg, args.slice("b ".length).trim(), ["category", "voice"])?.id; if (!banlog) { report += "**[BAN]** Unknown channel.\n"; } } } if (args.startsWith("u ")) { if (remove) { eventChannels.unban = undefined; } else { unbanlog = getChannel(msg, args.slice("u ".length).trim(), ["category", "voice"])?.id; if (!unbanlog) { report += "**[UNBAN]** Unknown channel.\n"; } } } if (args.startsWith("e ")) { if (remove) { eventChannels.mesEd = { channel: undefined, ignore: [] } } else { const mesArgs = parseDash(args.slice("e ").trim()); if (mesArgs.length > 0 && /(? 0) { for (const ign of ignoreArgs) { if (ign.length === 0) { continue; } const chan = getChannel(msg, ign, ["category", "voice"]); if (chan) { if (mesEdlog.ignore.includes(chan.id)) { report += "**[MESEDIT_CHANNELIGNORE]** Duplicate result: <#" + chan.id + `> with keyword: **${ign.trim()}**\n`; } else { mesEdlog.ignore.push(chan.id); } } else { report += "**[MESEDIT_CHANNELIGNORE]** Unknown channel: **" + ign.trim() + "**\n"; } } } } } } const igno = /(? 0 && /(? 0) { for (const ign of ignoreArgs) { if (ign.length === 0) { continue; } const chan = getChannel(msg, ign, ["category", "voice"]); if (chan) { if (mesDellog.ignore.includes(chan.id)) { report += "**[MESDEL_CHANNELIGNORE]** Duplicate result: <#" + chan.id + `> with keyword: **${ign.trim()}**\n`; } else { mesDellog.ignore.push(chan.id); } } else { report += "**[MESDEL_CHANNELIGNORE]** Unknown channel: **" + ign.trim() + "**\n"; } } } } } } const igno = /(? \`\`\`**Categories:** \`\`\`js\n[MESSAGE [-ignore ], JOINLEAVE, MEMBER, MEMBERROLE, BANUNBAN, GUILD, ROLE, CHANNEL, EMOJI, INVITE]\`\`\``) .addField(`Message Edit`, eventChannels?.mesEd?.channel ? `<#${eventChannels?.mesEd.channel}>\n**Ignores:** ${eventChannels?.mesEd?.ignore?.length > 0 ? "<#" + eventChannels?.mesEd.ignore.join(">, <#") + ">" : "None"}` : "Not set", true) .addField(`Message Delete`, eventChannels?.mesDel?.channel ? `<#${eventChannels?.mesDel.channel}>\n**Ignores:** ${eventChannels?.mesDel?.ignore?.length > 0 ? "<#" + eventChannels?.mesDel.ignore.join(">, <#") + ">" : "None"}` : "Not set", true) .addField(`Member Join`, eventChannels?.join ? `<#${eventChannels.join}>` : "Not set", true) .addField(`Member Leave`, eventChannels?.leave ? `<#${eventChannels.leave}>` : "Not set", true) .addField(`Member Profile Updates`, eventChannels?.member ? `<#${eventChannels?.member}>` : "Not set", true) .addField(`Member Role Updates`, eventChannels?.memberRole ? `<#${eventChannels?.memberRole}>` : "Not set", true) .addField(`Member Ban`, eventChannels?.ban ? `<#${eventChannels?.ban}>` : "Not set", true) .addField(`Member Unban`, eventChannels?.unban ? `<#${eventChannels?.unban}>` : "Not set", true) .addField(`Server Updates`, eventChannels?.guild ? `<#${eventChannels?.guild}>` : "Not set", true) .addField(`Server Role Updates`, eventChannels?.role ? `<#${eventChannels?.role}>` : "Not set", true) .addField(`Server Channels Updates`, eventChannels?.channel ? `<#${eventChannels?.channel}>` : "Not set", true) .addField(`Server Emoji Updates`, eventChannels?.emote ? `<#${eventChannels?.emote}>` : "Not set", true) .addField(`Server Invites`, eventChannels?.invite ? `<#${eventChannels?.invite}>` : "Not set", true); return emb; } eventChannels = { join: joinlog ?? eventChannels?.join, leave: leavelog ?? eventChannels?.leave, channel: channellog ?? eventChannels?.channel, unban: unbanlog ?? eventChannels?.unban, ban: banlog ?? eventChannels?.ban, mesEd: { channel: mesEdlog.channel ?? eventChannels?.mesEd?.channel, ignore: setMesEdIgnore ? mesEdlog.ignore : eventChannels?.mesEd?.ignore }, mesDel: { channel: mesDellog.channel ?? eventChannels?.mesDel?.channel, ignore: setMesDelIgnore ? mesDellog.ignore : eventChannels?.mesDel?.ignore }, invite: invitelog ?? eventChannels?.invite, role: rolelog ?? eventChannels?.role, guild: guildlog ?? eventChannels?.guild, member: membernicklog ?? eventChannels?.member, emote: emotelog ?? eventChannels?.emote, memberRole: memberroleslog ?? eventChannels?.memberRole } const r = await msg.guild.setEventChannels(eventChannels); if (r) { report += "Event Log Channels set!\n"; report += "\n**SUMMARY:**"; } return trySend(this.client, msg, (await resultEmbed(this)).setDescription(report.slice(0, 2048))); } };