diff --git a/.envdev b/.envdev index 2690805..525201d 100644 --- a/.envdev +++ b/.envdev @@ -43,6 +43,14 @@ GROUP_A_NAME="Obsidian Technologies" GROUP_B_NAME="Genesis Command" GROUP_C_NAME="The Hand" +GROUP_A_CHANNEL_ID="493972208616603658" +GROUP_B_CHANNEL_ID="493972336190685185" +GROUP_C_CHANNEL_ID="493972354137849856" + +GROUP_A_LEADER_NAME="Kamala, Obsidian Vice President" +GROUP_B_LEADER_NAME="Captain Montgomery" +GROUP_C_LEADER_NAME="Dairo, High Prophet of The Hand" + # Channel IDs # Replace them with your own on a sandbox server! CODEX_CHANNEL_ID="457580831284789249" @@ -56,12 +64,6 @@ DEADLANDS_CHANNEL_ID="459196395119837195" HELLS_GATE_CHANNEL_ID="464238060243124245" TEST_CHANNEL_ID="464838060262293514" -# Bot Channels in SANCTUM (A = Obsidian, B = Genesis, C = Hand) -# Replace them with your own on a sandbox server! -GROUP_A_BOT_ID="493972208616603658" -GROUP_B_BOT_ID="493972336190685185" -GROUP_C_BOT_ID="493972354137849856" - # Bot IDs # Replace them with your own on a sandbox server! MORI_ID="461294299515191306" @@ -76,6 +78,10 @@ KAMALA_OBSIDIAN_ID="482644250354384906" DAIRO_HAND_ID="482644985318211594" LIBRARIAN_ID="458033243481047082" +# Bot Names +# Replace them with your own on a sandbox server! +GHOST_NAME="Ghost 5.0.1" + # Bot Tokens ADAM_TOKEN="" RAVAGER_TOKEN="" diff --git a/Shared/testbot.js b/Shared/testbot.js index e10dac1..3c4af10 100644 --- a/Shared/testbot.js +++ b/Shared/testbot.js @@ -33,7 +33,7 @@ client.on("message", function(msg) { switch(command) { //used for debugging case "ping": - shared.SendPublicMessage(client, "Ratstail91", "bot-spam", "pong", 3000); + console.log(shared.CheckValidDisplay(client, "Ratstail91", "bot-spam", true)); break; } }); diff --git a/Shared/utility.js b/Shared/utility.js index 529a3cb..f6e2f0e 100644 --- a/Shared/utility.js +++ b/Shared/utility.js @@ -44,34 +44,74 @@ exports.SplitArray = function(arr, chunkSize) { return groups; } -/* // See if the bot should display its message -function checkValidDisplay(member, channelID, checkRole) { - if (client.user.username == "Kamala, Obsidian Vice President" && channelID === process.env.GROUP_A_BOT_ID) { - if (checkRole) { if (member.roles.has(process.env.GROUP_A_ROLE)) return true; } else true; - } - else if (client.user.username == "Captain Montgomery" && channelID === process.env.GROUP_B_BOT_ID) { - if (checkRole) { if (member.roles.has(process.env.GROUP_B_ROLE)) return true; } else true; - } - else if (client.user.username == "Dairo, High Prophet of The Hand" && channelID === process.env.GROUP_C_BOT_ID) { - if (checkRole) { if (member.roles.has(process.env.GROUP_C_ROLE)) return true; } else true; - } - else if (client.user.username == "Ghost 5.0.1") { - // JSON - const rooms = require('../TextAdv/rooms.json'); - var roomExists = false; - - // Loops for all rooms - rooms.rooms.forEach(element => { - if (channelID === rooms[element].channel) roomExists = true; - }); - - if (!roomExists) { - if (channelID === process.env.TEST_CHANNEL_ID) return true; - } else return true; - +//client - discord.js client +//member - discord.js member OR username +//channel - discord.js channel OR channel name +//checkRole - check the member's role or not +exports.CheckValidDisplay = function(client, member, channel, checkRole) { + //handle member strings + if (typeof(member) === "string") { + //get the member + //NOTE: I think the bot needs to run inside a single server only, otherwise I don't know what will happen here due to the [0] part + member = client.guilds.map(guild => guild.members.filter(mbr => mbr.user.username === member))[0].first(); } - return false; + //handle channel strings + if (typeof(channel) === "string") { + channel = client.channels.find(item => item.name === channel); + } + + switch(client.user.username) { + //NOTE: some copy/paste here that could be fixed + case process.env.GROUP_A_LEADER_NAME: + if (checkRole) { + return channel.id == process.env.GROUP_A_CHANNEL_ID && member.roles.has(process.env.GROUP_A_ROLE); + } else { + return channel.id == process.env.GROUP_A_CHANNEL_ID; + } + + case process.env.GROUP_B_LEADER_NAME: + if (checkRole) { + return channel.id == process.env.GROUP_B_CHANNEL_ID && member.roles.has(process.env.GROUP_B_ROLE); + } else { + return channel.id == process.env.GROUP_B_CHANNEL_ID; + } + + case process.env.GROUP_C_LEADER_NAME: + if (checkRole) { + return channel.id == process.env.GROUP_C_CHANNEL_ID && member.roles.has(process.env.GROUP_C_ROLE); + } else { + return channel.id == process.env.GROUP_C_CHANNEL_ID; + } + + case process.env.GHOST_NAME: { + // JSON + let rooms = require('../TextAdv/rooms.json'); //TODO: should this be here? + let roomExists = false; + + // Loops for all rooms + rooms.rooms.forEach(room => { + if (channel.id === rooms[room].channel) { + roomExists = true; + } + }); + + //if the given room exists + if (roomExists) { + return true; + } + + //DEBUGGING: test channel + if (channel.id == process.env.TEST_CHANNEL_ID) { + return true; + } + + //otherwise + return false; + } + default: + //default value + return false; + } } -*/ \ No newline at end of file