From cd19546ec8f0a92de31ce1d91a37bc85aeeaf01b Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Sat, 3 Nov 2018 17:44:21 +1100 Subject: [PATCH] Did a bunch of refactoring --- ADAM/adam.js | 14 ++-- ADAM/core.js | 48 +++++++++++- ADAM_CptMon/adam-cptmon.js | 9 +-- ADAM_Dairo/adam-dairo.js | 9 +-- ADAM_Kamala/adam-kamala.js | 9 +-- .../{librarian.js => bot-librarian.js} | 7 +- BOT_Librarian/package.json | 8 +- BOT_Mori/{mori.js => bot-mori.js} | 11 --- BOT_Mori/package.json | 8 +- SERVER_City/package.json | 8 +- SERVER_City/{city.js => server-city.js} | 11 ++- Shared/utility.js | 75 +------------------ 12 files changed, 82 insertions(+), 135 deletions(-) rename BOT_Librarian/{librarian.js => bot-librarian.js} (96%) rename BOT_Mori/{mori.js => bot-mori.js} (96%) rename SERVER_City/{city.js => server-city.js} (97%) diff --git a/ADAM/adam.js b/ADAM/adam.js index d2e8823..4e92507 100644 --- a/ADAM/adam.js +++ b/ADAM/adam.js @@ -24,15 +24,12 @@ dialog = function(baseDialog) { key += arg; } - let result = baseDialog(key, ...data); - - if (result === "") { - return dialog("noResult", key); - } - return result; + return baseDialog(key, ...data); } }(dialog); +//TODO: noResult needs a better dialog message for each faction leader + //handle errors client.on('error', console.error); @@ -136,10 +133,13 @@ function processBasicCommands(client, message) { case "ping": if (shared.IsAdmin(client, message.author)) { shared.SendPublicMessage(client, message.author, message.channel, "PONG!"); + shared.OnServerData("serverPing", (response) => { + shared.SendPublicMessage(client, message.author, message.channel, response); + }); } return true; - case "wallet": //DEBUGGING TODO: add a ping command for the server + case "wallet"://TODO: remove this from the server and ADAM shared.OnServerData("wallet", (amount) => { shared.SendPublicMessage(client, message.author, message.channel, "Wallet: " + amount); }, message.author.id); diff --git a/ADAM/core.js b/ADAM/core.js index 4fc1f6b..545a570 100644 --- a/ADAM/core.js +++ b/ADAM/core.js @@ -4,6 +4,52 @@ let dataRequest = require("../Shared/data_request"); let discord = require('discord.js'); let shared = require("../Shared/shared"); +//TODO: convert all doc comments to JSDoc format + +//CheckValidDisplay +//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) { //See if the bot should display its message + //handle member strings + if (typeof(member) === "string") { + //get the member + let user = client.users.find(item => item.username === member || item.id === member); + let guild = client.guilds.get(process.env.SANCTUM_ID); + member = guild.members.get(user.id); + } + + //handle channel strings + if (typeof(channel) === "string") { + channel = client.channels.find(item => item.name === channel || item.id === 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; + } + } +} + //ProcessGameplayCommands //client - discord.js client //message - discord.js message @@ -238,4 +284,4 @@ exports.HandleLevelUp = function(client, member, channel, dialog, next) { } shared.LevelUp(client, member, handleResponse); -} \ No newline at end of file +} diff --git a/ADAM_CptMon/adam-cptmon.js b/ADAM_CptMon/adam-cptmon.js index 6cc040c..974aa0c 100644 --- a/ADAM_CptMon/adam-cptmon.js +++ b/ADAM_CptMon/adam-cptmon.js @@ -23,12 +23,7 @@ dialog = function(baseDialog) { key += arg; } - let result = baseDialog(key, ...data); - - if (result === "") { - return dialog("noResult", key); - } - return result; + return baseDialog(key, ...data); } }(dialog); @@ -83,7 +78,7 @@ client.on('message', async message => { } //check if can continue (used primarily by the faction leaders) - if (!shared.CheckValidDisplay(client, message.member, message.channel)) { + if (!core.CheckValidDisplay(client, message.member, message.channel)) { return; } diff --git a/ADAM_Dairo/adam-dairo.js b/ADAM_Dairo/adam-dairo.js index f0c8b6e..d5c9544 100644 --- a/ADAM_Dairo/adam-dairo.js +++ b/ADAM_Dairo/adam-dairo.js @@ -23,12 +23,7 @@ dialog = function(baseDialog) { key += arg; } - let result = baseDialog(key, ...data); - - if (result === "") { - return dialog("noResult", key); - } - return result; + return baseDialog(key, ...data); } }(dialog); @@ -83,7 +78,7 @@ client.on('message', async message => { } //check if can continue (used primarily by the faction leaders) - if (!shared.CheckValidDisplay(client, message.member, message.channel)) { + if (!core.CheckValidDisplay(client, message.member, message.channel)) { return; } diff --git a/ADAM_Kamala/adam-kamala.js b/ADAM_Kamala/adam-kamala.js index f636d47..e13e6fd 100644 --- a/ADAM_Kamala/adam-kamala.js +++ b/ADAM_Kamala/adam-kamala.js @@ -23,12 +23,7 @@ dialog = function(baseDialog) { key += arg; } - let result = baseDialog(key, ...data); - - if (result === "") { - return dialog("noResult", key); - } - return result; + return baseDialog(key, ...data); } }(dialog); @@ -83,7 +78,7 @@ client.on('message', async message => { } //check if can continue (used primarily by the faction leaders) - if (!shared.CheckValidDisplay(client, message.member, message.channel)) { + if (!core.CheckValidDisplay(client, message.member, message.channel)) { return; } diff --git a/BOT_Librarian/librarian.js b/BOT_Librarian/bot-librarian.js similarity index 96% rename from BOT_Librarian/librarian.js rename to BOT_Librarian/bot-librarian.js index eff5d42..5e32020 100644 --- a/BOT_Librarian/librarian.js +++ b/BOT_Librarian/bot-librarian.js @@ -24,12 +24,7 @@ dialog = function(baseDialog) { key += arg; } - let result = baseDialog(key, ...data); - - if (result === "") { - return baseDialog("noResult"); - } - return result; + return baseDialog(key, ...data); } }(dialog); diff --git a/BOT_Librarian/package.json b/BOT_Librarian/package.json index 5153fb9..d70ce0e 100644 --- a/BOT_Librarian/package.json +++ b/BOT_Librarian/package.json @@ -4,10 +4,10 @@ "description": "", "main": "server.js", "scripts": { - "start": "forever -o forever.log -e error.log start librarian.js", - "restart": "forever -o forever.log -e error.log restart librarian.js", - "stop": "forever stop librarian.js", - "node": "node librarian.js" + "start": "forever -o forever.log -e error.log start bot-librarian.js", + "restart": "forever -o forever.log -e error.log restart bot-librarian.js", + "stop": "forever stop bot-librarian.js", + "node": "node bot-librarian.js" }, "author": "", "license": "ISC", diff --git a/BOT_Mori/mori.js b/BOT_Mori/bot-mori.js similarity index 96% rename from BOT_Mori/mori.js rename to BOT_Mori/bot-mori.js index 905c38c..15d0c7a 100644 --- a/BOT_Mori/mori.js +++ b/BOT_Mori/bot-mori.js @@ -13,17 +13,6 @@ let shared = require("../Shared/shared"); //dialog system let dialog = shared.GenerateDialogFunction(require("./dialog.json")); -//dialog decorator -dialog = function(baseDialog) { - return function(key, ...data) { - let result = baseDialog(key, ...data); - if (result === "") { - return baseDialog("noResult"); - } - return result; - } -}(dialog); - //global settings const itemCount = 3; const treatments = [ diff --git a/BOT_Mori/package.json b/BOT_Mori/package.json index df92d35..47503b8 100644 --- a/BOT_Mori/package.json +++ b/BOT_Mori/package.json @@ -4,10 +4,10 @@ "description": "", "main": "server.js", "scripts": { - "start": "forever -o forever.log -e error.log start mori.js", - "restart": "forever -o forever.log -e error.log restart mori.js", - "stop": "forever stop mori.js", - "node": "node mori.js" + "start": "forever -o forever.log -e error.log start bot-mori.js", + "restart": "forever -o forever.log -e error.log restart bot-mori.js", + "stop": "forever stop bot-mori.js", + "node": "node bot-mori.js" }, "author": "", "license": "ISC", diff --git a/SERVER_City/package.json b/SERVER_City/package.json index 9db356b..8db7d5e 100644 --- a/SERVER_City/package.json +++ b/SERVER_City/package.json @@ -4,10 +4,10 @@ "description": "", "main": "city.js", "scripts": { - "start": "forever -o forever.log -e error.log start city.js", - "restart": "forever -o forever.log -e error.log restart city.js", - "stop": "forever stop city.js", - "node": "node city.js" + "start": "forever -o forever.log -e error.log start server-city.js", + "restart": "forever -o forever.log -e error.log restart server-city.js", + "stop": "forever stop server-city.js", + "node": "node server-city.js" }, "author": "", "license": "ISC", diff --git a/SERVER_City/city.js b/SERVER_City/server-city.js similarity index 97% rename from SERVER_City/city.js rename to SERVER_City/server-city.js index e9da7d0..7debb0b 100644 --- a/SERVER_City/city.js +++ b/SERVER_City/server-city.js @@ -42,6 +42,7 @@ io.on("connection", async (socket) => { console.log(socket.client.username + " disconnected"); }); + socket.on("serverPing", handleServerPing); socket.on("updateStamina", handleUpdateStamina); socket.on("conversion", handleConversion); socket.on("checkin", handleCheckin); @@ -59,6 +60,11 @@ io.on("connection", async (socket) => { server.listen(process.env.SERVER_PORT); console.log("listening on port " + process.env.SERVER_PORT); +//respond to a ping with a pong +async function handleServerPing({ data }, fn) { + return fn("SERVER PONG!"); +} + //update the playerbase's stamina on command async function handleUpdateStamina({ userID, data }) { let query = "UPDATE users SET stamina = stamina + 1 WHERE stamina < maxStamina;"; @@ -116,7 +122,7 @@ async function handleConversion({ data }, fn) { } //handle checkin, and add 1 XP -async function handleCheckin({ data }, fn) { +async function handleCheckin({ data }, fn) { //TODO: You already checked in with me today, you should check in again after X hours //handle checkins (grant crystal bonus) //arguments to fn: ["available", time since last checkin], randomAmount @@ -124,7 +130,6 @@ async function handleCheckin({ data }, fn) { let randomAmount = calcRandom.Random(4, 9); let query = "SELECT TIME_TO_SEC(TIMEDIFF(NOW(), lastCheckin)) FROM users WHERE userID = ? LIMIT 1;"; - return dbConnection.query(query, [data[0]], (err, result) => { if (err) throw err; @@ -150,7 +155,7 @@ async function handleWallet({ data }, fn) { dbConnection.query(query, [data[0]], (err, result) => { if (err) throw err; dbLog(data[0], "wallet query", "result: " + result[0].wallet); - fn(result[0].wallet); + return fn(result[0].wallet); }); } diff --git a/Shared/utility.js b/Shared/utility.js index 310df81..01ac37f 100644 --- a/Shared/utility.js +++ b/Shared/utility.js @@ -35,7 +35,7 @@ exports.GenerateDialogFunction = function(dialogJson) { } if (typeof(result) === "undefined") { - return ""; + return dialogJson["noResult"]; } let counter = 0; @@ -97,76 +97,3 @@ exports.SplitArray = function(arr, chunkSize) { } return groups; } - -//CheckValidDisplay -//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) { //See if the bot should display its message - //handle member strings - if (typeof(member) === "string") { - //get the member - let user = client.users.find(item => item.username === member || item.id === member); - let guild = client.guilds.get(process.env.SANCTUM_ID); - member = guild.members.get(user.id); - } - - //handle channel strings - if (typeof(channel) === "string") { - channel = client.channels.find(item => item.name === channel || item.id === 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: always show messages if not a faction leader - return true; - } -}