From 34dff69af8f1afb53dfea64c365c406da3bc3c6b Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sat, 20 Oct 2018 19:07:02 +1100 Subject: [PATCH] Completed faction code --- Shared/factions.js | 141 ++++++++++++++++++++++++--------------------- Shared/testbot.js | 6 +- Shared/utility.js | 5 +- 3 files changed, 81 insertions(+), 71 deletions(-) diff --git a/Shared/factions.js b/Shared/factions.js index e7a5730..09ccbaa 100644 --- a/Shared/factions.js +++ b/Shared/factions.js @@ -1,24 +1,47 @@ //initialize the exports exports = module.exports = {}; +dataRequest = require("../modules/dataRequest"); +messaging = require("./messaging"); + +//CheckFaction +//factionRole - the value to check +exports.CheckFaction = function(factionRole) { + switch(factionRole) { + case process.env.GROUP_A_ROLE: + case process.env.GROUP_B_ROLE: + case process.env.GROUP_C_ROLE: + return true; + } + return false; +} + //GetFactionName -//factionID - the discord role ID of the faction -exports.GetFactionName = function(factionID) { - switch(factionID) { +//factionRole - the discord role ID of the faction +exports.GetFactionName = function(factionRole) { + //factionRole must be a faction role + if (!exports.CheckFaction(factionRole)) { + throw "factionRole is not a faction!"; + } + + switch(factionRole) { case process.env.GROUP_A_ROLE: return process.env.GROUP_A_NAME; case process.env.GROUP_B_ROLE: return process.env.GROUP_B_NAME; case process.env.GROUP_C_ROLE: return process.env.GROUP_C_NAME; - default: - return "Unknown"; } } //GetFactionChannel //user - discord.js user exports.GetFactionChannel = function(user) { + //factionRole must be a faction role + if (!exports.CheckFaction(factionRole)) { + throw "factionRole is not a faction!"; + } + if (user.roles.has(process.env.GROUP_A_ROLE)) { return process.env.GROUP_A_BOT_ID; } @@ -28,73 +51,57 @@ exports.GetFactionChannel = function(user) { if (user.roles.has(process.env.GROUP_C_ROLE)) { return process.env.GROUP_C_BOT_ID; } - return null; } -/* -// Change Faction -exports.ChangeFaction = async function(factionID, channelID, userID, member, botChannelID) { - if (member.roles.has(factionID)) { - if (factionID === process.env.GROUP_A_ROLE) - sendMessage(channelID, dialog.getDialog("orderAlreadyJoined", userID)); - else if (factionID === process.env.GROUP_B_ROLE) - sendMessage(channelID, dialog.getDialog("anarchyAlreadyJoined", userID)); - else if (factionID === process.env.GROUP_C_ROLE) - sendMessage(channelID, dialog.getDialog("religionAlreadyJoined", userID)); - } else { - if (dataRequest.loadServerData("hasConvertedToday", userID) == 1) { - sendMessage(channelID, dialog.getDialog("alreadyConvertedToday", userID)); - } else { - // Creates new user - var response = String(dataRequest.sendServerData("newUser", "New user.", userID)); - - //var response = "createdUser" - // Obsidian Tech. - if (factionID === process.env.GROUP_A_ROLE) { - await member.removeRole(process.env.GROUP_B_ROLE); - await member.removeRole(process.env.GROUP_C_ROLE); - await member.addRole(process.env.GROUP_A_ROLE); +//ChangeFaction +//client - discord.js client +//factionRole - a faction role +exports.ChangeFaction = async function(client, factionRole, channel, member) { + //factionRole must be a faction role + if (!exports.CheckFaction(factionRole)) { + throw "factionRole is not a faction!"; + } - dataRequest.sendServerData("conversion", "Converted to The Order.", userID); - - if (response == "createdUser") { - client.users.get(userID).send(dialog.getDialog("newUserPM", userID, getFactionName(factionID))); - sendMessage(botChannelID, dialog.getDialog("newUserWelcome", userID, `<#${getFactionName(factionID)}>`)); - } else { - sendMessage(channelID, dialog.getDialog("orderJoin", userID)); - } + //handle channel strings + if (typeof(channel) === "string") { + channel = client.channels.find(item => item.name === channel); + } - // Genesis Command - } else if (factionID === process.env.GROUP_B_ROLE) { - await member.removeRole(process.env.GROUP_C_ROLE); - await member.removeRole(process.env.GROUP_A_ROLE); - await member.addRole(process.env.GROUP_B_ROLE); + //handle member strings + if (typeof(member) === "string") { + //get the member + let user = client.users.find(item => item.username === member); + let guild = client.guilds.get(process.env.SANCTUM_ID); + member = guild.members.get(user.id); + } - dataRequest.sendServerData("conversion", "Converted to the Anarchy.", userID); - - if (response == "createdUser") { - client.users.get(userID).send(dialog.getDialog("newUserPM", userID, getFactionName(factionID))); - sendMessage(botChannelID, dialog.getDialog("newUserWelcome", userID, `<#${getFactionName(factionID)}>`)); - } else { - sendMessage(channelID, dialog.getDialog("anarchyJoin", userID)); - } - - // The Hand - } else if (factionID === process.env.GROUP_C_ROLE) { - await member.removeRole(process.env.GROUP_A_ROLE); - await member.removeRole(process.env.GROUP_B_ROLE); - await member.addRole(process.env.GROUP_C_ROLE); + if (member.roles.has(factionRole)) { + //can't change to this faction + return messaging.SendPublicMessage(client, member.user, channel, "You have already joined that faction."); + } - dataRequest.sendServerData("conversion", "Converted to The Religion.", userID); - - if (response == "createdUser") { - client.users.get(userID).send(dialog.getDialog("newUserPM", userID, getFactionName(factionID))); - sendMessage(botChannelID, dialog.getDialog("newUserWelcome", userID, `<#${getFactionName(factionID)}>`)); - } else { - sendMessage(channelID, dialog.getDialog("religionJoin", userID)); - } - } - } + if (dataRequest.loadServerData("hasConvertedToday", member.user.id) == 1) { + return messaging.SendPublicMessage(client, member.user, channel, "You have already converted today."); + } + + //Creates a new user + var newUserResponse = String(dataRequest.sendServerData("newUser", "New user.", member.user.id)); + + //joins the new faction + await member.removeRole(process.env.GROUP_A_ROLE); + await member.removeRole(process.env.GROUP_B_ROLE); + await member.removeRole(process.env.GROUP_C_ROLE); + await member.addRole(factionRole); + + //send the server the info (for logging) + dataRequest.sendServerData("conversion", "Converted to " + exports.GetFactionName(factionRole), member.user.id); + + //send the public welcoming message + messaging.SendPublicMessage(client, member.user, channel, "Welcome to " + exports.GetFactionName(factionRole)); + + //send the private welcoming message + if (newUserResponse === "createdUser") { + //TODO: more dialog from adam & other faction leaders + messaging.SendPrivateMessage(client, member.user, "Welcome to SANCTUM."); } } -*/ \ No newline at end of file diff --git a/Shared/testbot.js b/Shared/testbot.js index 3c4af10..d5d2b18 100644 --- a/Shared/testbot.js +++ b/Shared/testbot.js @@ -33,10 +33,12 @@ client.on("message", function(msg) { switch(command) { //used for debugging case "ping": - console.log(shared.CheckValidDisplay(client, "Ratstail91", "bot-spam", true)); + shared.ChangeFaction(client, process.env.GROUP_B_ROLE, msg.channel, msg.member); break; } }); //actually log in -client.login(process.env.DEVELOPER_TOKEN); \ No newline at end of file +client.login(process.env.DEVELOPER_TOKEN); + +//TODO: change usernames to tags throughout the shared library \ No newline at end of file diff --git a/Shared/utility.js b/Shared/utility.js index 0b9f145..8771cfe 100644 --- a/Shared/utility.js +++ b/Shared/utility.js @@ -53,8 +53,9 @@ exports.CheckValidDisplay = function(client, member, channel, checkRole) { //See //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(); + let user = client.users.find(item => item.username === member); + let guild = client.guilds.get(process.env.SANCTUM_ID); + member = guild.members.get(user.id); } //handle channel strings