Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var testing = true;
- //tools
- const fs = require('fs');
- const $ = jQuery = require('jQuery');
- require('./node_modules/jquery/src/jquery.csv.js');
- //data
- const path = require('path');
- const appDir = path.dirname(require.main.filename);
- var prefix = "";
- const userData = require('./userData.json');
- const months = ["January","February","March","April","May","June","July","August","September","October","November","December"];
- //init
- const auth = require('./auth.json');
- const Discord = require('discord.js');
- const bot = new Discord.Client();
- const RCBot = require("rocketchat-bot").Bot;
- const rcBot = new RCBot({
- server: "chat.tubs.moe",
- username: "lofebotrc",
- password: auth.rocketPassword
- });
- bot.login(auth.discordToken);
- rcBot.start();
- bot.on('ready', () => {
- bot.user.setPresence("online");
- if (testing){
- prefix = "T!";
- console.log('LofeBot awake for testing. Auto responses, auto roles, and magic portal disabled.');
- }else{
- prefix = "L!";
- console.log('LofeBot awake.');
- bot.user.setActivity('L!help', {type: "listening"});
- const kiyoteruServer = bot.channels.get('389764852434075658');
- const stdefoServer = bot.channels.get('389764732564799488');
- const transmascServer = bot.channels.get('389769978355777546');
- const latvianServer = bot.channels.get('389770056881668097');
- const ahServer = bot.channels.get('435761201486495754');
- kiyoteruServer.send("LofeBot is awake! :blush:");
- stdefoServer.send("LofeBot is awake! :blush:");
- transmascServer.send("LofeBot is awake! :blush:");
- latvianServer.send("LofeBot is awake! :blush:");
- ahServer.send("LofeBot is awake! :blush:");
- }
- });
- rcBot.on("ready", () => {
- rcBot.setSend((meta, message) => {
- rcBot.wsAPI.sendChatMessage(meta.rid, message);
- });
- if (testing){
- console.log("LofeBot RC awake for testing. Magic portal disabled.");
- }else{
- console.log("LofeBot RC awake.");
- rcBot.wsAPI.sendChatMessage("drLaLPChQDRmEgRex", "LofeBot is awake! :blush:");
- }
- });
- bot.on('message', message => {
- var user;
- var botData;
- var noProf = true;
- for (var i = 0; i < userData.users.length; i++){
- if (userData.users[i].id == message.author.id){
- user = userData.users[i];
- noProf = false;
- }else if (userData.users[i].id == bot.user.id){
- botData = userData.users[i];
- }
- }
- if (noProf){
- user = {
- "id": message.author.id,
- "profile": "",
- "points": 0,
- "lastMsg": message.content,
- "spam": 1,
- "gachaDaily": false,
- "kiyoriiInv": 50,
- "defoStarsInv": 50,
- "twelveInv": 50,
- "spouse": 0,
- "weddingDate": 0,
- "pendingMarriage": []
- };
- userData.users.push(user);
- }
- // Earning Gacha Points and spam filter, enabled only for server text channels, disabled for bots
- if (message.channel.type == "text" && !message.author.bot){
- var ppm = 5; //points per message
- var spamFilter = 10; //maximum repeated messages before points are reset
- var date = new Date();
- if (date.getUTCDate() == 20 && message.guild.id == 264995832032395264){ //10ppm on utaism day in St. Defoko's
- ppm = 10;
- }
- if (date.getUTCDate() >= 7 && date.getUTCDate() <= 9 && message.guild.id == 357552578705227778){ // 10ppm during 7ate9 in Kiyoteru server
- ppm = 10;
- }
- if (date.getUTCDate() == 12 && message.guild.id == 385927196058845195){ //10ppm on the 12th in TraVox
- ppm = 10;
- }
- if (message.content == user.lastMsg){
- user.spam++;
- }else{
- user.spam = 1;
- }
- if (user.spam >= spamFilter){
- // use internal blacklist
- userData.blacklist.push({
- "id": user.id,
- "points": user.points
- });
- //message.member.addRole(message.guild.roles.find("name","Muggle"));
- user.points = 0;
- message.author.send("Your gacha points have been reset to 0. You can no longer use the portal.");
- message.channel.send("Your gacha points have been reset to 0. You can no longer use the portal.");
- }else if (!message.author.bot){
- user.points += ppm;
- }
- user.lastMsg = message.content;
- }
- // Listening for all messages that begin with 'L!' or 'T!' if testing
- if (message.content.substring(0, 2) == prefix) {
- var args = message.content.substring(2).split(' ');
- var cmd = args[0];
- switch(cmd) {
- case 'help':
- if (args[1] == undefined){
- if (testing){
- message.channel.send("LofeBot Development Version 2.2.0 - Prefix is `T!`\n"
- + "Guaranteed to Always Be Broken™\n"
- + "`help` `portal` `time` `ogout`\n"
- + "`role` `profile` `hug`\n"
- + "`points` `gacha`\n"
- + "`testosterone` `estrogen` `zoop` `bicth` `recipe`\n"
- + "`voice` `disconnect`\n"
- + "\n"
- + "Use `T!help (command)` for more information.");
- }else if (message.channel.type == "text"){
- message.channel.send("LofeBot Stable Version 2.2.0 - Prefix is `L!`\n"
- + "`help` `portal` `time`\n"
- + "`role` `profile` `hug`\n"
- + "`points` `gacha`\n"
- + "`testosterone` `estrogen` `zoop` `bicth` `recipe`\n"
- + "`voice`\n"
- + "\n"
- + "Use `L!help (command)` for more information.");
- }else{
- message.channel.send("LofeBot Stable Version 2.2.0 - Prefix is `L!`\n"
- + "`help` `time`\n"
- + "`profile` `hug`\n"
- + "`points`\n"
- + "`testosterone` `estrogen` `zoop` `bicth` `recipe`\n"
- + "\n"
- + "Use `L!help (command)` for more information.");
- }
- }else{
- switch(args[1]){
- case 'help':
- message.channel.send("Displays all LofeBot commands or details about each command");
- break;
- case 'portal':
- if (message.channel.type == "text"){
- if (message.guild.id == 421815715629105155) { //VSio
- message.channel.send("Information about the TUBS portal");
- }else{
- message.channel.send("Information about the Magic Portal channel");
- }
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "help` to view all commands.");
- }
- break;
- case 'time':
- message.channel.send("Check the current time and date (UTC)");
- break;
- case 'ogout':
- message.channel.send("Admin-only command.");
- break;
- case 'role':
- if (message.channel.type == "text"){
- message.channel.send("Add or remove roles from yourself. Use this command by itself to see all roles available on this server.");
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "help` to view all commands.");
- }
- break;
- case 'profile':
- message.channel.send("Set a message about yourself with `" + prefix + "profile set [your message here]` and view people's profiles with `" + prefix + "profile [@mention]`");
- break;
- case 'hug':
- message.channel.send("Give someone a hug with `" + prefix + "hug @mention`");
- break;
- case 'points':
- message.channel.send("Check how many gacha points you've earned using `" + prefix + "points`, or transfer points to other users (with 20% tax) using `" + prefix + "points @mention [number]`.\n"
- + "You earn 5 points per message, and additional points on special days.");
- break;
- case 'gacha':
- if (message.channel.type == "text"){
- if (message.guild.id == 264995832032395264) { //St Defoko's server ID
- message.channel.send("St. Defoko's Idol Stars (DefoStars): a WIP gacha game featuring UTAUs.\n\n"
- + "__Gacha tiers__\n"
- + "NHN: 80% Normal, 20% High Normal. 100 gacha points per card.\n"
- + "HNR: 80% High Normal, 20% Rare. 200 gacha points per card.\n"
- + "RSR: 80% Rare, 20% Super Rare. 300 gacha points per card.\n"
- + "SRUR: 80% Super Rare, 20% Ultra Rare. 400 gacha points per card.\n\n"
- + "__Usage__\n"
- + "`" + prefix + "gacha pull [1-10 pulls] [tier]` - Pull new cards (ex. `" + prefix + "gacha 5 HNR`) Pull 10 cards to get 1 free bonus card, guaranteed higher rarity.\n"
- + "`" + prefix + "gacha view [optional:number]` - View all cards or a specific card in your inventory\n"
- + "`" + prefix + "gacha sell [number/rarity]` - Sell a specific card or all cards of a specific rarity in your inventory. Unidolized cards are 70% of the original price and idolized cards are 100% of the price of one unidolized card.\n"
- + "`" + prefix + "gacha idolize [primary number] [secondary number]` - Combine 2 cards into 1 idolized card, with new artwork and plus half the stats of the secondary card.\n"
- + "`" + prefix + "gacha expand` - Purchase 10 inventory expansion slots for 100 gacha points.");
- }else if (message.guild.id == 357552578705227778) { //HKIM server ID
- message.channel.send("Kiyorii: a WIP gacha game with KQ/KW/Yorii characters.\n\n"
- + "__Gacha tiers__\n"
- + "NHN: 80% Normal, 20% High Normal. 100 gacha points per card.\n"
- + "HNR: 80% High Normal, 20% Rare. 200 gacha points per card.\n"
- + "RSR: 80% Rare, 20% Super Rare. 300 gacha points per card.\n"
- + "SRUR: 80% Super Rare, 20% Ultra Rare. 400 gacha points per card.\n\n"
- + "__Usage__\n"
- + "`" + prefix + "gacha pull [1-10 pulls] [tier]` - Pull new cards (ex. `" + prefix + "gacha 5 HNR`) Pull 10 cards to get 1 free bonus card, guaranteed higher rarity.\n"
- + "`" + prefix + "gacha view [optional:number]` - View all cards or a specific card in your inventory\n"
- + "`" + prefix + "gacha sell [number/rarity]` - Sell a specific card or all cards of a specific rarity in your inventory. Unidolized cards are 70% of the original price and idolized cards are 100% of the price of one unidolized card.\n"
- + "`" + prefix + "gacha idolize [primary number] [secondary number]` - Combine 2 cards into 1 idolized card, with new artwork and plus half the stats of the secondary card.\n"
- + "`" + prefix + "gacha expand` - Purchase 10 inventory expansion slots for 100 gacha points.");
- }else if (message.guild.id == 385927196058845195){//Transmasc Vocalsynth
- message.channel.send("TWELVE: a WIP gacha game with members of TWELVE.\n\n"
- + "__Gacha tiers__\n"
- + "NHN: 80% Normal, 20% High Normal. 100 gacha points per card.\n"
- + "HNR: 80% High Normal, 20% Rare. 200 gacha points per card.\n"
- + "RSR: 80% Rare, 20% Super Rare. 300 gacha points per card.\n"
- + "SRUR: 80% Super Rare, 20% Ultra Rare. 400 gacha points per card.\n\n"
- + "__Usage__\n"
- + "`" + prefix + "gacha pull [1-10 pulls] [tier]` - Pull new cards (ex. `" + prefix + "gacha 5 HNR`) Pull 10 cards to get 1 free bonus card, guaranteed higher rarity.\n"
- + "`" + prefix + "gacha view [optional:number]` - View all cards or a specific card in your inventory\n"
- + "`" + prefix + "gacha sell [number/rarity]` - Sell a specific card or all cards of a specific rarity in your inventory. Unidolized cards are 70% of the original price and idolized cards are 100% of the price of one unidolized card.\n"
- + "`" + prefix + "gacha idolize [primary number] [secondary number]` - Combine 2 cards into 1 idolized card, with new artwork and plus half the stats of the secondary card.\n"
- + "`" + prefix + "gacha expand` - Purchase 10 inventory expansion slots for 100 gacha points.");
- }else{ //All other channels
- message.channel.send("Use gacha points to buy a random emoji. 100 points per emoji. Buy 10 at once for 1 free bonus emoji.");
- }
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "help` to view all commands.");
- }
- break;
- case 'testosterone':
- message.channel.send("just for fun");
- break;
- case 'estrogen':
- message.channel.send("just for fun");
- break;
- case 'zoop':
- message.channel.send("just for fun");
- break;
- case 'bicth':
- message.channel.send("just for fun");
- break;
- case 'recipe':
- message.channel.send("Get a random bread recipe.");
- break;
- case 'voice':
- if (message.channel.type == "text"){
- message.channel.send("Speaks a random sentence in your current voice channel.");
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "help` to view all commands.");
- }
- break;
- case 'disconnect':
- message.channel.send("Admin-only command.");
- break;
- default:
- message.channel.send("Invalid command. That command does not exist.");
- }
- }
- break;
- case 'listroles':
- var bleh = "";
- message.guild.roles.forEach(aoeu);
- function aoeu(value, key, map) {
- bleh += key + ": " + value.name + "\n";
- }
- message.author.send(bleh);
- break;
- case 'sendfiles': // Reference material for sending files to people
- fs.writeFileSync(appDir + "/hello.txt", "Hello world!", "utf8");
- fs.writeFileSync(appDir + "/hello.ini", "Hello world!", "utf8");
- message.channel.send("Here are your files!", {"files": [new Discord.Attachment(appDir + "/hello.txt"),new Discord.Attachment(appDir + "/hello.ini")]});
- break;
- case 'dlfile': // Reference material for downloading files from messages
- if (message.author.id == 132494042008256512){
- var https = require('https'); //Move to top of code later
- if (message.attachments.size > 0){
- var file = fs.createWriteStream(appDir + "/DL/" + message.attachments.array()[0].filename);
- var request = https.get(message.attachments.array()[0].url, function(response) {
- response.pipe(file);
- });
- message.channel.send("File has been downloaded.");
- }else{
- message.channel.send("You must attach a file to use this command.");
- }
- }else{
- message.channel.send("Please don't fill up KLAD's computer with files.");
- }
- break;
- case 'portal':
- if (message.channel.type == "text"){
- if (message.guild.id == 421815715629105155){
- message.channel.send("The TUBS Portal channels allow you to communicate through LofeBot with corresponding channels in The UTOOTERS Black Supermarket. Feel free to mute these channels.\n\n"
- + "Please respect each other, warn for innapropriate or risky content, and do not spam.");
- }else{
- message.channel.send("The magic portal channel on this server allows you to communicate through LofeBot with people from other servers. Feel free to mute the channel for any reason.\n\n"
- + "In total there are 6 servers connected together:\n"
- + "SD - St. Defoko\'s School of UTAU (Learn about UTAU: <https://discord.gg/rSzZD9P>)\n"
- + "TV - Transmasc VocalSynth (A FTM/AFAB NB hangout: <https://discord.gg/bEAb7Cg>)\n"
- + "HK - Hiyama Kiyoteru & Ice Mountain (Sensei\'s fanclub: <https://discord.gg/FBcta2Y>)\n"
- + "AHS - Overseas AHS Fans (AHSloids and Voiceroids galore: <https://discord.gg/Ekhzn3a>)\n"
- + "TUBS - The UTOOTERS™ Black Supermarket (http://tubs.moe)\n"
- + "LH - The Latvian House (private)\n"
- + "\n"
- + "**__Rules__**\n"
- + "- Follow the rules of the server you're in.\n"
- + "- Respect each other.\n"
- + "- Keep things generally SFW. Any NSFW that comes up should be warned for and with <angle brackets> around links, or discussed in private messages.\n"
- + "- Don\'t spam.\n"
- + "You'll become a muggle if you don't follow these rules.");
- }
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "help` to view all commands.");
- }
- break;
- case 'time':
- var date = new Date();
- var hr = date.getUTCHours();
- var morn = "AM";
- var minz = date.getUTCMinutes();
- if (date.getUTCHours() > 11) {morn = "PM";}
- if (date.getUTCHours() > 12) {hr -= 12;}
- if (date.getUTCMinutes() < 10) {minz = "0" + minz;}
- message.channel.send("The current time is " + hr + ":" + minz + " " + morn + " on " + months[date.getUTCMonth()] + " " + date.getUTCDate() + ", " + date.getUTCFullYear() + " (UTC)");
- break;
- case 'ogout':
- if (message.author.id == 132494042008256512){ //klad only
- if (!testing){
- const kiyoteruServer = bot.channels.get('389764852434075658');
- const stdefoServer = bot.channels.get('389764732564799488');
- const transmascServer = bot.channels.get('389769978355777546');
- const latvianServer = bot.channels.get('389770056881668097');
- const ahServer = bot.channels.get('435761201486495754');
- kiyoteruServer.send("LofeBot is asleep! :sleeping:");
- stdefoServer.send("LofeBot is asleep! :sleeping:");
- transmascServer.send("LofeBot is asleep! :sleeping:");
- latvianServer.send("LofeBot is asleep! :sleeping:");
- ahServer.send("LofeBot is asleep! :sleeping:")
- rcBot.wsAPI.sendChatMessage("drLaLPChQDRmEgRex", "LofeBot is asleep! :sleeping:");
- }else{
- message.channel.send("Shutting down test bot.");
- }
- bot.user.setPresence("invisible");
- bot.destroy();
- }else{
- message.channel.send("This command is admin only.");
- }
- break;
- case 'role':
- if (message.channel.type == "text"){
- if (message.guild.id == 357552578705227778){ //Kiyoteru server
- if (args[1] == undefined){ //L!roles
- message.channel.send("Use `" + prefix + "role [rolename]` to add/remove a role from yourself.\n"
- + "`vocalop` - Producer\n"
- + "`vocalouser` - Vocaloid user\n"
- + "`artist`\n"
- + "`writer`\n"
- + "`fan - Includes additional control over Rythm bot`\n"
- + "Pronouns\n"
- + "`he` - he/him/his\n"
- + "`she` - she/her\n"
- + "`they` - they/them/their\n"
- + "Notify KLAD to add new pronouns.");
- }else if (args[1] == "vocalop"){
- if (message.member.roles.has("357552997812928518")){
- message.member.removeRole("357552997812928518");
- message.channel.send("Removed role: Vocalo-P");
- }else{
- message.member.addRole("357552997812928518");
- message.channel.send("Added role: Vocalo-P");
- }
- }else if (args[1] == "vocalouser"){
- if (message.member.roles.has("357552947548127266")){
- message.member.removeRole("357552947548127266");
- message.channel.send("Removed role: Vocaloid User");
- }else{
- message.member.addRole("357552947548127266");
- message.channel.send("Added role: Vocaloid User");
- }
- }else if (args[1] == "artist"){
- if (message.member.roles.has("357552894238785536")){
- message.member.removeRole("357552894238785536");
- message.channel.send("Removed role: Artist");
- }else{
- message.member.addRole("357552894238785536");
- message.channel.send("Added role: Artist");
- }
- }else if (args[1] == "writer"){
- if (message.member.roles.has("357553139957760001")){
- message.member.removeRole("357553139957760001");
- message.channel.send("Removed role: Writer");
- }else{
- message.member.addRole("357553139957760001");
- message.channel.send("Added role: Writer");
- }
- }else if (args[1] == "fan"){
- if (message.member.roles.has("357559521519861760")){
- message.member.removeRole("357559521519861760");
- message.channel.send("Removed role: Fan");
- }else{
- message.member.addRole("357559521519861760");
- message.channel.send("Added role: Fan");
- }
- }else if (args[1] == "he"){
- if (message.member.roles.has("423662566431129614")){
- message.member.removeRole("423662566431129614");
- message.channel.send("Removed role: he/him");
- }else{
- message.member.addRole("423662566431129614");
- message.channel.send("Added role: he/him");
- }
- }else if (args[1] == "she"){
- if (message.member.roles.has("423662605458997248")){
- message.member.removeRole("423662605458997248");
- message.channel.send("Removed role: she/her");
- }else{
- message.member.addRole("423662605458997248");
- message.channel.send("Added role: she/her");
- }
- }else if (args[1] == "they"){
- if (message.member.roles.has("423662642473992193")){
- message.member.removeRole("423662642473992193");
- message.channel.send("Removed role: they/them");
- }else{
- message.member.addRole("423662642473992193");
- message.channel.send("Added role: they/them");
- }
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "role` to view all available roles.");
- }
- }
- else if (message.guild.id == 385927196058845195){ //Transmasc Vocalsynth
- if (args[1] == undefined){
- message.channel.send("Use `" + prefix + "role [category]` to view all roles available in that category.\n"
- + "`pronoun` - Required to access private channels\n"
- + "`vocalsynth`\n"
- + "`color` - Name color\n"
- + "To get the 18+ role, ping a mod.");
- }else if (args[1] == "pronoun"){
- if (args[2] == undefined){
- message.channel.send("Use `" + prefix + "role pronoun [rolename]` to add/remove a role from yourself.\n"
- + "`he` - he/him/his\n"
- + "`she` - she/her\n"
- + "`they` - them/them/their\n"
- + "`ey` - ey/em/eir\n"
- + "`ce` - ce/cir\n"
- + "`le` - le/lir\n"
- + "`questioning`\n"
- + "Notify KLAD to add new pronouns.");
- }else if (args[2] == "he"){
- if (message.member.roles.has("385928310875488256")){
- message.member.removeRole("385928310875488256");
- message.channel.send("Removed role: he/him");
- }else{
- message.member.addRole("385928310875488256");
- message.channel.send("Added role: he/him");
- }
- }else if (args[2] == "she"){
- if (message.member.roles.has("386517365778677771")){
- message.member.removeRole("386517365778677771");
- message.channel.send("Removed role: she/her");
- }else{
- message.member.addRole("386517365778677771");
- message.channel.send("Added role: she/her");
- }
- }else if (args[2] == "they"){
- if (message.member.roles.has("385928340067844096")){
- message.member.removeRole("385928340067844096");
- message.channel.send("Removed role: they/them");
- }else{
- message.member.addRole("385928340067844096");
- message.channel.send("Added role: they/them");
- }
- }else if (args[2] == "ey"){
- if (message.member.roles.has("385944521277702145")){
- message.member.removeRole("385944521277702145");
- message.channel.send("Removed role: ey/em");
- }else{
- message.member.addRole("385944521277702145");
- message.channel.send("Added role: ey/em");
- }
- }else if (args[2] == "ce"){
- if (message.member.roles.has("392887479402889236")){
- message.member.removeRole("392887479402889236");
- message.channel.send("Removed role: ce/cir");
- }else{
- message.member.addRole("392887479402889236");
- message.channel.send("Added role: ce/cir");
- }
- }else if (args[2] == "le") {
- if (message.member.roles.has("430881048075829268")){
- message.member.removeRole("430881048075829268");
- message.channel.send("Removed role: le/lir");
- }else{
- message.member.addRole("430881048075829268");
- message.channel.send("Added role: le/lir");
- }
- }else if (args[2] == "questioning"){
- if (message.member.roles.has("385958742606479362")){
- message.member.removeRole("385958742606479362");
- message.channel.send("Removed role: questioning");
- }else{
- message.member.addRole("385958742606479362");
- message.channel.send("Added role: questioning");
- }
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "role pronoun` to view all available pronoun roles.\n"
- + "Notify KLAD to add new pronouns.");
- }
- }else if (args[1] == "vocalsynth"){
- if (args[2] == undefined){
- message.channel.send("Use `" + prefix + "role vocalsynth [rolename]` to add/remove a role from yourself.\n"
- + "`vocaloid`\n"
- + "`utau`\n"
- + "`chipspeech`\n"
- + "`alterego`\n"
- + "`cevio`\n"
- + "Notify KLAD to add new vocalsynths.");
- }else if (args[2] == "vocaloid"){
- if (message.member.roles.has("385943555891265546")){
- message.member.removeRole("385943555891265546");
- message.channel.send("Removed role: Vocaloid");
- }else{
- message.member.addRole("385943555891265546");
- message.channel.send("Added role: Vocaloid");
- }
- }else if (args[2] == "utau"){
- if (message.member.roles.has("385943581711400960")){
- message.member.removeRole("385943581711400960");
- message.channel.send("Removed role: UTAU");
- }else{
- message.member.addRole("385943581711400960");
- message.channel.send("Added role: UTAU");
- }
- }else if (args[2] == "chipspeech"){
- if (message.member.roles.has("385943601516904468")){
- message.member.removeRole("385943601516904468");
- message.channel.send("Removed role: Chipspeech");
- }else{
- message.member.addRole("385943601516904468");
- message.channel.send("Added role: Chipspeech");
- }
- }else if (args[2] == "alterego"){
- if (message.member.roles.has("385943628519833601")){
- message.member.removeRole("385943628519833601");
- message.channel.send("Removed role: AlterEgo");
- }else{
- message.member.addRole("385943628519833601");
- message.channel.send("Added role: AlterEgo");
- }
- }else if (args[2] == "cevio"){
- if (message.member.roles.has("385943660069650443")){
- message.member.removeRole("385943660069650443");
- message.channel.send("Removed role: CeVIO");
- }else{
- message.member.addRole("385943660069650443");
- message.channel.send("Added role: CeVIO");
- }
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "role vocalsynth` to view all available vocalsynth roles.\n"
- + "Notify KLAD to add new vocalsynths.");
- }
- }else if (args[1] == "color"){
- if (args[2] == undefined){
- message.channel.send("Use `" + prefix + "role color [rolename]` to add/remove a role from yourself.\n"
- + "Notify KLAD to add new colors.", new Discord.Attachment("https://i.imgur.com/leEo2md.png"));
- }else if (args[2] == "light"){
- if (args[3] == undefined){
- message.channel.send("Invalid command. Use `" + prefix + "role color` to view all available color roles.\n"
- + "Notify KLAD to add new colors.");
- }else if (args[3] == "red"){
- if (message.member.roles.has("385950183168671766")){
- message.member.removeRole("385950183168671766");
- message.channel.send("Removed role: light red");
- }else{
- message.member.addRole("385950183168671766");
- message.channel.send("Added role: light red");
- }
- }else if (args[3] == "orange"){
- if (message.member.roles.has("385950050590916619")){
- message.member.removeRole("385950050590916619");
- message.channel.send("Removed role: light orange");
- }else{
- message.member.addRole("385950050590916619");
- message.channel.send("Added role: light orange");
- }
- }else if (args[3] == "yellow"){
- if (message.member.roles.has("385946325054652417")){
- message.member.removeRole("385946325054652417");
- message.channel.send("Removed role: light yellow");
- }else{
- message.member.addRole("385946325054652417");
- message.channel.send("Added role: light yellow");
- }
- }else if (args[3] == "pink"){
- if (message.member.roles.has("385946135581294592")){
- message.member.removeRole("385946135581294592");
- message.channel.send("Removed role: light pink");
- }else{
- message.member.addRole("385946135581294592");
- message.channel.send("Added role: light pink");
- }
- }else if (args[3] == "purple"){
- if (message.member.roles.has("385946100466712598")){
- message.member.removeRole("385946100466712598");
- message.channel.send("Removed role: light purple");
- }else{
- message.member.addRole("385946100466712598");
- message.channel.send("Added role: light purple");
- }
- }else if (args[3] == "blue"){
- if (message.member.roles.has("385946010121142281")){
- message.member.removeRole("385946010121142281");
- message.channel.send("Removed role: light blue");
- }else{
- message.member.addRole("385946010121142281");
- message.channel.send("Added role: light blue");
- }
- }else if (args[3] == "green"){
- if (message.member.roles.has("385945930098016268")){
- message.member.removeRole("385945930098016268");
- message.channel.send("Removed role: light green");
- }else{
- message.member.addRole("385945930098016268");
- message.channel.send("Added role: light green");
- }
- }else if (args[3] == "teal"){
- if (message.member.roles.has("385943468528107521")){
- message.member.removeRole("385943468528107521");
- message.channel.send("Removed role: light teal");
- }else{
- message.member.addRole("385943468528107521");
- message.channel.send("Added role: light teal");
- }
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "role color` to view all available color roles.\n"
- + "Notify KLAD to add new colors.");
- }
- }else if (args[2] == "dark"){
- if (args[3] == undefined){
- message.channel.send("Invalid command. Use `" + prefix + "role color` to view all available color roles.\n"
- + "Notify KLAD to add new colors.");
- }else if (args[3] == "red"){
- if (message.member.roles.has("385950244992712714")){
- message.member.removeRole("385950244992712714");
- message.channel.send("Removed role: dark red");
- }else{
- message.member.addRole("385950244992712714");
- message.channel.send("Added role: dark red");
- }
- }else if (args[3] == "orange"){
- if (message.member.roles.has("385950106689732608")){
- message.member.removeRole("385950106689732608");
- message.channel.send("Removed role: dark orange");
- }else{
- message.member.addRole("385950106689732608");
- message.channel.send("Added role: orange");
- }
- }else if (args[3] == "yellow"){
- if (message.member.roles.has("385946380125863958")){
- message.member.removeRole("385946380125863958");
- message.channel.send("Removed role: dark yellow");
- }else{
- message.member.addRole("385946380125863958");
- message.channel.send("Added role: dark yellow");
- }
- }else if (args[3] == "pink"){
- if (message.member.roles.has("385946257538940928")){
- message.member.removeRole("385946257538940928");
- message.channel.send("Removed role: dark pink");
- }else{
- message.member.addRole("385946257538940928");
- message.channel.send("Added role: dark pink");
- }
- }else if (args[3] == "purple"){
- if (message.member.roles.has("385946137552617492")){
- message.member.removeRole("385946137552617492");
- message.channel.send("Removed role: dark purple");
- }else{
- message.member.addRole("385946137552617492");
- message.channel.send("Added role: dark purple");
- }
- }else if (args[3] == "blue"){
- if (message.member.roles.has("385946057151873036")){
- message.member.removeRole("385946057151873036");
- message.channel.send("Removed role: dark blue");
- }else{
- message.member.addRole("385946057151873036");
- message.channel.send("Added role: dark blue");
- }
- }else if (args[3] == "green"){
- if (message.member.roles.has("385945970497683456")){
- message.member.removeRole("385945970497683456");
- message.channel.send("Removed role: dark green");
- }else{
- message.member.addRole("385945970497683456");
- message.channel.send("Added role: dark green");
- }
- }else if (args[3] == "teal"){
- if (message.member.roles.has("385943730798198785")){
- message.member.removeRole("385943730798198785");
- message.channel.send("Removed role: dark teal");
- }else{
- message.member.addRole("385943730798198785");
- message.channel.send("Added role: dark teal");
- }
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "role color` to view all available color roles.\n"
- + "Notify KLAD to add new colors.");
- }
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "role color` to view all available color roles.\n"
- + "Notify KLAD to add new colors.");
- }
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "role` to view all role categories.");
- }
- }
- else if (message.guild.id == 264995832032395264){ //St. Defoko's
- if (args[1] == undefined){
- message.channel.send("Use `" + prefix + "role [category]` to view all roles available in that category.\n"
- + "`pronoun`\n"
- + "`exp` - UTAU experience\n"
- + "`os` - Operating system\n"
- + "`club`\n"
- + "To get the Developer role, ping a mod with the software you're making.\n"
- + "To get the Producer role, ping a mod with an original song you've released.");
- }
- else if (args[1] == "pronoun"){
- if (args[2] == undefined){
- message.channel.send("Use `" + prefix + "role pronoun [rolename]` to add/remove a role from yourself.\n"
- + "`he` - he/him/his\n"
- + "`she` - she/her\n"
- + "`they` - they/them/their\n"
- + "`ze` - ze/zyr/zym\n"
- + "`ce` - ce/cir\n"
- + "Notify KLAD to add new pronouns.");
- }else if (args[2] == "he"){
- if (message.member.roles.has("372645014741975041")){
- message.member.removeRole("372645014741975041");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: he/him");
- }else{
- message.member.addRole("372645014741975041");
- message.channel.send("Added role: he/him");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }else if (args[2] == "she"){
- if (message.member.roles.has("372645087081005056")){
- message.member.removeRole("372645087081005056");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: she/her");
- }else{
- message.member.addRole("372645087081005056");
- message.channel.send("Added role: she/her");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }else if (args[2] == "they"){
- if (message.member.roles.has("372645143192272896")){
- message.member.removeRole("372645143192272896");
- message.channel.send("Removed role: they/them");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- }else{
- message.member.addRole("372645143192272896");
- message.channel.send("Added role: they/them");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }else if (args[2] == "ze"){
- if (message.member.roles.has("395558157113622528")){
- message.member.removeRole("395558157113622528");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: ze/zyr");
- }else{
- message.member.addRole("395558157113622528");
- message.channel.send("Added role: ze/zyr");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }else if (args[2] == "ce"){
- if (message.member.roles.has("395558270158241804")){
- message.member.removeRole("395558270158241804");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: ce/cir");
- }else{
- message.member.addRole("395558270158241804");
- message.channel.send("Added role: ce/cir");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "role pronoun` to view all available pronoun roles.\n"
- + "Notify Kiyoteru to add new pronouns.");
- }
- }
- else if (args[1] == "exp"){
- if (args[2] == undefined){
- message.channel.send("Use `" + prefix + "role exp [rolename]` to add/remove a role from yourself.\n"
- + "`senpai` - Experienced UTAU user\n"
- + "`kouhai` - Newbie UTAU user");
- }else if (args[2] == "senpai"){
- if (message.member.roles.has("367769097481617410")){
- message.member.removeRole("367769097481617410");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Senpai");
- }else{
- message.member.addRole("367769097481617410");
- message.channel.send("Added role: Senpai");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }else if (args[2] == "kouhai"){
- if (message.member.roles.has("367769311848300544")){
- message.member.removeRole("367769311848300544");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Kouhai");
- }else{
- message.member.addRole("367769311848300544");
- message.channel.send("Added role: Kouhai");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "role exp` to view all available experience roles.");
- }
- }
- else if (args[1] == "os"){
- if (args[2] == undefined){
- message.channel.send("Use `" + prefix + "role os [rolename]` to add/remove a role from yourself.\n"
- + "`windows`\n"
- + "`mac` - Users of UTAU-Synth\n"
- + "`macwine` - Users of Windows UTAU in Wine\n"
- + "`linux`");
- }else if (args[2] == "windows"){
- if (message.member.roles.has("372642443075649536")){
- message.member.removeRole("372642443075649536");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Windows");
- }else{
- message.member.addRole("372642443075649536");
- message.channel.send("Added role: Windows");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }else if (args[2] == "mac"){
- if (message.member.roles.has("372642554979549184")){
- message.member.removeRole("372642554979549184");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Mac");
- }else{
- message.member.addRole("372642554979549184");
- message.channel.send("Added role: Mac");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }else if (args[2] == "macwine"){
- if (message.member.roles.has("372642511442935810")){
- message.member.removeRole("372642511442935810");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Mac + Wine");
- }else{
- message.member.addRole("372642511442935810");
- message.channel.send("Added role: Mac + Wine");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }else if (args[2] == "linux"){
- if (message.member.roles.has("372642615868260354")){
- message.member.removeRole("372642615868260354");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Linux");
- }else{
- message.member.addRole("372642615868260354");
- message.channel.send("Added role: Linux");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "role os` to view all available operating system roles.");
- }
- }
- else if (args[1] == "club"){
- if (args[2] == undefined){
- message.channel.send("Use `" + prefix + "role club [rolename]` to add/remove a role from yourself.\n"
- + "`gaming` - Playing and discussing video games (w/ voice channel)\n"
- + "`singing` - Karaoke nights and singing discussion (w/ voice channel)\n"
- + "`cooking` - Sharing photos and discussing recipes\n"
- + "`language` - Studying and practicing different languages (w/ voice channel)\n"
- + "`culture` - Sharing our cultures\n"
- + "`roleplay` - UTAU roleplay with a continuous plotline\n"
- + "`health` - Health and fitness club\n"
- + "`review` - Reviewing UTAU voicebanks\n"
- + "KYE Fanclub - Automatic admission upon mentioning his name\n"
- + "`ike` - Ike Kei Fanclub\n"
- + "`sora` - Matsuo Sora Fanclub\n"
- + "`shin` - Shinnosuke Hankyo Fanclub\n"
- + "`cats` - Cat lovers club\n"
- + "To form a new club, gather 7 interested members (incl. teacher or stuco) and notify Kiyoteru.");
- }
- else if (args[2] == "gaming"){
- if (message.member.roles.has("414966301279256578")){
- message.member.removeRole("414966301279256578");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Gamer");
- }else{
- message.member.addRole("414966301279256578");
- message.channel.send("Added role: Gamer");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }
- else if (args[2] == "singing"){
- if (message.member.roles.has("414730113263861761")){
- message.member.removeRole("414730113263861761");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Singer");
- }else{
- message.member.addRole("414730113263861761");
- message.member.addRole("371188092989734924"); //DJ role
- message.channel.send("Added role: Singer\nAdded role: DJ");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }
- else if (args[2] == "cooking"){
- if (message.member.roles.has("431057627762393088")){
- message.member.removeRole("431057627762393088");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Cook");
- }else{
- message.member.addRole("431057627762393088");
- message.channel.send("Added role: Cook");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }
- else if (args[2] == "language"){
- if (message.member.roles.has("433302253328269323")){
- message.member.removeRole("433302253328269323");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Polyglot");
- }else{
- message.member.addRole("433302253328269323");
- message.channel.send("Added role: Polyglot");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }
- else if (args[2] == "culture"){
- if (message.member.roles.has("433302302846353408")){
- message.member.removeRole("433302302846353408");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Culture club");
- }else{
- message.member.addRole("433302302846353408");
- message.channel.send("Added role: Culture club");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }
- else if (args[2] == "roleplay"){
- if (message.member.roles.has("433345214049157130")){
- message.member.removeRole("433345214049157130");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Rolplayer");
- }else{
- message.member.addRole("433345214049157130");
- message.channel.send("Added role: Roleplayer");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }
- else if (args[2] == "health"){
- if (message.member.roles.has("439808590610432021")){
- message.member.removeRole("439808590610432021");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Health nut");
- }else{
- message.member.addRole("439808590610432021");
- message.channel.send("Added role: Health nut");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }
- else if (args[2] == "review"){
- if (message.member.roles.has("439808543369986058")){
- message.member.removeRole("439808543369986058");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: VB reviewer");
- }else{
- message.member.addRole("439808543369986058");
- message.channel.send("Added role: VB reviewer");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }
- else if (args[2] == "ike"){
- if (message.member.roles.has("429786320035119105")){
- message.member.removeRole("429786320035119105");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Naki employee");
- }else{
- message.member.addRole("429786320035119105");
- message.channel.send("Added role: Naki employee");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }
- else if (args[2] == "sora"){
- if (message.member.roles.has("433589463063724042")){
- message.member.removeRole("433589463063724042");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Sora fan");
- }else{
- message.member.addRole("433589463063724042");
- message.channel.send("Added role: Sora fan");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }
- else if (args[2] == "shin"){
- if (message.member.roles.has("440533848770609164")){
- message.member.removeRole("440533848770609164");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Sora fan");
- }else{
- message.member.addRole("440533848770609164");
- message.channel.send("Added role: Sora fan");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }
- else if (args[2] == "cats"){
- if (message.member.roles.has("430888635752251392")){
- message.member.removeRole("430888635752251392");
- if (message.member.roles.size == 2){
- message.member.addRole("399813995109941248"); //Become visitor if no roles left
- }
- message.channel.send("Removed role: Cat lover");
- }else{
- message.member.addRole("430888635752251392");
- message.channel.send("Added role: Cat lover");
- if (message.member.roles.has("399813995109941248")){ //Auto remove visitor role
- message.member.removeRole("399813995109941248");
- }
- }
- }
- else{
- message.channel.send("Invalid command. Use `" + prefix + "role club` to view all available clubs.\n"
- + "To form a new club, gather 7 interested members (incl. teacher or stuco) and notify Kiyoteru.");
- }
- }
- else{
- message.channel.send("Invalid command. Use `" + prefix + "role` to view all role categories.");
- }
- }
- else{
- message.channel.send("This server does not have self-assignable roles.");
- }
- }
- else{
- message.channel.send("Invalid command. Use `" + prefix + "help` to view all commands.");
- }
- break;
- case 'profile':
- if (args[1] == undefined){ // L!profile
- if (user.profile == ""){
- message.channel.send("You have not set a profile.");
- }else{
- message.channel.send(user.profile + "\n\nPoints: " + user.points);
- }
- }
- /*
- else if (args[1].substring(0,3) == '<@&'){ // L!profile @role
- message.channel.send("Roles don't have profiles.");
- }
- else if (args[1].substring(0,3) == '<@!') { // L!profile @mention
- var mention = args[1].substring(3);
- mention = mention.substring(0,mention.length-1);
- if (mention == bot.user.id){
- message.channel.send("Part bread, part robot.\n"
- + "I have eaten " + botData.points + " gacha points.\n"
- + "Use `" + prefix + "help` to view all of my commands.", new Discord.Attachment(bot.user.displayAvatarURL.substring(0,bot.user.displayAvatarURL.length - 9)));
- }else if (message.member.guild.members.get(mention).user.bot){
- message.channel.send("Bots don't have profiles.");
- }else{
- var mentUser;
- var noData = true;
- for (var i = 0; i < userData.users.length; i++){
- if (userData.users[i].id == mention){
- mentUser = userData.users[i];
- noData = false;
- }
- }
- if (noData){
- message.channel.send("That user is not registered in LofeBot.");
- }
- else if (mentUser.profile == ""){
- message.channel.send("That user has not set a profile.\nPoints: " + mentUser.points);
- }
- else{
- message.channel.send(mentUser.profile + "\n\nPoints: " + mentUser.points);
- }
- }
- }
- else if(args[1].substring(0,2) == '<@'){ // L!profile @mention
- var mention = args[1].substring(2);
- mention = mention.substring(0,mention.length-1);
- if (mention == bot.user.id){
- message.channel.send("Part bread, part robot.\n"
- + "I have eaten " + botData.points + " gacha points.\n"
- + "Use `" + prefix + "help` to view all of my commands.", new Discord.Attachment(bot.user.displayAvatarURL.substring(0,bot.user.displayAvatarURL.length - 9)));
- }else if (message.member.guild.members.get(mention).user.bot){
- message.channel.send("Bots don't have profiles.");
- }else{
- var mentUser;
- var noData = true;
- for (var i = 0; i < userData.users.length; i++){
- if (userData.users[i].id == mention){
- mentUser = userData.users[i];
- noData = false;
- }
- }
- if (noData){
- message.channel.send("That user is not registered in LofeBot.");
- }
- else if (mentUser.profile == ""){
- message.channel.send("That user has not set a profile.\nPoints: " + mentUser.points);
- }
- else{
- message.channel.send(mentUser.profile + "\n\nPoints: " + mentUser.points);
- }
- }
- }
- */
- else if (args[1].substring(0,2) == "<@"){
- var mentID;
- var isRole;
- if (args[1].substring(2,3) == "&"){
- message.channel.send("Roles don't have profiles.");
- isRole = true;
- }
- else if (args[1].substring(2,3) == "!"){
- mentID = args[1].substring(3,args[1].length-1);
- isRole = false;
- }
- else{
- mentID = args[1].substring(2,args[1].length-1);
- isRole = false;
- }
- if (!isRole){
- var mentUser;
- var noData = true;
- for (var i = 0; i < userData.users.length; i++){
- if (userData.users[i].id == mentID){
- mentUser = userData.users[i];
- noData = false;
- }
- }
- if (noData){
- message.channel.send("That user is not registered in LofeBot.");
- }
- else if (bot.users.get(mentID).bot) {
- if (mentID == bot.user.id) {
- message.channel.send("Part bread, part robot.\n"
- + "I have eaten " + botData.points + " gacha points.\n"
- + "Use `" + prefix + "help` to view all of my commands.", new Discord.Attachment(bot.user.displayAvatarURL.substring(0,bot.user.displayAvatarURL.length - 9)));
- }
- else if (mentID == 421869099421794308) {
- message.channel.send("I love Kiyoteru!!!!!");
- }
- else {
- message.channel.send("This bot does not have a profile.");
- }
- }
- else if (mentUser.profile == ""){
- message.channel.send("That user has not set a profile.\nPoints: " + mentUser.points);
- }
- else if (message.channel.type == "text" && message.guild.members.has(mentID)){
- message.channel.send(mentUser.profile + "\n\nPoints: " + mentUser.points);
- }
- else {
- message.channel.send("You can only check the profiles of other members in this server.");
- }
- }
- }
- else if (args[1] == "set"){ // L!profile set
- var profMsg = "";
- if (args[2] == undefined){
- message.channel.send("Profile has been cleared.");
- }else{
- for(var i = 2; i < args.length; i++){
- profMsg += args[i] + " ";
- }
- profMsg = profMsg.trim();
- message.channel.send("Profile has been set.");
- }
- user.profile = profMsg;
- }
- else {
- message.channel.send("Invalid command. Use `" + prefix + "profile set (text)` or `" + prefix + "profile (@username)`.");
- }
- break;
- case 'hug':
- if (args[1] == undefined){
- message.channel.send('Please mention a user.');
- }else{
- if (args[1].substring(0,3) == '<@!') {
- var mention = args[1].substring(3);
- mention = mention.substring(0,mention.length-1);
- if (mention == message.author.id){
- message.channel.send('I have given you a hug! :blush:');
- }else if (mention == 386288945773674506){
- message.channel.send('Thank you for hugging me! :blush:')
- }else if (message.channel.type == "text"){
- if (message.guild.members.has(mention)){
- message.channel.send(message.member.displayName + ' has given ' + message.guild.members.get(mention).displayName + ' a hug!');
- }
- else {
- message.channel.send('Unavailable to hug.');
- }
- }else{
- message.channel.send('Unavailable to hug.');
- }
- }else if(args[1].substring(0,2) == '<@'){
- var mention = args[1].substring(2);
- mention = mention.substring(0,mention.length-1);
- if (mention == message.author.id){
- message.channel.send('I have given you a hug! :blush:');
- }else if (mention == 386288945773674506){
- message.channel.send('Thank you for hugging me! :blush:')
- }else if (message.channel.type == "text"){
- if (message.guild.members.has(mention)){
- message.channel.send(message.member.displayName + ' has given ' + message.guild.members.get(mention).displayName + ' a hug!');
- }
- else {
- message.channel.send('Unavailable to hug.');
- }
- }else{
- message.channel.send('Unavailable to hug.');
- }
- }else{
- message.channel.send('Please mention a user.');
- }
- }
- break;
- case 'points':
- if (args[1] == undefined){
- message.channel.send("You have " + user.points + " gacha points.");
- }
- else if (args[1].substring(0,2) == "<@"){
- var mentID;
- var isRole;
- if (args[1].substring(2,3) == "&"){
- message.channel.send("You cannot transfer points to roles.");
- isRole = true;
- }
- else if (args[1].substring(2,3) == "!"){
- mentID = args[1].substring(3,args[1].length-1);
- isRole = false;
- }
- else{
- mentID = args[1].substring(2,args[1].length-1);
- isRole = false;
- }
- if (!isRole && bot.users.get(mentID).bot){
- message.channel.send("You cannot transfer points to bots.");
- }
- else if (!isRole){
- if (message.channel.type != "text") {
- message.channel.send("You cannot transfer points in DMs.");
- }
- else if (mentID == message.author.id){
- message.channel.send("You cannot transfer points to yourself.");
- }
- else if (!message.guild.members.has(mentID)) {
- message.channel.send("You can only transfer points to members of this server.");
- }
- else if (args[2] > user.points){
- var grossPts = Math.round(args[2]);
- message.channel.send("You only have " + user.points + " gacha points. You cannot transfer " + grossPts + " points.");
- }
- else if (args[2] < 0) {
- message.channel.send("Are you trying to steal points? Nice try.");
- }
- else if (args[2] == 0) {
- message.channel.send("Please specify a number of points to transfer.");
- }
- else if (args[2] > 0 && args[2] <= user.points && message.channel.type == "text"){
- var tax = 0.2;
- var grossPts = Math.round(args[2]);
- var taxPts = Math.round(grossPts*tax);
- var netPts = Math.round(grossPts-taxPts);
- user.points -= grossPts;
- botData.points += grossPts;
- var recipientPoints;
- for (var i = 0; i < userData.users.length; i++){
- if (userData.users[i].id == mentID){
- userData.users[i].points += netPts;
- recipientPoints = userData.users[i].points;
- noData = false;
- }
- }
- if (noData){
- userData.users.push({
- "id": mentID,
- "profile": "",
- "points": netPts,
- "lastMsg": "",
- "spam": 1,
- "gachaDaily": false,
- "kiyoriiInv": 50,
- "defoStarsInv": 50,
- "twelveInv": 50,
- "spouse": 0,
- "weddingDate": 0,
- "pendingMarriage": []
- });
- recipientPoints = netPts;
- }
- var recipientNickname = message.guild.members.get(mentID).displayName;
- var recipientUsername = message.guild.members.get(mentID).user.username;
- var recipientTag = message.guild.members.get(mentID).user.tag;
- message.channel.send("```diff\n"
- + "Transferring " + grossPts + " points to " + recipientNickname
- + "\n-" + taxPts + " points tax (" + tax*100 + "%)"
- + "\nFinal transfer amount: " + netPts + " points"
- + "```");
- message.author.send("You have sent " + grossPts + " gacha points to " + recipientTag + "\n"
- + "You now have " + user.points + " gacha points.");
- bot.users.get(mentID).send("You have received " + netPts + " gacha points from " + message.author.tag + "\n"
- + "You now have " + recipientPoints + " gacha points.");
- }
- else{
- message.channel.send("Please specify a number of points to transfer.");
- }
- }
- }
- else{
- message.channel.send("You have " + user.points + " gacha points. To transfer points, use `" + prefix + "points @mention [number]`");
- }
- break;
- case 'gacha':
- if (message.channel.type == "text"){
- var allCards, cardsN, cardsHN, cardsR, cardsSR, cardsUR; // Arrays for gacha cards
- var stat1, stat2, stat3; // Strings, name of 3 card stats for viewing cards
- var cardGame; // Boolean, whether or not the server uses gacha cards
- var folder; // String, folder name for saving cards
- var gameName; // String, for "your new cards are" and "you don't have any cards"
- var invLimit; // Int, maximum inventory slots
- if (message.guild.id == 264995832032395264){ //St Defoko's Idol Stars
- allCards = $.csv.toArrays(fs.readFileSync(appDir + "/defoStarsCards.csv", "utf-8"));
- cardsN = allCards.filter(card => card[1] == "N");
- cardsHN = allCards.filter(card => card[1] == "HN");
- cardsR = allCards.filter(card => card[1] == "R");
- cardsSR = allCards.filter(card => card[1] == "SR");
- cardsUR = allCards.filter(card => card[1] == "UR");
- folder = appDir + "/defostars/";
- gameName = "DefoStars";
- stat1 = "Singing";
- stat2 = "Intelligence";
- stat3 = "Charm";
- cardGame = true;
- invLimit = user.defoStarsInv;
- }else if (message.guild.id == 357552578705227778){ //Kiyorii
- allCards = $.csv.toArrays(fs.readFileSync(appDir + "/kiyoriiCards.csv", "utf-8"));
- cardsN = allCards.filter(card => card[1] == "N");
- cardsHN = allCards.filter(card => card[1] == "HN");
- cardsR = allCards.filter(card => card[1] == "R");
- cardsSR = allCards.filter(card => card[1] == "SR");
- cardsUR = allCards.filter(card => card[1] == "UR");
- folder = appDir + "/kiyorii/";
- gameName = "Kiyorii";
- stat1 = "Responsibility";
- stat2 = "Charm";
- stat3 = "Violence";
- cardGame = true;
- invLimit = user.kiyoriiInv;
- }else if (message.guild.id == 385927196058845195){ //TWELVE
- allCards = $.csv.toArrays(fs.readFileSync(appDir + "/twelveCards.csv", "utf-8"));
- cardsN = allCards.filter(card => card[1] == "N");
- cardsHN = allCards.filter(card => card[1] == "HN");
- cardsR = allCards.filter(card => card[1] == "R");
- cardsSR = allCards.filter(card => card[1] == "SR");
- cardsUR = allCards.filter(card => card[1] == "UR");
- folder = appDir + "/twelve/";
- gameName = "TWELVE";
- stat1 = "A";
- stat2 = "B";
- stat3 = "C";
- cardGame = true;
- invLimit = user.twelveInv;
- }else{
- cardGame = false;
- }
- if (cardGame){
- var inventory;
- try {
- inventory = $.csv.toArrays(fs.readFileSync(folder + message.author.id + ".csv", "utf-8"));
- }catch (err){
- inventory = [];
- }
- switch(args[1]){
- case 'pull':
- if (args[2] >= 1 && args[2] <= 10){
- var pulls = parseInt(args[2]);
- if (pulls + inventory.length > invLimit){
- message.channel.send("You have " + (invLimit - inventory.length) + " empty inventory slot(s). You need " + (pulls + inventory.length - invLimit) + " more slot(s) to pull " + pulls + " card(s).");
- }else{
- var cost = 0; // Gacha point cost per card pulled, varies per tier
- var highRatio = 0; // Probability of higher rarity per tier
- var newCards = [];
- switch(args[3]){
- case 'NHN':
- if (cardsN[0][2] == "" || cardsHN[0][2] == ""){
- message.channel.send("Normal/High Normal gacha is not yet available.");
- }else{
- cost = 100;
- highRatio = 0.2;
- if (pulls*cost > user.points){
- message.channel.send("You have " + user.points + " gacha points. You need " + (pulls*cost - user.points) + " more points to pull " + pulls + " card(s).");
- }else{
- var result = "Your new " + gameName + " cards are:\n";
- for (i = 0; i < pulls; i++){
- if (Math.random() < highRatio){
- var chosen = Math.floor(Math.random() * cardsHN.length);
- result += "HN " + cardsHN[chosen][2] + "\n";
- newCards.push(cardsHN[chosen].slice(0,2).concat(cardsHN[chosen].slice(4)));
- }else{
- var chosen = Math.floor(Math.random() * cardsN.length);
- result += "N " + cardsN[chosen][2] + "\n";
- newCards.push(cardsN[chosen].slice(0,2).concat(cardsN[chosen].slice(4)));
- }
- }
- if (pulls == 10){
- var chosen = Math.floor(Math.random() * cardsHN.length);
- result += "Bonus card: HN " + cardsHN[chosen][2] + "\n";
- newCards.push(cardsHN[chosen].slice(0,2).concat(cardsHN[chosen].slice(4)));
- }
- user.points -= pulls*cost;
- botData.points += pulls*cost;
- result += "You spent " + pulls*cost + " gacha points. You have " + (user.points) + " gacha points remaining.";
- fs.appendFileSync(folder + message.author.id + ".csv", $.csv.fromArrays(newCards));
- message.channel.send(result);
- }
- }
- break;
- case 'HNR':
- if (cardsHN[0][2] == "" || cardsR[0][2] == ""){
- message.channel.send("High Normal/Rare gacha is not yet available.");
- }else{
- cost = 200;
- highRatio = 0.2;
- if (pulls*cost > user.points){
- message.channel.send("You have " + user.points + " gacha points. You need " + (pulls*cost - user.points) + " more points to pull " + pulls + " card(s).");
- }else{
- var result = "Your new " + gameName + " cards are:\n";
- for (i = 0; i < pulls; i++){
- if (Math.random() < highRatio){
- var chosen = Math.floor(Math.random() * cardsR.length);
- result += "R " + cardsR[chosen][2] + "\n";
- newCards.push(cardsR[chosen].slice(0,2).concat(cardsR[chosen].slice(4)));
- }else{
- var chosen = Math.floor(Math.random() * cardsHN.length);
- result += "HN " + cardsHN[chosen][2] + "\n";
- newCards.push(cardsHN[chosen].slice(0,2).concat(cardsHN[chosen].slice(4)));
- }
- }
- if (pulls == 10){
- var chosen = Math.floor(Math.random() * cardsR.length);
- result += "Bonus card: R " + cardsR[chosen][2] + "\n";
- newCards.push(cardsR[chosen].slice(0,2).concat(cardsR[chosen].slice(4)));
- }
- user.points -= pulls*cost;
- botData.points += pulls*cost;
- result += "You spent " + pulls*cost + " gacha points. You have " + (user.points) + " gacha points remaining.";
- fs.appendFileSync(folder + message.author.id + ".csv",$.csv.fromArrays(newCards));
- message.channel.send(result);
- }
- }
- break;
- case 'RSR':
- if (cardsR[0][2] == "" || cardsSR[0][2] == ""){
- message.channel.send("Rare/Super Rare gacha is not yet available.");
- }else{
- cost = 300;
- highRatio = 0.2;
- if (pulls*cost > user.points){
- message.channel.send("You have " + user.points + " gacha points. You need " + (pulls*cost - user.points) + " more points to pull " + pulls + " card(s).");
- }else{
- var result = "Your new " + gameName + " cards are:\n";
- for (i = 0; i < pulls; i++){
- if (Math.random() < highRatio){
- var chosen = Math.floor(Math.random() * cardsSR.length);
- result += "SR " + cardsSR[chosen][2] + "\n";
- newCards.push(cardsSR[chosen].slice(0,2).concat(cardsSR[chosen].slice(4)));
- }else{
- var chosen = Math.floor(Math.random() * cardsR.length);
- result += "R " + cardsR[chosen][2] + "\n";
- newCards.push(cardsR[chosen].slice(0,2).concat(cardsR[chosen].slice(4)));
- }
- }
- if (pulls == 10){
- var chosen = Math.floor(Math.random() * cardsSR.length);
- result += "Bonus card: SR " + cardsSR[chosen][2] + "\n";
- newCards.push(cardsSR[chosen].slice(0,2).concat(cardsSR[chosen].slice(4)));
- }
- user.points -= pulls*cost;
- botData.points += pulls*cost;
- result += "You spent " + pulls*cost + " gacha points. You have " + (user.points) + " gacha points remaining.";
- fs.appendFileSync(folder + message.author.id + ".csv",$.csv.fromArrays(newCards));
- message.channel.send(result);
- }
- }
- break;
- case 'SRUR':
- if (cardsSR[0][2] == "" || cardsUR[0][2] == ""){
- message.channel.send("Super Rare/Ultra Rare gacha is not yet available.");
- }else{
- cost = 400;
- highRatio = 0.2;
- if (pulls*cost > user.points){
- message.channel.send("You have " + user.points + " gacha points. You need " + (pulls*cost - user.points) + " more points to pull " + pulls + " card(s).");
- }else{
- var result = "Your new " + gameName + " cards are:\n";
- for (i = 0; i < pulls; i++){
- if (Math.random() < highRatio){
- var chosen = Math.floor(Math.random() * cardsUR.length);
- result += "UR " + cardsUR[chosen][2] + "\n";
- newCards.push(cardsUR[chosen].slice(0,2).concat(cardsUR[chosen].slice(4)));
- }else{
- var chosen = Math.floor(Math.random() * cardsSR.length);
- result += "SR " + cardsSR[chosen][2] + "\n";
- newCards.push(cardsSR[chosen].slice(0,2).concat(cardsSR[chosen].slice(4)));
- }
- }
- if (pulls == 10){
- var chosen = Math.floor(Math.random() * cardsUR.length);
- result += "Bonus card: UR " + cardsUR[chosen][2] + "\n";
- newCards.push(cardsUR[chosen].slice(0,2).concat(cardsUR[chosen].slice(4)));
- }
- user.points -= pulls*cost;
- botData.points += pulls*cost;
- result += "You spent " + pulls*cost + " gacha points. You have " + (user.points) + " gacha points remaining.";
- fs.appendFileSync(folder + message.author.id + ".csv",$.csv.fromArrays(newCards));
- message.channel.send(result);
- }
- }
- break;
- default:
- message.channel.send("Please specify a gacha tier.");
- }
- }
- }else{
- message.channel.send("Please pull 1 - 10 cards.");
- }
- break;
- case 'view':
- if (args[2] == undefined){
- if (inventory.length > 0){
- var list = "Use `" + prefix + "gacha view (number)` to see more details about a specific card.\n";
- for (var i = 0; i < inventory.length; i++){
- for (var j = 0; j < allCards.length; j++){
- if (allCards[j][0] == inventory[i][0]){
- list += (i+1) + ". " + inventory[i][1] + " " + allCards[j][2] + "\n";
- }
- }
- }
- list = Discord.Util.splitMessage(list);
- if (list.constructor === Array){
- for (var i = 0; i < list.length; i ++){
- message.channel.send(list[i]);
- }
- }else{
- message.channel.send(list);
- }
- }else{
- message.channel.send("You do not have any " + gameName + " cards.");
- }
- }else if (args[2] > 0 && args[2] <= inventory.length){
- var select = args[2]-1;
- var name;
- var img;
- for (var i = 0; i < allCards.length; i++){
- if (allCards[i][0] == inventory[select][0]){
- name = allCards[i][2];
- img = allCards[i][3];
- }
- }
- message.channel.send(inventory[select][1] + " " + name
- + "\nLevel: " + inventory[select][2]
- + "\n"+stat1+": " + inventory[select][3]
- + "\n"+stat2+": " + inventory[select][4]
- + "\n"+stat3+": " + inventory[select][5], new Discord.Attachment(img));
- }else{
- message.channel.send("Use `" + prefix + "gacha view` to view all cards or `" + prefix + "gacha view (number)` to view a specific card.");
- }
- break;
- case 'sell':
- var markdown = 0.7;
- var price = 0; //varies per tier, must match common tier price
- if (args[2] > 0 && args[2] <= inventory.length){
- var select = args[2]-1;
- if (inventory[select][1] == "UR" || inventory[select][1] == "UR+"){
- message.channel.send("You cannot sell UR cards.");
- }else if (inventory[select][1] == "SR+"){
- price = 400;
- user.points += price;
- botData.points -= price;
- var cardName;
- for (var i = 0; i < allCards.length; i++){
- if (allCards[i][0] == inventory[select][0]){
- cardName = allCards[i][2];
- }
- }
- message.channel.send("You have sold SR+ " + cardName + " for " + price + " gacha points.\n"
- + "You now have " + user.points + " gacha points.");
- inventory.splice(select,1);
- fs.writeFileSync(folder + message.author.id + ".csv", $.csv.fromArrays(inventory));
- }else if (inventory[select][1] == "SR"){
- price = 400;
- user.points += Math.round(price*markdown);
- botData.points -= Math.round(price*markdown);
- var cardName;
- for (var i = 0; i < allCards.length; i++){
- if (allCards[i][0] == inventory[select][0]){
- cardName = allCards[i][2];
- }
- }
- message.channel.send("You have sold SR " + cardName + " for " + Math.round(price*markdown) + " gacha points.\n"
- + "You now have " + user.points + " gacha points.");
- inventory.splice(select,1);
- fs.writeFileSync(folder + message.author.id + ".csv", $.csv.fromArrays(inventory));
- }else if (inventory[select][1] == "R+"){
- price = 300;
- user.points += price;
- botData.points -= price;
- var cardName;
- for (var i = 0; i < allCards.length; i++){
- if (allCards[i][0] == inventory[select][0]){
- cardName = allCards[i][2];
- }
- }
- message.channel.send("You have sold R+ " + cardName + " for " + price + " gacha points.\n"
- + "You now have " + user.points + " gacha points.");
- inventory.splice(select,1);
- fs.writeFileSync(folder + message.author.id + ".csv", $.csv.fromArrays(inventory));
- }else if (inventory[select][1] == "R"){
- price = 300;
- user.points += Math.round(price*markdown);
- botData.points -= Math.round(price*markdown);
- var cardName;
- for (var i = 0; i < allCards.length; i++){
- if (allCards[i][0] == inventory[select][0]){
- cardName = allCards[i][2];
- }
- }
- message.channel.send("You have sold R " + cardName + " for " + Math.round(price*markdown) + " gacha points.\n"
- + "You now have " + user.points + " gacha points.");
- inventory.splice(select,1);
- fs.writeFileSync(folder + message.author.id + ".csv", $.csv.fromArrays(inventory));
- }else if (inventory[select][1] == "HN+"){
- price = 200;
- user.points += price;
- botData.points -= price;
- var cardName;
- for (var i = 0; i < allCards.length; i++){
- if (allCards[i][0] == inventory[select][0]){
- cardName = allCards[i][2];
- }
- }
- message.channel.send("You have sold HN+ " + cardName + " for " + price + " gacha points.\n"
- + "You now have " + user.points + " gacha points.");
- inventory.splice(select,1);
- fs.writeFileSync(folder + message.author.id + ".csv", $.csv.fromArrays(inventory));
- }else if (inventory[select][1] == "HN"){
- price = 200;
- user.points += Math.round(price*markdown);
- botData.points -= Math.round(price*markdown);
- var cardName;
- for (var i = 0; i < allCards.length; i++){
- if (allCards[i][0] == inventory[select][0]){
- cardName = allCards[i][2];
- }
- }
- message.channel.send("You have sold HN " + cardName + " for " + Math.round(price*markdown) + " gacha points.\n"
- + "You now have " + user.points + " gacha points.");
- inventory.splice(select,1);
- fs.writeFileSync(folder + message.author.id + ".csv", $.csv.fromArrays(inventory));
- }else if (inventory[select][1] == "N+"){
- price = 100;
- user.points += price;
- botData.points -= price;
- var cardName;
- for (var i = 0; i < allCards.length; i++){
- if (allCards[i][0] == inventory[select][0]){
- cardName = allCards[i][2];
- }
- }
- message.channel.send("You have sold N+ " + cardName + " for " + price + " gacha points.\n"
- + "You now have " + user.points + " gacha points.");
- inventory.splice(select,1);
- fs.writeFileSync(folder + message.author.id + ".csv", $.csv.fromArrays(inventory));
- }else if (inventory[select][1] == "N"){
- price = 100;
- user.points += Math.round(price*markdown);
- botData.points -= Math.round(price*markdown);
- var cardName;
- for (var i = 0; i < allCards.length; i++){
- if (allCards[i][0] == inventory[select][0]){
- cardName = allCards[i][2];
- }
- }
- message.channel.send("You have sold N " + cardName + " for " + Math.round(price*markdown) + " gacha points.\n"
- + "You now have " + user.points + " gacha points.");
- inventory.splice(select,1);
- fs.writeFileSync(folder + message.author.id + ".csv", $.csv.fromArrays(inventory));
- }
- }else if(args[2] == "N") {
- price = 100;
- var sold = [];
- var counter = 0;
- var result = "You have sold:\n";
- while (counter < inventory.length){
- if (inventory[counter][1] == "N"){
- sold.push(inventory[counter]);
- for (var i = 0; i < allCards.length; i++){
- if (allCards[i][0] == inventory[counter][0]){
- result += "N " + allCards[i][2] + "\n";
- }
- }
- inventory.splice(counter,1);
- }else{
- counter++;
- }
- }
- if (sold.length == 0){
- message.channel.send("You do not have any Normal cards.");
- }else{
- user.points += Math.round(price*markdown*sold.length);
- botData.points -= Math.round(price*markdown*sold.length);
- result += "for a total of " + Math.round(price*markdown*sold.length) + " gacha points.\n"
- + "You now have " + user.points + " gacha points.";
- fs.writeFileSync(folder + message.author.id + ".csv", $.csv.fromArrays(inventory));
- message.channel.send(result);
- }
- }else if(args[2] == "N+") {
- price = 100;
- var sold = [];
- var counter = 0;
- var result = "You have sold:\n";
- while (counter < inventory.length){
- if (inventory[counter][1] == "N+"){
- sold.push(inventory[counter]);
- for (var i = 0; i < allCards.length; i++){
- if (allCards[i][0] == inventory[counter][0]){
- result += "N+ " + allCards[i][2] + "\n";
- }
- }
- inventory.splice(counter,1);
- }else{
- counter++;
- }
- }
- if (sold.length == 0){
- message.channel.send("You do not have any Normal+ cards.");
- }else{
- user.points += Math.round(price*sold.length);
- botData.points -= Math.round(price*sold.length);
- result += "for a total of " + Math.round(price*sold.length) + " gacha points.\n"
- + "You now have " + user.points + " gacha points.";
- fs.writeFileSync(folder + message.author.id + ".csv", $.csv.fromArrays(inventory));
- message.channel.send(result);
- }
- }else if(args[2] == "HN") {
- price = 200;
- var sold = [];
- var counter = 0;
- var result = "You have sold:\n";
- while (counter < inventory.length){
- if (inventory[counter][1] == "HN"){
- sold.push(inventory[counter]);
- for (var i = 0; i < allCards.length; i++){
- if (allCards[i][0] == inventory[counter][0]){
- result += "HN " + allCards[i][2] + "\n";
- }
- }
- inventory.splice(counter,1);
- }else{
- counter++;
- }
- }
- if (sold.length == 0){
- message.channel.send("You do not have any High Normal cards.");
- }else{
- user.points += Math.round(price*markdown*sold.length);
- botData.points -= Math.round(price*markdown*sold.length);
- result += "for a total of " + Math.round(price*markdown*sold.length) + " gacha points.\n"
- + "You now have " + user.points + " gacha points.";
- fs.writeFileSync(folder + message.author.id + ".csv", $.csv.fromArrays(inventory));
- message.channel.send(result);
- }
- }else if(args[2] == "HN+") {
- price = 200;
- var sold = [];
- var counter = 0;
- var result = "You have sold:\n";
- while (counter < inventory.length){
- if (inventory[counter][1] == "HN+"){
- sold.push(inventory[counter]);
- for (var i = 0; i < allCards.length; i++){
- if (allCards[i][0] == inventory[counter][0]){
- result += "HN+ " + allCards[i][2] + "\n";
- }
- }
- inventory.splice(counter,1);
- }else{
- counter++;
- }
- }
- if (sold.length == 0){
- message.channel.send("You do not have any High Normal+ cards.");
- }else{
- user.points += Math.round(price*sold.length);
- botData.points -= Math.round(price*sold.length);
- result += "for a total of " + Math.round(price*sold.length) + " gacha points.\n"
- + "You now have " + user.points + " gacha points.";
- fs.writeFileSync(folder + message.author.id + ".csv", $.csv.fromArrays(inventory));
- message.channel.send(result);
- }
- }else if (args[2] == "R" || args[2] == "R+" || args[2] == "SR" || args[2] == "SR+" || args[2] == "UR" || args[2] == "UR+" ) {
- message.channel.send("You can only batch-sell Normal and High Normal cards.");
- }else if (inventory.length == 0){
- message.channel.send("You do not have any " + gameName + " cards.");
- }else{
- message.channel.send("Please specify a card to sell with `" + prefix + "gacha sell [number]` or `" + prefix + "gacha sell [rarity]`. Use `" + prefix + "gacha view` to view all cards and card numbers.\n"
- + "__Payout:__\n"
- + "N - 70pts\n"
- + "N+ - 100pts\n"
- + "HN - 140pts\n"
- + "HN+ - 200pts\n"
- + "R - 210pts\n"
- + "R+ - 300pts\n"
- + "SR - 280pts\n"
- + "SR+ - 400pts\n"
- + "UR/UR+ - Cannot be sold");
- }
- break;
- case 'idolize':
- var price = 200; //cost to idolize 1 card
- if (user.points >= price){
- if (args[2] > 0 && args[2] <= inventory.length){
- if (args[2] == args[3]){
- message.channel.send("The secondary card must be a separate card. Use `" + prefix + "gacha view` to view all cards and card numbers.");
- }
- else if (args[3] > 0 && args[3] <= inventory.length){
- var primary = args[2]-1;
- var secondary = args[3]-1;
- var oldStat1 = inventory[primary][3];
- var oldStat2 = inventory[primary][4];
- var oldStat3 = inventory[primary][5];
- if (inventory[primary][1].substr(inventory[primary][1].length-1,1) == "+" || inventory[secondary][1].substr(inventory[secondary][1].length-1,1) == "+"){
- message.channel.send("A card you have selected is already idolized.");
- }
- else if (inventory[primary][0] == inventory[secondary][0]){
- inventory[primary][0] = parseInt(inventory[primary][0])+1; // update ID
- inventory[primary][1] += "+"; //update rarity
- inventory[primary][3] = parseInt(inventory[primary][3]) + Math.round(parseInt(inventory[secondary][3])/2); // add half of secondary stat1
- inventory[primary][4] = parseInt(inventory[primary][4]) + Math.round(parseInt(inventory[secondary][4])/2); // add half of secondary stat2
- inventory[primary][5] = parseInt(inventory[primary][5]) + Math.round(parseInt(inventory[secondary][5])/2); // add half of secondary stat3
- inventory.splice(secondary,1); //remove secondary card
- user.points -= price;
- botData.points += price;
- var origCard, idolizedCard, img;
- for (var i = 0; i < allCards.length; i++){
- if (allCards[i][0] == inventory[primary][0]){
- origCard = allCards[i-1];
- idolizedCard = allCards[i];
- img = allCards[i][3];
- }
- }
- message.channel.send(origCard[1] + " " + origCard[2] + " has been idolized into " + idolizedCard[1] + " " + idolizedCard[2] + "!\n"
- + stat1 + ": " + oldStat1 + "→" + inventory[primary][3] + "\n"
- + stat2 + ": " + oldStat2 + "→" + inventory[primary][4] + "\n"
- + stat3 + ": " + oldStat3 + "→" + inventory[primary][5] + "\n"
- + "You spent " + price + " gacha points. You have " + user.points + " remaining.", new Discord.Attachment(img));
- fs.writeFileSync(folder + message.author.id + ".csv", $.csv.fromArrays(inventory));
- }
- else{
- message.channel.send("The primary and secondary card must be the same. Use `" + prefix + "gacha view` to view all cards and card numbers.");
- }
- }
- else if (inventory.length == 0){
- message.channel.send("You do not have any " + gameName + " cards.");
- }
- else{
- message.channel.send("Please specify the secondary card to idolize with.");
- }
- }else{
- message.channel.send("Please specify a card to idolize with `" + prefix + "gacha idolize [primary card #] [secondary card #]`.");
- }
- }else{
- message.channel.send("You have " + user.points + " gacha points. You need " + (price-user.points) + " more points to idolize a card.");
- }
- break;
- case 'expand':
- var price = 100; //cost to buy 10 slots
- if (user.points >= price){
- var oldLimit = invLimit;
- if (gameName == "DefoStars"){
- user.defoStarsInv += 10;
- invLimit = user.defoStarsInv;
- }else if (gameName == "Kiyorii"){
- user.kiyoriiInv += 10;
- invLimit = user.kiyoriiInv;
- }else if (gameName == "TWELVE"){
- user.twelveInv += 10;
- invLimit = user.twelveInv;
- }
- user.points -= 100;
- botData.points += 100;
- message.channel.send("Inventory expanded from " + oldLimit + " slots to " + invLimit + " slots.\n"
- + "You spent " + price + " gacha points. You have " + user.points + " remaining.");
- }else{
- message.channel.send("You have " + user.points + " gacha points. You need " + (price-user.points) + " more points to buy 10 inventory slots.");
- }
- break;
- default:
- message.channel.send("Invalid command. The available gacha commands are:\n"
- + "`" + prefix + "gacha pull`\n"
- + "`" + prefix + "gacha view`\n"
- + "`" + prefix + "gacha sell`\n"
- + "`" + prefix + "gacha idolize`\n"
- + "`" + prefix + "gacha expand`");
- }
- }else{ //all other servers use emojis
- if (args[1] == undefined){
- message.channel.send("Please buy 1 - 10 emojis.");
- }else if (args[1] > 0 && args[1] < 11){
- var pulls = parseInt(args[1]);
- var cost = 100;
- if (pulls*cost > user.points){
- message.channel.send("You have " + user.points + " gacha points. You need " + (pulls*cost - user.points) + " more points to pull " + pulls + " emoji(s).");
- }else{
- var result = "Your new emojis are:\n";
- for (i = 0; i < pulls; i++){
- result += message.guild.emojis.random(1);
- }
- if (pulls == 10){
- result += "\nBonus emoji: " + message.guild.emojis.random(1);
- }
- result += "\nYou spent " + pulls*cost + " gacha points. You have " + (user.points - pulls*cost) + " gacha points remaining.";
- // Points are transferred from the user to LofeBot
- user.points -= pulls*cost;
- for (var i = 0; i < userData.users.length; i++){
- if (userData.users[i].id == bot.user.id){
- userData.users[i].points += pulls*cost;
- }
- }
- message.channel.send(result);
- }
- }else{
- message.channel.send("Please buy 1 - 10 emojis.");
- }
- }
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "help` to view all commands.");
- }
- break;
- case 'testosterone':
- message.channel.send('<:t_vial:389539476386480128>:syringe::muscle::blush::womens::arrow_right::mens:');
- break;
- case 'estrogen':
- message.channel.send(':pill::stuck_out_tongue_closed_eyes::mens::arrow_right::womens:');
- break;
- case 'zoop':
- message.channel.send(':point_right::sunglasses::point_right:');
- break;
- case 'bicth':
- message.channel.send("https://www.youtube.com/watch?v=X5uDQCuYTDo");
- break;
- case 'recipe':
- var recipes = require(appDir + "/recipes.json");
- var selected = recipes[Math.floor(Math.random() * recipes.length)];
- var result = "**" + selected.title + "**\nBy " + selected.author + "\n\n__Ingredients__:\n";
- for (var i = 0; i < selected.ingredients.length; i++){
- result += "❧ " + selected.ingredients[i] + "\n";
- }
- result += "\n" + selected.time + "\n\n__Steps__:";
- for (var i = 0; i < selected.steps.length; i++){
- result += "\n" + (i+1) + ". " + selected.steps[i];
- }
- message.channel.send(result);
- break;
- case 'voice':
- if (message.channel.type == "text"){
- if (message.member.voiceChannelID == undefined){
- message.channel.send("You must be in a voice channel to use this command.");
- }else {
- var voice = require(appDir + "/voice.json");
- var choice = Math.floor(Math.random() * voice.sentence.length);
- message.channel.send(voice.sentence[choice].text);
- message.member.voiceChannel.join()
- .then(connection => {
- return connection.playFile(appDir + voice.sentence[choice].audio);
- })
- .then(dispatcher => {
- dispatcher.on('error', console.error);
- })
- .catch(console.error);
- }
- }else{
- message.channel.send("Invalid command. Use `" + prefix + "help` to view all commands.");
- }
- break;
- case 'disconnect':
- if (message.author.id == 132494042008256512){
- function shutUp(value, key, map){
- value.disconnect();
- }
- bot.voiceConnections.forEach(shutUp);
- message.channel.send("Disconnected from all voice channels.");
- }else{
- message.channel.send("This command is admin only.");
- }
- break;
- default:
- message.channel.send("Invalid command. Use `" + prefix + "help` to view all commands.");
- }
- }
- if (!testing){
- // Standalone messages that don't start with L!
- if (message.content === 'ayy') {
- message.channel.send('lmao');
- }
- if (!message.author.bot) { // The bot ignores its own messages
- if (message.content.toLowerCase() === "same"){
- message.channel.send("same");
- }
- // Phrases contained in messages, disabled for St. Defoko's
- if (message.channel.type == "text" && message.guild.id != 264995832032395264){
- if (message.content.indexOf('soup') >= 0){
- message.channel.send('why are you buying clothes at the soup store');
- }else if (message.content.indexOf('Soup') >= 0){
- message.channel.send('Why are you buying clothes at the soup store?');
- }else if (message.content.indexOf('SOUP') >= 0){
- message.channel.send('WHY ARE YOU BUYING CLOTHES AT THE SOUP STORE');
- }
- if (message.content.toLowerCase().indexOf("vccv") >= 0 && message.guild.id == 421815715629105155){ //VSio only
- message.channel.send("**Did you mean:** Chezzie CVVC**?**");
- }
- if(message.guild.id != 357552578705227778){ // Disabling kiyoteru response for HKIM
- if (message.content.indexOf('kiyoteru') >= 0){
- message.channel.send('i love kiyoteru!!!!!');
- }else if (message.content.indexOf('Kiyoteru') >= 0){
- message.channel.send('I love Kiyoteru!!!!!');
- }else if (message.content.indexOf('KIYOTERU') >= 0){
- message.channel.send('I LOVE KIYOTERU!!!!!');
- }else if (message.content.indexOf('キヨテル') >= 0){
- message.channel.send('氷山キヨテル大好き!!!!!');
- }else if (message.content.indexOf('키요테루') >= 0){
- message.channel.send('히야마 키요테루 사랑해!!!!!');
- }
- }
- }else if (message.channel.type == "text" && message.content.toLowerCase().indexOf("kye") >= 0){ //Automatic admission to kye fanclub
- var fcRole = message.guild.roles.get("414483315857424394");
- if ( !message.member.roles.has("414483315857424394") ){
- message.member.addRole(fcRole);
- message.channel.send(message.member.displayName + " has joined the <#414482272893403136>");
- }
- }
- // Transmitting messages between magic portals
- const kiyoteruServer = bot.channels.get('389764852434075658');
- const stdefoServer = bot.channels.get('389764732564799488');
- const transmascServer = bot.channels.get('389769978355777546');
- const latvianServer = bot.channels.get('389770056881668097');
- const ahServer = bot.channels.get('435761201486495754');
- if (message.channel.id == kiyoteruServer.id){
- stdefoServer.send('(HK) **' + message.member.displayName + ':** ' + message.content);
- transmascServer.send('(HK) **' + message.member.displayName + ':** ' + message.content);
- latvianServer.send('(HK) **' + message.member.displayName + ':** ' + message.content);
- ahServer.send('(HK) **' + message.member.displayName + ':** ' + message.content);
- rcBot.wsAPI.sendChatMessage("drLaLPChQDRmEgRex", '(HK) **' + message.member.displayName + ':** ' + message.content);
- }
- if (message.channel.id == stdefoServer.id){
- kiyoteruServer.send('(SD) **' + message.member.displayName + ':** ' + message.content);
- transmascServer.send('(SD) **' + message.member.displayName + ':** ' + message.content);
- latvianServer.send('(SD) **' + message.member.displayName + ':** ' + message.content);
- ahServer.send('(SD) **' + message.member.displayName + ':** ' + message.content);
- rcBot.wsAPI.sendChatMessage("drLaLPChQDRmEgRex", '(SD) **' + message.member.displayName + ':** ' + message.content);
- }
- if (message.channel.id == transmascServer.id){
- stdefoServer.send('(TV) **' + message.member.displayName + ':** ' + message.content);
- kiyoteruServer.send('(TV) **' + message.member.displayName + ':** ' + message.content);
- latvianServer.send('(TV) **' + message.member.displayName + ':** ' + message.content);
- ahServer.send('(TV) **' + message.member.displayName + ':** ' + message.content);
- rcBot.wsAPI.sendChatMessage("drLaLPChQDRmEgRex", '(TV) **' + message.member.displayName + ':** ' + message.content);
- }
- if (message.channel.id == latvianServer.id){
- kiyoteruServer.send('(LH) **' + message.member.displayName + ':** ' + message.content);
- transmascServer.send('(LH) **' + message.member.displayName + ':** ' + message.content);
- stdefoServer.send('(LH) **' + message.member.displayName + ':** ' + message.content);
- ahServer.send('(LH) **' + message.member.displayName + ':** ' + message.content);
- rcBot.wsAPI.sendChatMessage("drLaLPChQDRmEgRex", '(LH) **' + message.member.displayName + ':** ' + message.content);
- }
- if (message.channel.id == ahServer.id){
- kiyoteruServer.send('(AHS) **' + message.member.displayName + ':** ' + message.content);
- transmascServer.send('(AHS) **' + message.member.displayName + ':** ' + message.content);
- stdefoServer.send('(AHS) **' + message.member.displayName + ':** ' + message.content);
- latvianServer.send('(AHS) **' + message.member.displayName + ':** ' + message.content);
- rcBot.wsAPI.sendChatMessage("drLaLPChQDRmEgRex", '(LH) **' + message.member.displayName + ':** ' + message.content);
- }
- //VSio to TUBS portals
- if (message.channel.id == 421840466565136395){ //Characterization
- rcBot.wsAPI.sendChatMessage("d6Z85xjg5QG2NaYkr", "(VSio) **" + message.member.displayName + ":** " + message.content);
- }
- if (message.channel.id == 421840683360583680){ //Content
- rcBot.wsAPI.sendChatMessage("wKNgkS5dHP6prnBcd", "(VSio) **" + message.member.displayName + ":** " + message.content);
- }
- }
- }
- fs.writeFileSync("./userData.json", JSON.stringify(userData), "utf8");
- });
- rcBot.on("message", rcMsg => {
- //there aren't any docs so just use this to check params
- //console.log(rcMsg);
- if (rcMsg.u._id != "3HCdMvE4fx5ceWyYp") { //Bot ignores itself
- rcBot.command(rcMsg.msg).action(meta => {
- if (rcMsg.msg == prefix + "ping"){
- rcBot.send(meta, "pong");
- }
- if (!testing){
- if (rcMsg.room._id == "drLaLPChQDRmEgRex"){ // Magic portal
- bot.channels.get('389764852434075658').send("(TUBS) **" + rcMsg.u.name + "**: " + rcMsg.msg); //Kiyoteru server
- bot.channels.get('389764732564799488').send("(TUBS) **" + rcMsg.u.name + "**: " + rcMsg.msg); //St. Defoko's
- bot.channels.get('389769978355777546').send("(TUBS) **" + rcMsg.u.name + "**: " + rcMsg.msg); //Transmasc Vocalsynth
- bot.channels.get('389770056881668097').send("(TUBS) **" + rcMsg.u.name + "**: " + rcMsg.msg); //Latvian house
- bot.channels.get('435761201486495754').send("(TUBS) **" + rcMsg.u.name + "**: " + rcMsg.msg); //AHS
- }
- if (rcMsg.room._id == "d6Z85xjg5QG2NaYkr"){
- bot.channels.get("421840466565136395").send("(TUBS) **" + rcMsg.u.name + "**: " + rcMsg.msg); //Characterization
- }
- if (rcMsg.room._id == "wKNgkS5dHP6prnBcd"){
- bot.channels.get("421840683360583680").send("(TUBS) **" + rcMsg.u.name + "**: " + rcMsg.msg); //Content
- }
- }
- });
- }
- });
- bot.on('guildMemberAdd', member => {
- if (!testing){
- //Latvian House
- if (member.guild.id == 348326020660854784){
- member.guild.channels.get("348350514020352000").send("Welcome to the Latvian House, <@" + member.id + ">!");
- }
- //Kiyoteru
- if (member.guild.id == 357552578705227778){
- member.guild.channels.get("357554544336568320").send("Welcome to the Hiyama Kiyoteru and Ice Mountain fan server, <@" + member.id + ">! Please read the messages in <#361666476564021258>, introduce yourself here in <#357554544336568320>, and set your roles with `L!role` in <#357556705258897409>!");
- }
- //Transmasc Vocalsynth
- if (member.guild.id == 385927196058845195){
- member.guild.channels.get("385929231890382849").send("Welcome to Transmasc Vocalsynth, <@" + member.id + ">! Please read the messages in <#385933127161348116>, introduce yourself here in <#385929231890382849>, and set your roles with `L!role` in <#385928891954495499>.");
- }
- //St. Defoko's
- if (member.guild.id == 264995832032395264){
- member.addRole(member.guild.roles.get('399813995109941248')); //auto visitor
- member.guild.channels.get('356384640308871178').send("<@"+member.id+"> has enrolled in St. Defoko's School of UTAU! Please read the messages in <#265005164388155402> and <#265005220130455555>, introduce yourself in <#356384640308871178>, and set your roles with `L!role` in <#371129811537756160>.");
- }
- //VSio
- if (member.guild.id == 421815715629105155){
- member.guild.channels.get("440689307259502593").send("Welcome to the official VocalSynth.io | DynamiVox Discord server, <@" + member.id + ">!");
- }
- }
- });
- bot.on('guildMemberRemove', member => {
- if (!testing){
- //Latvian House
- if (member.guild.id == 348326020660854784){
- member.guild.channels.get("348350514020352000").send("Goodbye " + member.user.tag);
- }
- //Kiyoteru
- if (member.guild.id == 357552578705227778){
- member.guild.channels.get('357554544336568320').send("Goodbye, " + member.user.tag + "! :wave: Please take care!");
- }
- //Transmasc Vocalsynth
- if (member.guild.id == 385927196058845195){
- member.guild.channels.get('385929231890382849').send("Goodbye, " + member.user.tag + "!");
- }
- //St. Defoko's
- if (member.guild.id == 264995832032395264){
- member.guild.channels.get('356384640308871178').send(member.user.tag + " has left St. Defoko's School of UTAU.");
- }
- //VSio
- if (member.guild.id == 421815715629105155){
- member.guild.channels.get("440689307259502593").send("Goodbye " + member.user.tag);
- }
- }
- });
- bot.on('disconnect', () => {
- console.log('LofeBot asleep.');
- });
- bot.on('reconnecting', () => {
- console.log('LofeBot reconnecting...');
- });
- //Regular messages
- setInterval(function() {
- var d = new Date();
- if (d.getUTCHours() == 0 && d.getUTCMinutes() == 0){
- for (var i = 0; i < userData.users.length; i++){
- userData.users[i].gachaDaily = false;
- }
- //Daily free gacha notification
- //420374097495588875 //travoc #twelve
- //410118601597517834 //st defo #defostars
- //386001523362103297 //kiyoteru #kiyoteruworld
- if (d.getUTCDate() == 20){ //St. Defo #announcements monthly Utaism Day on the 20th
- bot.channels.get('265005220130455555').send("Utaism Day begins now! Enjoy 10 gacha points per message today. AAIAUEA!");
- }else if (d.getUTCDay() == 0){ //St. Defo #introductions weekly visitor ping on Sunday
- bot.channels.get('356384640308871178').send("<@&399813995109941248>\nThank you for visiting St. Defoko's School of UTAU! If you're interested in sticking around, please set your roles with `L!role` in <#371129811537756160>.");
- }else if (d.getUTCDate() == 7){ //Kiyoteru #announcements monthly 7ate9 on the 7th
- bot.channels.get('361666476564021258').send("Kiyoteru7ate9 starts today! Enjoy 10 gacha points per message until the 9th!");
- }else if (d.getUTCDate() == 12){ //TraVoc #twelve monthly on the 12th
- if (d.getUTCMonth == 3){ //April
- bot.channels.get('420374097495588875').send("Happy birthday Hisoka Kojiro! Enjoy 10 gacha points per message today!");
- }else if (d.getUTCMonth == 6){ //July
- bot.channels.get('420374097495588875').send("Happy birthday Tanaka Jun! Enjoy 10 gacha points per message today!");
- }else if (d.getUTCMonth == 7){ //August
- bot.channels.get('420374097495588875').send("Happy birthday Juuroh Romilly! Enjoy 10 gacha points per message today!");
- }else if (d.getUTCMonth == 9){ //October
- bot.channels.get('420374097495588875').send("Happy birthday Micah Fraser! Enjoy 10 gacha points per message today!");
- }else if (d.getUTCMonth == 10){ //November
- bot.channels.get('420374097495588875').send("Happy birthday Daze! Enjoy 10 gacha points per message today!");
- }else if (d.getUTCMonth == 11){ //December
- bot.channels.get('420374097495588875').send("Happy birthday Elliot Russel! Enjoy 10 gacha points per message today!");
- }else{
- bot.channels.get('420374097495588875').send("It's time for TWELVE! Enjoy 10 gacha points per message today!");
- }
- }
- }
- }, 1000); //Checks once per second (every 1000 milliseconds)
Add Comment
Please, Sign In to add comment