commit 03967f0aac9084efe307f155899ce21b1af45d99 Author: longlong5330 <60765259+longlong5330@users.noreply.github.com> Date: Mon Aug 31 19:10:05 2020 +0700 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/bot.js b/bot.js new file mode 100644 index 0000000..fcd917b --- /dev/null +++ b/bot.js @@ -0,0 +1,84 @@ +var discord = require('discord.js'); +var fs = require('fs'); +var randomColour = require('randomcolor'); // yes, the creator of this package does not speak the real english +var Config = require('./config.json'); + +class Bot { + constructor(){ + this.servers = require('./servers.json'); + this.discordClient = new discord.Client({sync: true}); + + this.discordClient.on("ready", () => { + //this.client.user.setActivity('TEN RainBow Role !', { type: 'PLAYING' }) + this.initialize();}); + + this.discordClient.on("message", (msg) => {this.processMessage(msg)}); + + this.discordClient.login(Config.discord_token); + } + + initialize() { + this.log("Connected to discord."); + + setInterval(() => { + this.randomizeRoleColors(); + }, Config.randomize_delay*1000); + } + + processMessage(msg) { + if(msg.content.startsWith(">addrole")) { + for(var role of msg.mentions.roles.array()) { + msg.reply("☑️ Added `" + role.name + "` to list of rainbow roles."); + + this.addRainbowRole(msg.guild.id, role.id); + } + } + } + + randomizeRoleColors() { + for(var server in this.servers) { + var liveGuild = this.discordClient.guilds.cache.get(server); + + if (!liveGuild) { + this.error("Guild with ID " + server+ " no longer exists or the bot has been removed from it."); + continue; + } + + for(var role of this.servers[server]) { + var liveRole = liveGuild.roles.cache.get(role); + + liveRole.setColor(randomColour(), "Rainbowbot random role color randomizer."); + } + } + } + + addRainbowRole(guild, role) { + if(this.servers[guild] == undefined) { + this.servers[guild] = []; + } + + for(var existingRole of this.servers[guild]) { + if(existingRole == role) { + return "That role has already been added."; + } + } + + this.servers[guild].push(role); + this.saveServers(); + } + + saveServers() { + fs.writeFileSync("./servers.json", JSON.stringify(this.servers), "utf8"); + this.log("Saved servers file."); + } + + log(message) { + console.log("\x1b[32mINFO\x1b[37m - \x1b[0m" + message); + } + + error(message) { + console.log("\x1b[31mERROR\x1b[37m - \x1b[0m" + message); + } +} + +var instance = new Bot(); \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..7f5f1a4 --- /dev/null +++ b/config.json @@ -0,0 +1,4 @@ +{ + "discord_token": "NzQ5OTAzMTk3NTIyNjI0NTcy.X0yvxg.s_KBFtW7YVkBJzu6pd02bRtwW7o", + "randomize_delay": 60 +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..c6ba2c3 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "rainbowbot", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "randomcolor": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/randomcolor/-/randomcolor-0.5.4.tgz", + "integrity": "sha512-nYd4nmTuuwMFzHL6W+UWR5fNERGZeVauho8mrJDUSXdNDbao4rbrUwhuLgKC/j8VCS5+34Ria8CsTDuBjrIrQA==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..afa1630 --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "rainbowbot", + "version": "1.0.0", + "description": "Randomly changes peoples discord role color.", + "main": "bot.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node bot.js" + }, + "keywords": [ + "rainbow", + "bot", + "discord", + "role" + ], + "author": "Ashleigh Carr", + "license": "MIT", + "dependencies": { + "discord.js": "^11.3.2", + "randomcolor": "^0.5.4" + } +} diff --git a/servers.json b/servers.json new file mode 100644 index 0000000..a17e82e --- /dev/null +++ b/servers.json @@ -0,0 +1 @@ +{"749899474263867535":["749900156299771985"],"749902372544708649":["749902405696487484"]} \ No newline at end of file