mirror of
https://github.com/Ratstail91/SANCTUM.git
synced 2025-11-29 02:24:27 +11:00
Uploaded bots for the first time
This commit is contained in:
185
Graze/graze.js
Normal file
185
Graze/graze.js
Normal file
@@ -0,0 +1,185 @@
|
||||
// .env Variables
|
||||
require('dotenv').config({path: '../.env'});
|
||||
|
||||
// Node Modules
|
||||
const Discord = require('discord.js');
|
||||
const client = new Discord.Client();
|
||||
const cron = require('node-cron');
|
||||
|
||||
// Bot Modules (stores http requests & random functions respectively)
|
||||
const dataRequest = require('../modules/dataRequest');
|
||||
const calcRandom = require('../modules/calcRandom');
|
||||
const channelProcessor = require('../modules/channelProcessor');
|
||||
|
||||
// State Machine (Uncomment if needed)
|
||||
/*
|
||||
var BotEnumState = {
|
||||
WAITING: 0,
|
||||
ACTIVE: 1
|
||||
}
|
||||
var botState = BotEnumState.ACTIVE;
|
||||
*/
|
||||
|
||||
// The ready event is vital, it means that your bot will only start reacting to information
|
||||
// from Discord _after_ ready is emitted
|
||||
client.on('ready', async () => {
|
||||
// Generates invite link
|
||||
try {
|
||||
let link = await client.generateInvite(["ADMINISTRATOR"]);
|
||||
console.log("Invite Link: " + link);
|
||||
} catch(e) {
|
||||
console.log(e.stack);
|
||||
}
|
||||
|
||||
// You can set status to 'online', 'invisible', 'away', or 'dnd' (do not disturb)
|
||||
client.user.setStatus('online');
|
||||
// Sets your "Playing"
|
||||
client.user.setActivity('!upgrade | Nanotech Upgrades.');
|
||||
console.log(`Connected! \
|
||||
\nLogged in as: ${client.user.username} - (${client.user.id})`);
|
||||
});
|
||||
|
||||
// Error handler
|
||||
client.on('error', console.error);
|
||||
|
||||
// Create an event listener for messages
|
||||
client.on('message', async message => {
|
||||
// Ignores ALL bot messages
|
||||
if (message.author.bot) return;
|
||||
// Message has to be a bot channel (should be edited later)
|
||||
if (!channelProcessor.isBotChannel(message.channel.id)) return;
|
||||
// Has to be (prefix)command
|
||||
if (message.content.indexOf(process.env.PREFIX) !== 0) return;
|
||||
|
||||
// "This is the best way to define args. Trust me."
|
||||
// - Some tutorial dude on the internet
|
||||
const args = message.content.slice(process.env.PREFIX.length).trim().split(/ +/g);
|
||||
const command = args.shift().toLowerCase();
|
||||
|
||||
//handle the command
|
||||
switch(command) {
|
||||
case "upgrade":
|
||||
if (!args[0]) {
|
||||
//shows upgrade menu
|
||||
var intro = `${message.author} Hey buddy! Here's what we can upgrade ASAP!`;
|
||||
var newMessage = "STR - <:cannister:462046687058198530> **1**\n```Permanently upgrades your Strength by 1, so you can hit them Ravagers harder.```\n"
|
||||
newMessage += "SPD - <:cannister:462046687058198530> **1**\n```Permanently upgrades your Speed by 1, so you can get hit less in battle.```\n"
|
||||
newMessage += "STAM - <:cannister:462046687058198530> **1**\n```Permanently upgrades your Max Stamina by 1, so you can hit more Ravagers.```\n"
|
||||
newMessage += "HP - <:cannister:462046687058198530> **1**\n```Permanently upgrades your Max HP by 10, so you can can take those beatings like a champ.```"
|
||||
//sendMessage(message.channel.id, newMessage);
|
||||
|
||||
// Grabs all parameters from server
|
||||
var attacker = String(dataRequest.loadServerData("userStats",message.author.id));
|
||||
var attackerStatPoints = parseFloat(attacker.split(",")[10]); // Cannisters
|
||||
const keepersOfTheCityColor = client.guilds.get(process.env.SANCTUM_ID).roles.find(role => role.name === "Keepers of the City").color;
|
||||
const embed = new Discord.RichEmbed()
|
||||
.setAuthor("Graze", client.user.avatarURL)
|
||||
.setColor(keepersOfTheCityColor)
|
||||
.setTitle("Nanotech Upgrades")
|
||||
.setDescription(newMessage)
|
||||
.setFooter(`${message.member.displayName}, you have ${attackerStatPoints} cannisters! Use !upgrade [OPTION] to upgrade that stat!`)
|
||||
|
||||
message.channel.send(intro, embed);
|
||||
} else {
|
||||
console.log(args[0]);
|
||||
//Upgrades stats
|
||||
var statToUpgrade = String(args[0]);
|
||||
var numberOfPointsToUpgrade = 1;
|
||||
var canUpgrade = 0;
|
||||
var suffix = "point.";
|
||||
//var statToUpgrade = String(args.split(" ")[0]);
|
||||
//var numberOfPointsToUpgrade = parseFloat(args.split(" ")[1]);
|
||||
switch (statToUpgrade.toUpperCase()) {
|
||||
case "STRENGTH":
|
||||
statToUpgrade = "STR";
|
||||
break;
|
||||
case "HEALTH":
|
||||
statToUpgrade = "HP";
|
||||
break;
|
||||
case "STAMINA":
|
||||
statToUpgrade = "STAM";
|
||||
break;
|
||||
case "SPEED":
|
||||
statToUpgrade = "SPD";
|
||||
break;
|
||||
}
|
||||
|
||||
switch (statToUpgrade.toUpperCase()) {
|
||||
case "STR":
|
||||
numberOfPointsToUpgrade = 1;
|
||||
canUpgrade = 1;
|
||||
suffix = "point.";
|
||||
break;
|
||||
case "HP":
|
||||
numberOfPointsToUpgrade = 10;
|
||||
canUpgrade = 1;
|
||||
suffix = "points.";
|
||||
break;
|
||||
case "SPD":
|
||||
numberOfPointsToUpgrade = 1;
|
||||
canUpgrade = 1;
|
||||
suffix = "point.";
|
||||
break;
|
||||
case "STAM":
|
||||
numberOfPointsToUpgrade = 1;
|
||||
canUpgrade = 1;
|
||||
suffix = "point.";
|
||||
break;
|
||||
}
|
||||
if (canUpgrade == 0) {
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Believe me, I wish I could upgrade things like that.");
|
||||
return;
|
||||
}
|
||||
|
||||
var upgradeResponse = dataRequest.sendServerData("upgradeStats", statToUpgrade, message.author.id);
|
||||
if (String(upgradeResponse) == "notEnoughPoints") {
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Hey now, you don't have that many cannisters.");
|
||||
return;
|
||||
}
|
||||
if (String(upgradeResponse) == "failure") {
|
||||
sendMessage(message.channel.id, ":x: <@" + message.author.id + "> Sorry, no can do right now. Come back later though, ok?");
|
||||
return;
|
||||
}
|
||||
if (String(upgradeResponse) == "success") {
|
||||
var skillName = "";
|
||||
switch (statToUpgrade.toUpperCase()) {
|
||||
case "STR":
|
||||
skillName = "strength";
|
||||
break;
|
||||
case "HP":
|
||||
skillName = "health";
|
||||
break;
|
||||
case "SPD":
|
||||
skillName = "speed";
|
||||
break;
|
||||
case "STAM":
|
||||
skillName = "stamina";
|
||||
break;
|
||||
}
|
||||
sendMessage(message.channel.id, "<@" + message.author.id + "> Sweet! I used your Nanotech Cannister to upgrade your **" + skillName + "** by " + numberOfPointsToUpgrade + " " + suffix);
|
||||
}
|
||||
}
|
||||
break;
|
||||
};
|
||||
});
|
||||
|
||||
// Send message handler
|
||||
function sendMessage(userID, channelID, message) {
|
||||
// Handle optional first argument (so much for default arugments in node)
|
||||
if (message === undefined) {
|
||||
message = channelID;
|
||||
channelID = userID;
|
||||
userID = null;
|
||||
}
|
||||
|
||||
// Utility trick (@userID with an optional argument)
|
||||
if (userID != null) {
|
||||
message = "<@" + userID + "> " + message;
|
||||
}
|
||||
|
||||
// Sends message (needs client var, therefore I think external script won't work)
|
||||
client.channels.get(channelID).send(message);
|
||||
}
|
||||
|
||||
// Log our bot in (change the token by looking into the .env file)
|
||||
client.login(process.env.GRAZE_TOKEN);
|
||||
Reference in New Issue
Block a user