mirror of
https://github.com/Ratstail91/SANCTUM.git
synced 2025-11-29 02:24:27 +11:00
Finished progression
This commit is contained in:
10
.envdev
10
.envdev
@@ -101,5 +101,15 @@ DAIRO_HAND_TOKEN=""
|
|||||||
GHOST_TOKEN=""
|
GHOST_TOKEN=""
|
||||||
DEVELOPER_TOKEN=""
|
DEVELOPER_TOKEN=""
|
||||||
|
|
||||||
|
# Channel access roles (must match roles in your server)
|
||||||
|
# Replace them with your own on a sandbox server!
|
||||||
|
RANK_1="LVL 1+"
|
||||||
|
RANK_2="LVL 15+"
|
||||||
|
RANK_3="LVL 30+"
|
||||||
|
|
||||||
|
RANK_1_THRESHOLD=1
|
||||||
|
RANK_2_THRESHOLD=15
|
||||||
|
RANK_3_THRESHOLD=30
|
||||||
|
|
||||||
# Server Pass Key
|
# Server Pass Key
|
||||||
SERVER_PASS_KEY=""
|
SERVER_PASS_KEY=""
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
CREATE DATABASE discordbot;
|
||||||
|
|
||||||
CREATE TABLE discordbot.userLog (
|
CREATE TABLE discordbot.userLog (
|
||||||
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
discordUserID bigint,
|
discordUserID bigint,
|
||||||
|
|||||||
@@ -56,6 +56,8 @@ exports.GetFactionChannel = function(user) {
|
|||||||
//ChangeFaction
|
//ChangeFaction
|
||||||
//client - discord.js client
|
//client - discord.js client
|
||||||
//factionRole - a faction role
|
//factionRole - a faction role
|
||||||
|
//channel - discord.js channel OR channel name
|
||||||
|
//member - discord.js member
|
||||||
exports.ChangeFaction = async function(client, factionRole, channel, member) {
|
exports.ChangeFaction = async function(client, factionRole, channel, member) {
|
||||||
//factionRole must be a faction role
|
//factionRole must be a faction role
|
||||||
if (!exports.CheckFaction(factionRole)) {
|
if (!exports.CheckFaction(factionRole)) {
|
||||||
|
|||||||
@@ -1,92 +1,105 @@
|
|||||||
exports = module.exports = {};
|
exports = module.exports = {};
|
||||||
|
|
||||||
/*
|
const dataRequest = require('../modules/dataRequest');
|
||||||
function addXP(userID, amount) {
|
|
||||||
var response = String(dataRequest.sendServerData("addXP", amount, userID));
|
//AddXP
|
||||||
|
//client - discord.js client
|
||||||
|
//user - discord.js user OR username
|
||||||
|
//amount - amount of XP to add
|
||||||
|
exports.AddXP = function(client, user, amount) {
|
||||||
|
//handle user strings
|
||||||
|
if (typeof(user) === "string") {
|
||||||
|
user = client.users.find(item => item.username === user);
|
||||||
|
}
|
||||||
|
|
||||||
|
dataRequest.sendServerData("addXP", amount, user.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getLevelUp(userID) {
|
//LevelUp
|
||||||
const server = client.guilds.get(process.env.SANCTUM_ID);
|
//client - discord.js client
|
||||||
const member = server.members.get(userID);
|
//member - member to get the level up
|
||||||
if (client.user.username == "Kamala, Obsidian Vice President" && !member.roles.has(process.env.GROUP_A_ROLE)) return;
|
exports.LevelUp = function(client, member) { //NOTE: why is this called separately?
|
||||||
if (client.user.username == "Captain Montgomery" && !member.roles.has(process.env.GROUP_B_ROLE)) return;
|
//handle member strings
|
||||||
if (client.user.username == "Dairo, High Prophet of The Hand" && !member.roles.has(process.env.GROUP_C_ROLE)) return;
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
//const user = server.members.get(userID);
|
//if the bot tries to level someone without the correct role, return
|
||||||
var response = String(dataRequest.sendServerData("getLevelUp", 0, userID));
|
if (client.user.username == process.env.GROUP_A_LEADER_NAME && !member.roles.has(process.env.GROUP_A_ROLE)) return;
|
||||||
var responseMessage = String(response.split(",")[0]);
|
if (client.user.username == process.env.GROUP_B_LEADER_NAME && !member.roles.has(process.env.GROUP_B_ROLE)) return;
|
||||||
var lvl = Math.floor(parseFloat(response.split(",")[1]));
|
if (client.user.username == process.env.GROUP_C_LEADER_NAME && !member.roles.has(process.env.GROUP_C_ROLE)) return;
|
||||||
var statPoints = parseFloat(response.split(",")[2]);
|
|
||||||
|
|
||||||
var attacker = String(dataRequest.loadServerData("userStats", userID));
|
let response = String(dataRequest.sendServerData("getLevelUp", 0, member.user.id)); //TODO: please change the order of sendServerData's arguments!
|
||||||
var chests = parseFloat(attacker.split(",")[11]);
|
let responseArray = response.split(",");
|
||||||
|
|
||||||
console.log(response.split(","));
|
//DEBUGGING
|
||||||
|
// console.log("response: " + response);
|
||||||
|
|
||||||
majorLevelUp(lvl, server, userID);
|
let responseMessage = responseArray[0];
|
||||||
|
let level = Math.floor(parseFloat(responseArray[1]));
|
||||||
|
let statPoints = parseFloat(responseArray[2]);
|
||||||
|
|
||||||
|
// let userStats = String(dataRequest.loadServerData("userStats", member.user.id));
|
||||||
|
|
||||||
|
exports.RankUp(client, member, level);
|
||||||
|
|
||||||
if (responseMessage == "levelup") {
|
if (responseMessage == "levelup") {
|
||||||
//if (true) {
|
//TODO: proper dialog
|
||||||
console.log("Chests: " + chests)
|
|
||||||
checkinLevelUp(userID, lvl, statPoints, chests);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function majorLevelUp(level, server, userID) {
|
//GetLevelUp
|
||||||
const user = server.members.get(userID);
|
//client - discord.js client
|
||||||
|
//member - member to get the upgrade
|
||||||
|
//level - level of the member
|
||||||
|
exports.RankUp = async function(client, member, level) {
|
||||||
|
//get the guild
|
||||||
|
let guild = client.guilds.get(process.env.SANCTUM_ID);
|
||||||
|
|
||||||
var newChannel = "";
|
//handle member strings
|
||||||
|
if (typeof(member) === "string") {
|
||||||
|
//get the member
|
||||||
|
let user = client.users.find(item => item.username === member);
|
||||||
|
member = guild.members.get(user.id);
|
||||||
|
}
|
||||||
|
|
||||||
var levels = [
|
//Snapping the level variable
|
||||||
// Role, Level
|
if (level < process.env.RANK_2_THRESHOLD) {
|
||||||
[server.roles.find(role => role.name === "LVL 1+"), 1, process.env.CRYSTAL_SHORES_CHANNEL_ID],
|
level = process.env.RANK_1_THRESHOLD;
|
||||||
[server.roles.find(role => role.name === "LVL 15+"), 15, process.env.SEA_OF_FOG_CHANNEL_ID],
|
} else
|
||||||
[server.roles.find(role => role.name === "LVL 30+"), 30, process.env.DEADLANDS_CHANNEL_ID]
|
if (level < process.env.RANK_3_THRESHOLD) {
|
||||||
|
level = process.env.RANK_2_THRESHOLD;
|
||||||
|
} else {
|
||||||
|
level = process.env.RANK_3_THRESHOLD;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Get the new rank
|
||||||
|
let levelRole = guild.roles.find(role => role.name === `LVL ${level}+`); //I don't like constant strings
|
||||||
|
|
||||||
|
//set the new level
|
||||||
|
if (!levelRole) {
|
||||||
|
throw "levelRole not found";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (member.roles.has(levelRole.id)) { //member has this role already
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//the ranks as roles
|
||||||
|
let ranks = [
|
||||||
|
guild.roles.find(role => role.name === process.env.RANK_1),
|
||||||
|
guild.roles.find(role => role.name === process.env.RANK_2),
|
||||||
|
guild.roles.find(role => role.name === process.env.RANK_3)
|
||||||
]
|
]
|
||||||
|
|
||||||
// Shrinking level
|
//remove all existing roles
|
||||||
if (level < 30) {
|
for(let i = 0; i < ranks.length; i++) {
|
||||||
level = 15;
|
member.removeRole(ranks[i].id);
|
||||||
} else if (level < 15) {
|
|
||||||
level = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rank Level Up
|
//this will enable the new rooms
|
||||||
var levelRole = server.roles.find(role => role.name === `LVL ${level}+`);
|
member.addRole(levelRole);
|
||||||
if (levelRole) {
|
|
||||||
var memberRole = user.roles.has(levelRole.id);
|
|
||||||
if (!memberRole) {
|
|
||||||
user.addRole(levelRole).catch(console.error);
|
|
||||||
for (let i = 0; i < levels.length; i++) {
|
|
||||||
const element = levels[i];
|
|
||||||
if (element[1] !== level) {
|
|
||||||
await user.removeRole(element[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (user !== undefined) {// && newChannel !== undefined) {
|
|
||||||
var levelMarks = [1, 15, 30];
|
|
||||||
|
|
||||||
for (let i = 0; i < levelMarks.length; i++) {
|
|
||||||
const element = levelMarks[i];
|
|
||||||
// Gets channel of array
|
|
||||||
newChannel = client.channels.get(levels[levels.findIndex(level => level[1] === element)][2]);
|
|
||||||
if (level === element)
|
|
||||||
newChannel.send(dialog.getDialog("level" + level, user, newChannel));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkinLevelUp(userID, lvl, statPoints, chests) {
|
|
||||||
const guild = client.guilds.get(process.env.SANCTUM_ID);
|
|
||||||
if (lvl === 30) {
|
|
||||||
//Post level cap level up!
|
|
||||||
sendMessage(userID, getFactionChannel(guild.members.get(userID)), dialog.getDialog("levelUpLevelCap", userID, lvl, chests));
|
|
||||||
} else {
|
|
||||||
//regular level up
|
|
||||||
sendMessage(userID, getFactionChannel(guild.members.get(userID)), dialog.getDialog("levelUp", userID, lvl, statPoints));
|
|
||||||
}
|
|
||||||
//sendMessage(testChannelID, dialog.getDialog("levelUp", userID, lvl, statPoints));
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
@@ -32,8 +32,20 @@ client.on("message", function(msg) {
|
|||||||
//handle command
|
//handle command
|
||||||
switch(command) {
|
switch(command) {
|
||||||
//used for debugging
|
//used for debugging
|
||||||
case "ping":
|
case "create":
|
||||||
shared.ChangeFaction(client, process.env.GROUP_B_ROLE, msg.channel, msg.member);
|
shared.ChangeFaction(client, process.env.GROUP_A_ROLE, "bot-spam", msg.member);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "xp":
|
||||||
|
shared.AddXP(client, msg.author, parseInt(args));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "levelup":
|
||||||
|
shared.LevelUp(client, msg.member);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "rankup":
|
||||||
|
shared.RankUp(client, msg.member, parseInt(args));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -42,3 +54,4 @@ client.on("message", function(msg) {
|
|||||||
client.login(process.env.DEVELOPER_TOKEN);
|
client.login(process.env.DEVELOPER_TOKEN);
|
||||||
|
|
||||||
//TODO: change usernames to tags throughout the shared library
|
//TODO: change usernames to tags throughout the shared library
|
||||||
|
//FIXME: The server currently queries chest count, which is not in the database.
|
||||||
Reference in New Issue
Block a user