├── LICENSE ├── README.md ├── commands ├── ban.js ├── kick.js ├── mute.js ├── ping.js └── warn.js ├── config.json ├── index.js └── package.json /LICENSE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Aunto Development 2 | ## What is this? 3 | This is code created, and put into the public domain to help people with their projects and learn. You can find tutorials on [my YouTube channel](https://youtube.com/channel/UC4VkJTVWW7mZ32yxsZOJupg) that this code was made for. 4 | 5 | ## What can I do with this code? 6 | You can distribute it as much as you like, this code has been voluntarily put into public domain (more information [here](https://github.com/sysollie/tutorials/blob/master/LICENSE)). 7 | 8 | ## What do I need to run this code? 9 | ### Node.JS 10 | Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. 11 | [Website](https://nodejs.org) 12 | 13 | ### Discord.JS 14 | A powerful library for interacting with the Discord API. 15 | [NPM](https://npmjs.com/package/discord.js) 16 | [Website](https://discord.js.org) 17 | 18 | ### MS 19 | Use this package to easily convert various time formats to milliseconds. 20 | [NPM](https://npmjs.com/package/ms) 21 | 22 | ## Getting started 23 | To get install all needed packages, use `npm installall`. You **must** put a Discord **bot** token in `config.json`. Once you've done that, you can use `npm start` to start the bot. 24 | 25 | > Do not put a user account token in `config.json`. [Selfbotting is against Discord's Terms Of Services and you risk account termination](https://support.discord.com/hc/en-us/articles/115002192352-Automated-user-accounts-self-bots) by using one. 26 | -------------------------------------------------------------------------------- /commands/ban.js: -------------------------------------------------------------------------------- 1 | var Discord = require('discord.js'); 2 | 3 | exports.run = async(client, msg, args) => { 4 | if(!msg.member.hasPermission('BAN_MEMBERS')) return msg.reply('You can\'t use that!'); 5 | 6 | var user = msg.mentions.users.first(); 7 | if(!user) return msg.reply('You didn\'t mention anyone!'); 8 | 9 | var member; 10 | 11 | try { 12 | member = await msg.guild.members.fetch(user); 13 | } catch(err) { 14 | member = null; 15 | } 16 | 17 | if(member){ 18 | if(member.hasPermission('MANAGE_MESSAGES')) return msg.reply('You cannot ban this person!'); 19 | } 20 | 21 | var reason = args.splice(1).join(' '); 22 | if(!reason) return msg.reply('You need to give a reason!'); 23 | 24 | var channel = msg.guild.channels.cache.find(c => c.name === 'potato'); 25 | 26 | var log = new Discord.MessageEmbed() 27 | .setTitle('User Banned') 28 | .addField('User:', user, true) 29 | .addField('By:', msg.author, true) 30 | .addField('Reason:', reason) 31 | channel.send(log); 32 | 33 | var embed = new Discord.MessageEmbed() 34 | .setTitle('You were banned!') 35 | .setDescription(reason); 36 | 37 | try { 38 | await user.send(embed); 39 | } catch(err) { 40 | console.warn(err); 41 | } 42 | 43 | msg.guild.members.ban(user); // This should not be user.id like I said in my video. I made a mistake. Sorry! :) 44 | 45 | msg.channel.send(`**${user}** has been banned by **${msg.author}**!`); 46 | } -------------------------------------------------------------------------------- /commands/kick.js: -------------------------------------------------------------------------------- 1 | var Discord = require('discord.js'); 2 | 3 | exports.run = async(client, msg, args) => { 4 | if(!msg.member.hasPermission('KICK_MEMBERS')) return msg.reply('You can\'t use that!'); 5 | 6 | var user = msg.mentions.users.first(); 7 | if(!user) return msg.reply('You didn\'t mention anyone!'); 8 | 9 | var member; 10 | 11 | try { 12 | member = await msg.guild.members.fetch(user); 13 | } catch(err) { 14 | member = null; 15 | } 16 | 17 | if(!member) return msg.reply('They aren\'t in the server!'); 18 | if(member.hasPermission('MANAGE_MESSAGES')) return msg.reply('You cannot kick this person!'); 19 | 20 | var reason = args.splice(1).join(' '); 21 | if(!reason) return msg.reply('You need to give a reason!'); 22 | 23 | var channel = msg.guild.channels.cache.find(c => c.name === 'potato'); 24 | 25 | var log = new Discord.MessageEmbed() 26 | .setTitle('User Kicked') 27 | .addField('User:', user, true) 28 | .addField('By:', msg.author, true) 29 | .addField('Reason:', reason) 30 | channel.send(log); 31 | 32 | var embed = new Discord.MessageEmbed() 33 | .setTitle('You were kicked!') 34 | .setDescription(reason); 35 | 36 | try { 37 | await user.send(embed); 38 | } catch(err) { 39 | console.warn(err); 40 | } 41 | 42 | member.kick(reason); 43 | 44 | msg.channel.send(`**${user}** has been kicked by **${msg.author}**!`); 45 | } -------------------------------------------------------------------------------- /commands/mute.js: -------------------------------------------------------------------------------- 1 | var Discord = require('discord.js'); 2 | var ms = require('ms'); 3 | 4 | exports.run = async(client, msg, args) => { 5 | if(!msg.member.hasPermission('MANAGE_MESSAGES')) return msg.reply('You can\'t use that!'); 6 | 7 | var user = msg.mentions.users.first(); 8 | if(!user) return msg.reply('You didn\'t mention anyone!'); 9 | 10 | var member; 11 | 12 | try { 13 | member = await msg.guild.members.fetch(user); 14 | } catch(err) { 15 | member = null; 16 | } 17 | 18 | if(!member) return msg.reply('They aren\'t in the server!'); 19 | if(member.hasPermission('MANAGE_MESSAGES')) return msg.reply('You cannot mute that person!'); 20 | 21 | var rawTime = args[1]; 22 | var time = ms(rawTime); 23 | if(!time) return msg.reply('You didn\'t specify a time!'); 24 | 25 | var reason = args.splice(2).join(' '); 26 | if(!reason) return msg.reply('You need to give a reason!'); 27 | 28 | var channel = msg.guild.channels.cache.find(c => c.name === 'potato'); 29 | 30 | var log = new Discord.MessageEmbed() 31 | .setTitle('User Muted') 32 | .addField('User:', user, true) 33 | .addField('By:', msg.author, true) 34 | .addField('Expires:', rawTime) 35 | .addField('Reason:', reason) 36 | channel.send(log); 37 | 38 | var embed = new Discord.MessageEmbed() 39 | .setTitle('You were muted!') 40 | .addField('Expires:', rawTime, true) 41 | .addField('Reason:', reason, true); 42 | 43 | try { 44 | user.send(embed); 45 | } catch(err) { 46 | console.warn(err); 47 | } 48 | 49 | var role = msg.guild.roles.cache.find(r => r.name === 'Muted'); 50 | 51 | member.roles.add(role); 52 | 53 | setTimeout(async() => { 54 | member.roles.remove(role); 55 | }, time); 56 | 57 | msg.channel.send(`**${user}** has been muted by **${msg.author}** for **${rawTime}**!`); 58 | } -------------------------------------------------------------------------------- /commands/ping.js: -------------------------------------------------------------------------------- 1 | exports.run = async(client, msg, args) => { 2 | msg.channel.send(`Pong! ${client.ws.ping}ms`); 3 | } 4 | -------------------------------------------------------------------------------- /commands/warn.js: -------------------------------------------------------------------------------- 1 | var Discord = require('discord.js'); 2 | 3 | exports.run = async(client, msg, args) => { 4 | if(!msg.member.hasPermission('MANAGE_MESSAGES')) return msg.reply('You can\'t use that!'); 5 | 6 | var user = msg.mentions.users.first(); 7 | if(!user) return msg.reply('You didn\'t mention anyone!'); 8 | 9 | var member; 10 | 11 | try { 12 | member = await msg.guild.members.fetch(user); 13 | } catch(err) { 14 | member = null; 15 | } 16 | 17 | if(!member) return msg.reply('They aren\'t in the server!'); 18 | 19 | var reason = args.splice(1).join(' '); 20 | if(!reason) return msg.reply('You need to give a reason!'); 21 | 22 | var channel = msg.guild.channels.cache.find(c => c.name === 'potato'); 23 | 24 | var log = new Discord.MessageEmbed() 25 | .setTitle('User Warned') 26 | .addField('User:', user, true) 27 | .addField('By:', msg.author, true) 28 | .addField('Reason:', reason) 29 | channel.send(log); 30 | 31 | var embed = new Discord.MessageEmbed() 32 | .setTitle('You were warned!') 33 | .setDescription(reason); 34 | 35 | try { 36 | user.send(embed); 37 | } catch(err) { 38 | console.warn(err); 39 | } 40 | 41 | msg.channel.send(`**${user}** has been warned by **${msg.author}**!`); 42 | } -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "token": "some_awesome_token", 3 | "prefix": "!" 4 | } -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /* 2 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 3 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 4 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 5 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 6 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 7 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 8 | OTHER DEALINGS IN THE SOFTWARE. 9 | */ 10 | 11 | var config = require('./config.json'); 12 | var Discord = require('discord.js'); 13 | var client = new Discord.Client(); 14 | 15 | client.on('ready', async() => { 16 | console.log('Hello!'); 17 | }); 18 | 19 | client.on('message', async(msg) => { 20 | if(msg.author.bot) return; 21 | if(!msg.guild) return; 22 | 23 | var prefix = config.prefix; 24 | if(!msg.content.toLowerCase().startsWith(prefix)) return; 25 | 26 | var args = msg.content.split(' '); 27 | var cmd = args.shift().slice(prefix.length).toLowerCase(); 28 | 29 | try { 30 | var file = require(`./commands/${cmd}.js`); 31 | file.run(client, msg, args); 32 | } catch(err) { 33 | console.warn(err); 34 | } 35 | }); 36 | 37 | client.login(config.token); 38 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bot", 3 | "version": "1.0.0", 4 | "description": "A template Discord bot :)", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js", 8 | "installall": "npm install build-essentials && npm install discord.js && npm install opusscript && npm install ms" 9 | }, 10 | "author": "sysollie", 11 | "license": "The Unlicense", 12 | "dependencies": { 13 | "discord.js": "^12.2.0", 14 | "ms": "^2.1.2" 15 | } 16 | } 17 | --------------------------------------------------------------------------------