mirror of
				https://github.com/keanuplayz/TravBot-v3.git
				synced 2024-08-15 02:33:12 +00:00 
			
		
		
		
	Removed JS structure.
This commit is contained in:
		
							parent
							
								
									d7f2232dc0
								
							
						
					
					
						commit
						a0a322a7ee
					
				
					 18 changed files with 0 additions and 1772 deletions
				
			
		|  | @ -1,3 +0,0 @@ | ||||||
| { |  | ||||||
|     "extends": "tesseract" |  | ||||||
| } |  | ||||||
|  | @ -1,5 +0,0 @@ | ||||||
| { |  | ||||||
|     "prefix": "!!", // Bot Prefix |  | ||||||
|     "token": "<token>", // Bot Token |  | ||||||
|     "owners": ["<id>"] // Array of bot owner IDs |  | ||||||
| } |  | ||||||
							
								
								
									
										1228
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										1228
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										24
									
								
								package.json
									
										
									
									
									
								
							
							
						
						
									
										24
									
								
								package.json
									
										
									
									
									
								
							|  | @ -1,24 +0,0 @@ | ||||||
| { |  | ||||||
|   "name": "d.js-v12-bot", |  | ||||||
|   "version": "0.0.1", |  | ||||||
|   "description": "A Discord bot built on Discord.JS v12", |  | ||||||
|   "main": "src/index", |  | ||||||
|   "scripts": { |  | ||||||
|     "test": "echo \"Error: no test specified\" && exit 1" |  | ||||||
|   }, |  | ||||||
|   "keywords": [ |  | ||||||
|     "discord.js", |  | ||||||
|     "bot" |  | ||||||
|   ], |  | ||||||
|   "author": "Keanu Timmermans", |  | ||||||
|   "license": "Apache-2.0", |  | ||||||
|   "dependencies": { |  | ||||||
|     "discord.js": "^12.2.0", |  | ||||||
|     "moment": "^2.27.0", |  | ||||||
|     "ms": "^2.1.2" |  | ||||||
|   }, |  | ||||||
|   "devDependencies": { |  | ||||||
|     "eslint": "^7.0.0", |  | ||||||
|     "eslint-config-tesseract": "^0.0.2" |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|  | @ -1,16 +0,0 @@ | ||||||
| /* eslint-disable no-unused-vars */ |  | ||||||
| const Command = require('./../Structures/Command.js'); |  | ||||||
| 
 |  | ||||||
| module.exports = class extends Command { |  | ||||||
| 
 |  | ||||||
| 	constructor(...args) { |  | ||||||
| 		super(...args, { |  | ||||||
| 			aliases: ['hallo'] |  | ||||||
| 		}); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	async run(message, args) { |  | ||||||
| 		message.channel.send('Hello'); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
|  | @ -1,49 +0,0 @@ | ||||||
| const Command = require('../../Structures/Command'); |  | ||||||
| const { MessageEmbed, version: djsversion } = require('discord.js'); |  | ||||||
| const { version } = require('../../../package.json'); |  | ||||||
| const { utc } = require('moment'); |  | ||||||
| const os = require('os'); |  | ||||||
| const ms = require('ms'); |  | ||||||
| 
 |  | ||||||
| module.exports = class extends Command { |  | ||||||
| 
 |  | ||||||
| 	constructor(...args) { |  | ||||||
| 		super(...args, { |  | ||||||
| 			aliases: ['info', 'bot', 'botinfo'], |  | ||||||
| 			category: 'Information' |  | ||||||
| 		}); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	run(message) { |  | ||||||
| 		const core = os.cpus()[0]; |  | ||||||
| 		const embed = new MessageEmbed() |  | ||||||
| 			.setThumbnail(this.client.user.displayAvatarURL()) |  | ||||||
| 			.setColor(message.guild.me.displayHexColor || 'BLUE') |  | ||||||
| 			.addField('General', [ |  | ||||||
| 				`**❯ Client:** ${this.client.user.tag} (${this.client.user.id})`, |  | ||||||
| 				`**❯ Commands:** ${this.client.commands.size}`, |  | ||||||
| 				`**❯ Servers:** ${this.client.guilds.cache.size.toLocaleString()}`, |  | ||||||
| 				`**❯ Users:** ${this.client.guilds.cache.reduce((a, b) => a + b.memberCount, 0).toLocaleString()}`, |  | ||||||
| 				`**❯ Channels:** ${this.client.channels.cache.size.toLocaleString()}`, |  | ||||||
| 				`**❯ Creation Date:** ${utc(this.client.user.createdTimestamp).format('Do MMMM YYYY HH:mm:ss')}`, |  | ||||||
| 				`**❯ Node.JS:** ${process.version}`, |  | ||||||
| 				`**❯ Version:** v${version}`, |  | ||||||
| 				`**❯ Discord.JS:** ${djsversion}`, |  | ||||||
| 				'\u200b' |  | ||||||
| 			]) |  | ||||||
| 			.addField('System', [ |  | ||||||
| 				`**❯ Platform:** ${process.platform}`, |  | ||||||
| 				`**❯ Uptime:** ${ms(os.uptime() * 1000, { long: true })}`, |  | ||||||
| 				`**❯ CPU:**`, |  | ||||||
| 				`\u3000 • Cores: ${os.cpus().length}`, |  | ||||||
| 				`\u3000 • Model: ${core.model}`, |  | ||||||
| 				`\u3000 • Speed: ${core.speed}MHz`, |  | ||||||
| 				`**❯ Memory:**`, |  | ||||||
| 				`\u3000 • Total: ${this.client.utils.formatBytes(process.memoryUsage().heapTotal)}`, |  | ||||||
| 				`\u3000 • Used: ${this.client.utils.formatBytes(process.memoryUsage().heapTotal)}` |  | ||||||
| 			]) |  | ||||||
| 			.setTimestamp(); |  | ||||||
| 		message.channel.send(embed); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
|  | @ -1,90 +0,0 @@ | ||||||
| /* eslint-disable no-undef */ |  | ||||||
| /* eslint-disable no-warning-comments */ |  | ||||||
| const Command = require('../../Structures/Command'); |  | ||||||
| const { MessageEmbed } = require('discord.js'); |  | ||||||
| const moment = require('moment'); |  | ||||||
| 
 |  | ||||||
| const filterLevels = { |  | ||||||
| 	DISABLED: 'Off', |  | ||||||
| 	MEMBERS_WITHOUT_ROLES: 'No Role', |  | ||||||
| 	ALL_MEMBERS: 'Everyone' |  | ||||||
| }; |  | ||||||
| const verificationLevels = { |  | ||||||
| 	NONE: 'None', |  | ||||||
| 	LOW: 'Low', |  | ||||||
| 	MEDIUM: 'Medium', |  | ||||||
| 	HIGH: '(╯°□°)╯︵ ┻━┻', |  | ||||||
| 	VERY_HIGH: '┻━┻ ミヽ(ಠ益ಠ)ノ彡┻━┻' |  | ||||||
| }; |  | ||||||
| const regions = { |  | ||||||
| 	brazil: 'Brazil', |  | ||||||
| 	europe: 'Europe', |  | ||||||
| 	hongkong: 'Hong Kong', |  | ||||||
| 	india: 'India', |  | ||||||
| 	japan: 'Japan', |  | ||||||
| 	russia: 'Russia', |  | ||||||
| 	singapore: 'Singapore', |  | ||||||
| 	southafrica: 'South Africa', |  | ||||||
| 	sydney: 'Sydney', |  | ||||||
| 	'us-central': 'US Central', |  | ||||||
| 	'us-east': 'US East', |  | ||||||
| 	'us-west': 'US West', |  | ||||||
| 	'us-south': 'US South' |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| module.exports = class extends Command { |  | ||||||
| 
 |  | ||||||
| 	constructor(...args) { |  | ||||||
| 		super(...args, { |  | ||||||
| 			aliases: ['server', 'guild', 'guildinfo'], |  | ||||||
| 			category: 'Information' |  | ||||||
| 		}); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	async run(message) { |  | ||||||
| 		const roles = message.guild.roles.cache.sort((a, b) => b.position - a.position).map(role => role.toString()); |  | ||||||
| 		const members = message.guild.members.cache; |  | ||||||
| 		const channels = message.guild.channels.cache; |  | ||||||
| 		const emojis = message.guild.emojis.cache; |  | ||||||
| 
 |  | ||||||
| 		const embed = new MessageEmbed() |  | ||||||
| 			.setDescription(`**Guild information for __${message.guild.name}__**`) |  | ||||||
| 			.setColor('BLUE') |  | ||||||
| 			.setThumbnail(message.guild.iconURL({ dynamic: true })) |  | ||||||
| 			.addField('General', [ |  | ||||||
| 				`**❯ Name:** ${message.guild.name}`, |  | ||||||
| 				`**❯ ID:** ${message.guild.id}`, |  | ||||||
| 				`**❯ Owner:** ${message.guild.owner.user.tag} (${message.guild.ownerID})`, |  | ||||||
| 				`**❯ Region:** ${regions[message.guild.region]}`, |  | ||||||
| 				`**❯ Boost Tier:** ${message.guild.premiumTier ? `Tier ${message.guild.premiumTier}` : 'None'}`, |  | ||||||
| 				`**❯ Explicit Filter:** ${filterLevels[message.guild.explicitContentFilter]}`, |  | ||||||
| 				`**❯ Verification Level:** ${verificationLevels[message.guild.verificationLevel]}`, |  | ||||||
| 				`**❯ Time Created:** ${moment(message.guild.createdTimestamp).format('LT')} ${moment(message.guild.createdTimestamp).format('LL')} ${moment(message.guild.createdTimestamp).fromNow()})`, |  | ||||||
| 				'\u200b' |  | ||||||
| 			]) |  | ||||||
| 			.addField('Statistics', [ |  | ||||||
| 				`**❯ Role Count:** ${roles.length}`, |  | ||||||
| 				`**❯ Emoji Count:** ${emojis.size}`, |  | ||||||
| 				`**❯ Regular Emoji Count:** ${emojis.filter(emoji => !emoji.animated).size}`, |  | ||||||
| 				`**❯ Animated Emoji Count:** ${emojis.filter(emoji => emoji.animated).size}`, |  | ||||||
| 				`**❯ Member Count:** ${message.guild.memberCount}`, |  | ||||||
| 				`**❯ Humans:** ${members.filter(member => !member.user.bot).size}`, |  | ||||||
| 				`**❯ Bots:** ${members.filter(member => member.user.bot).size}`, |  | ||||||
| 				`**❯ Text Channels:** ${channels.filter(channel => channel.type === 'text')}`, |  | ||||||
| 				`**❯ Voice Channels:** ${channels.filter(channel => channel.type === 'voice')}`, |  | ||||||
| 				`**❯ Boost Count:** ${message.guild.premiumSubscriptionCount || '0'}`, |  | ||||||
| 				`\u200b` |  | ||||||
| 			]) |  | ||||||
| 			.addField('Presence', [ |  | ||||||
| 				`**❯ Online:** ${members.filter(member => member.presence.status === 'online').size}`, |  | ||||||
| 				`**❯ Idle:** ${members.filter(member => member.presence.status === 'idle').size}`, |  | ||||||
| 				`**❯ Do Not Disturb:** ${members.filter(member => member.presence.stats === 'dnd').size}`, |  | ||||||
| 				`**❯ Offline:** ${members.filter(member => member.presence.status === 'offline').size}`, |  | ||||||
| 				'\u200b' |  | ||||||
| 			]) |  | ||||||
| 			.addField(`Roles [${roles.length - 1}]`, roles.length < 10 ? roles.join(', ') : roles.length > 10 ? this.client.utils.trimArray(roles) : 'None') |  | ||||||
| 			.setTimestamp(); |  | ||||||
| 		message.channel.send(embed); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
|  | @ -1,60 +0,0 @@ | ||||||
| const Command = require('../../Structures/Command'); |  | ||||||
| const { MessageEmbed } = require('discord.js'); |  | ||||||
| const moment = require('moment'); |  | ||||||
| 
 |  | ||||||
| const flags = { |  | ||||||
| 	DISCORD_EMPLOYEE: 'Discord Employee', |  | ||||||
| 	DISCORD_PARTNER: 'Discord Partner', |  | ||||||
| 	BUGHUNTER_LEVEL_1: 'Bug Hunter (Level 1)', |  | ||||||
| 	BUGHUNTER_LEVEL_2: 'Bug Hunter (Level 2)', |  | ||||||
| 	HYPESQUAD_EVENTS: 'HypeSquad Events', |  | ||||||
| 	HOUSE_BRAVERY: 'House of Bravery', |  | ||||||
| 	HOUSE_BRILLIANCE: 'House of Brilliance', |  | ||||||
| 	HOUSE_BALANCE: 'House of Balance', |  | ||||||
| 	EARLY_SUPPORTER: 'Early Supporter', |  | ||||||
| 	TEAM_USER: 'Team User', |  | ||||||
| 	SYSTEM: 'System', |  | ||||||
| 	VERIFIED_BOT: 'Verified Bot', |  | ||||||
| 	VERIFIED_DEVELOPER: 'Verified Bot Developer' |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| module.exports = class extends Command { |  | ||||||
| 
 |  | ||||||
| 	constructor(...args) { |  | ||||||
| 		super(...args, { |  | ||||||
| 			aliases: ['user', 'ui'], |  | ||||||
| 			category: 'Information' |  | ||||||
| 		}); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	async run(message, [target]) { |  | ||||||
| 		const member = message.mentions.members.last() || message.guild.members.cache.get(target) || message.member; |  | ||||||
| 		const roles = member.roles.cache |  | ||||||
| 			.sort((a, b) => b.position - a.position) |  | ||||||
| 			.map(role => role.toString()) |  | ||||||
| 			.slice(0, -1); |  | ||||||
| 		const userFlags = member.user.flags.toArray(); |  | ||||||
| 
 |  | ||||||
| 		const embed = new MessageEmbed() |  | ||||||
| 			.setThumbnail(member.user.displayAvatarURL({ dynamic: true, size: 512 })) |  | ||||||
| 			.setColor(member.displayHexColor || 'BLUE') |  | ||||||
| 			.addField('User', [ |  | ||||||
| 				`**❯ Username:** ${member.user.username}`, |  | ||||||
| 				`**❯ Discriminator:** ${member.user.discriminator}`, |  | ||||||
| 				`**❯ ID:** ${member.id}`, |  | ||||||
| 				`**❯ Flags:** ${userFlags.length ? userFlags.map(flag => flags[flag]).join(', ') : 'None'}`, |  | ||||||
| 				`**❯ Avatar:** [Link to avatar](${member.user.displayAvatarURL({ dynamic: true })})`, |  | ||||||
| 				`**❯ Time Created:** ${moment(member.user.createdTimestamp).format('LT')} ${moment(member.user.createdTimestamp).format('LL')} ${moment(member.user.createdTimestamp).fromNow()}`, |  | ||||||
| 				`**❯ Status:** ${member.user.presence.status}`, |  | ||||||
| 				`**❯ Game:** ${member.user.presence.game || 'Not playing a game.'}` |  | ||||||
| 			]) |  | ||||||
| 			.addField('Member', [ |  | ||||||
| 				`**❯ Highest Role:** ${member.roles.highest.id === message.guild.id ? 'None' : member.roles.highest.name}`, |  | ||||||
| 				`**❯ Server Join Date:** ${moment(member.joinedAt).format('LL LTS')}`, |  | ||||||
| 				`**❯ Hoist Role:** ${member.roles.hoist ? member.roles.hoist.name : 'None'}`, |  | ||||||
| 				`**❯ Roles:** [${roles.length}]: ${roles.length < 10 ? roles.join(', ') : roles.length > 10 ? this.client.utils.trimArray(roles) : 'None'}`, |  | ||||||
| 			]); |  | ||||||
| 		return message.channel.send(embed); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
|  | @ -1,56 +0,0 @@ | ||||||
| const Command = require('../../Structures/Command'); |  | ||||||
| const { MessageEmbed } = require('discord.js'); |  | ||||||
| 
 |  | ||||||
| module.exports = class extends Command { |  | ||||||
| 
 |  | ||||||
| 	constructor(...args) { |  | ||||||
| 		super(...args, { |  | ||||||
| 			aliases: ['help', 'halp'], |  | ||||||
| 			category: 'Utilities' |  | ||||||
| 		}); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	async run(message, [command]) { |  | ||||||
| 		const embed = new MessageEmbed() |  | ||||||
| 			.setColor('BLUE') |  | ||||||
| 			.setAuthor(`${message.guild.name} Help Menu`, message.guild.iconURL({ dynamic: true })) |  | ||||||
| 			.setThumbnail(this.client.user.displayAvatarURL()) |  | ||||||
| 			.setFooter(`Requested by ${message.author.username}`, message.author.displayAvatarURL({ dynamic: true })) |  | ||||||
| 			.setTimestamp(); |  | ||||||
| 
 |  | ||||||
| 		if (command) { |  | ||||||
| 			const cmd = this.client.commands.get(command) || this.client.command.get(this.aliases.get(command)); |  | ||||||
| 
 |  | ||||||
| 			if (!cmd) return message.channel.send(`\`${command}\` is not a valid command.`); |  | ||||||
| 
 |  | ||||||
| 			embed.setAuthor(`${this.client.utils.capitalise(cmd.name)} Command Help`, this.client.user.displayAvatarURL()); |  | ||||||
| 			embed.setDescription([ |  | ||||||
| 				`**❯ Aliases:** ${cmd.aliases.length ? cmd.aliases.map(alias => `\`${alias}\``).join(' ') : 'No Aliases'}`, |  | ||||||
| 				`**❯ Description:** ${cmd.description}`, |  | ||||||
| 				`**❯ Category:** ${cmd.category}`, |  | ||||||
| 				`**❯ Usage:** ${cmd.usage}` |  | ||||||
| 			]); |  | ||||||
| 
 |  | ||||||
| 			return message.channel.send(embed); |  | ||||||
| 		} else { |  | ||||||
| 			embed.setDescription([ |  | ||||||
| 				`These are the available commands for ${message.guild.name}`, |  | ||||||
| 				`This bot's prefix is: ${this.client.prefix}`, |  | ||||||
| 				`Command Parameters: \`<>\` is a strict & \`[]\` is optional` |  | ||||||
| 			]); |  | ||||||
| 			let categories; |  | ||||||
| 			if (!this.client.owners.includes(message.author.id)) { |  | ||||||
| 				categories = this.client.utils.removeDuplicates(this.client.commands.filter(cmd => cmd.category !== 'Owner').map(cmd => cmd.category)); |  | ||||||
| 			} else { |  | ||||||
| 				categories = this.client.utils.removeDuplicates(this.client.commands.map(cmd => cmd.category)); |  | ||||||
| 			} |  | ||||||
| 
 |  | ||||||
| 			for (const category of categories) { |  | ||||||
| 				embed.addField(`**${this.client.utils.capitalise(category)}**`, this.client.commands.filter(cmd => |  | ||||||
| 					cmd.category === category).map(cmd => `\`${cmd.name}\``).join(' ')); |  | ||||||
| 			} |  | ||||||
| 			return message.channel.send(embed); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
|  | @ -1,22 +0,0 @@ | ||||||
| const Command = require('../../Structures/Command'); |  | ||||||
| 
 |  | ||||||
| module.exports = class extends Command { |  | ||||||
| 
 |  | ||||||
| 	constructor(...args) { |  | ||||||
| 		super(...args, { |  | ||||||
| 			aliases: ['pong'], |  | ||||||
| 			category: 'Utilities' |  | ||||||
| 		}); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	async run(message) { |  | ||||||
| 		const msg = await message.channel.send('Pinging...'); |  | ||||||
| 
 |  | ||||||
| 		const latency = msg.createdTimestamp - message.createdTimestamp; |  | ||||||
| 		const choices = ['Is this really my ping?', "Is this okay? I can't look!", "I hope it isn't bad!"]; |  | ||||||
| 		const response = choices[Math.floor(Math.random() * choices.length)]; |  | ||||||
| 
 |  | ||||||
| 		msg.edit(`${response} - Bot Latency: \`${latency}ms\`, API Latency: \`${Math.round(this.client.ws.ping)}ms\``); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
|  | @ -1,17 +0,0 @@ | ||||||
| const Command = require('../../Structures/Command.js'); |  | ||||||
| const ms = require('ms'); |  | ||||||
| 
 |  | ||||||
| module.exports = class extends Command { |  | ||||||
| 
 |  | ||||||
| 	constructor(...args) { |  | ||||||
| 		super(...args, { |  | ||||||
| 			aliases: ['uptime'], |  | ||||||
| 			category: 'Utilities' |  | ||||||
| 		}); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	async run(message) { |  | ||||||
| 		message.channel.send(`My uptime is \`${ms(this.client.uptime, { long: true })}\``); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
|  | @ -1,25 +0,0 @@ | ||||||
| const Event = require('../../Structures/Event'); |  | ||||||
| 
 |  | ||||||
| module.exports = class extends Event { |  | ||||||
| 
 |  | ||||||
| 	async run(message) { |  | ||||||
| 		const mentionRegex = RegExp(`^<@!${this.client.user.id}>$`); |  | ||||||
| 		const mentionRegexPrefix = RegExp(`^<@!${this.client.user.id}> `); |  | ||||||
| 
 |  | ||||||
| 		if (!message.guild || message.author.bot) return; |  | ||||||
| 
 |  | ||||||
| 		if (message.content.match(mentionRegex)) message.channel.send(`My prefix for ${message.guild.name} is \`${this.client.prefix}\`.`); |  | ||||||
| 
 |  | ||||||
| 		const prefix = message.content.match(mentionRegexPrefix) ? |  | ||||||
| 			message.content.match(mentionRegexPrefix)[0] : this.client.prefix; |  | ||||||
| 
 |  | ||||||
| 		// eslint-disable-next-line no-unused-vars
 |  | ||||||
| 		const [cmd, ...args] = message.content.slice(prefix.length).trim().split(/ +/g); |  | ||||||
| 
 |  | ||||||
| 		const command = this.client.commands.get(cmd.toLowerCase()) || this.client.commands.get(this.client.aliases.get(cmd.toLowerCase())); |  | ||||||
| 		if (command) { |  | ||||||
| 			command.run(message, args); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
|  | @ -1,19 +0,0 @@ | ||||||
| const Event = require('../Structures/Event'); |  | ||||||
| 
 |  | ||||||
| module.exports = class extends Event { |  | ||||||
| 
 |  | ||||||
| 	constructor(...args) { |  | ||||||
| 		super(...args, { |  | ||||||
| 			once: true |  | ||||||
| 		}); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	run() { |  | ||||||
| 		console.log([ |  | ||||||
| 			`Logged in as ${this.client.user.tag}`, |  | ||||||
| 			`Loaded ${this.client.commands.size} commands.`, |  | ||||||
| 			`Loaded ${this.client.events.size} events.` |  | ||||||
| 		].join('\n')); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
|  | @ -1,40 +0,0 @@ | ||||||
| const { Client, Collection } = require('discord.js'); |  | ||||||
| const Util = require('./Util.js'); |  | ||||||
| 
 |  | ||||||
| module.exports = class BotClient extends Client { |  | ||||||
| 
 |  | ||||||
| 	constructor(options = {}) { |  | ||||||
| 		super({ |  | ||||||
| 			disableMentions: 'everyone' |  | ||||||
| 		}); |  | ||||||
| 		this.validate(options); |  | ||||||
| 
 |  | ||||||
| 		this.commands = new Collection(); |  | ||||||
| 
 |  | ||||||
| 		this.events = new Collection(); |  | ||||||
| 
 |  | ||||||
| 		this.aliases = new Collection(); |  | ||||||
| 
 |  | ||||||
| 		this.utils = new Util(this); |  | ||||||
| 
 |  | ||||||
| 		this.owners = options.owners; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	validate(options) { |  | ||||||
| 		if (typeof options !== 'object') throw new TypeError('Options should be a type of Object.'); |  | ||||||
| 
 |  | ||||||
| 		if (!options.token) throw new Error('You must pass a token for the client.'); |  | ||||||
| 		this.token = options.token; |  | ||||||
| 
 |  | ||||||
| 		if (!options.prefix) throw new Error('You must pass a prefix for the client.'); |  | ||||||
| 		if (typeof options.prefix !== 'string') throw new TypeError('Prefix should be a type of String.'); |  | ||||||
| 		this.prefix = options.prefix; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	async start(token = this.token) { |  | ||||||
| 		this.utils.loadCommands(); |  | ||||||
| 		this.utils.loadEvents(); |  | ||||||
| 		super.login(token); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
|  | @ -1,17 +0,0 @@ | ||||||
| module.exports = class Command { |  | ||||||
| 
 |  | ||||||
| 	constructor(client, name, options = {}) { |  | ||||||
| 		this.client = client; |  | ||||||
| 		this.name = options.name || name; |  | ||||||
| 		this.aliases = options.aliases || []; |  | ||||||
| 		this.description = options.description || 'No description provided.'; |  | ||||||
| 		this.category = options.category || 'Miscellaneous'; |  | ||||||
| 		this.usage = `${this.client.prefix}${this.name} ${options.usage || ''}`.trim(); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	// eslint-disable-next-line no-unused-vars
 |  | ||||||
| 	async run(message, args) { |  | ||||||
| 		throw new Error(`Command ${this.name} doesn't provide a run method.`); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
|  | @ -1,15 +0,0 @@ | ||||||
| /* eslint-disable no-unused-vars */ |  | ||||||
| module.exports = class Event { |  | ||||||
| 
 |  | ||||||
| 	constructor(client, name, options = {}) { |  | ||||||
| 		this.name = name; |  | ||||||
| 		this.client = client; |  | ||||||
| 		this.type = options.once ? 'once' : 'on'; |  | ||||||
| 		this.emitter = (typeof options.emitter === 'string' ? this.client[options.emitter] : options.emitter) || this.client; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	async run(...args) { |  | ||||||
| 		throw new Error(`The run method has not been implemented in ${this.name}`); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
|  | @ -1,81 +0,0 @@ | ||||||
| const path = require('path'); |  | ||||||
| const { promisify } = require('util'); |  | ||||||
| const glob = promisify(require('glob')); |  | ||||||
| const Command = require('./Command.js'); |  | ||||||
| const Event = require('./Event.js'); |  | ||||||
| 
 |  | ||||||
| module.exports = class Util { |  | ||||||
| 
 |  | ||||||
| 	constructor(client) { |  | ||||||
| 		this.client = client; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	isClass(input) { |  | ||||||
| 		return typeof input === 'function' && |  | ||||||
|         typeof input.prototype === 'object' && |  | ||||||
|         input.toString().substring(0, 5) === 'class'; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	get directory() { |  | ||||||
| 		return `${path.dirname(require.main.filename)}${path.sep}`; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	trimArray(arr, maxLen = 10) { |  | ||||||
| 		if (arr.length > maxLen) { |  | ||||||
| 			const len = arr.length - maxLen; |  | ||||||
| 			arr = arr.slice(0, maxLen); |  | ||||||
| 			arr.push(`${len} more...`); |  | ||||||
| 		} |  | ||||||
| 		return arr; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	formatBytes(bytes) { |  | ||||||
| 		if (bytes === 0) return '0 Bytes'; |  | ||||||
| 		const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; |  | ||||||
| 		const i = Math.floor(Math.log(bytes) / Math.log(1024)); |  | ||||||
| 		return `${parseFloat((bytes / Math.pow(1024, i)).toFixed(2))} ${sizes[i]}`; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	removeDuplicates(arr) { |  | ||||||
| 		return [...new Set(arr)]; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	capitalise(string) { |  | ||||||
| 		return string.split(' ').map(str => str.slice(0, 1).toUpperCase() + str.slice(1)).join(' '); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	async loadCommands() { |  | ||||||
| 		return glob(`${this.directory}commands/**/*.js`).then(commands => { |  | ||||||
| 			for (const commandFile of commands) { |  | ||||||
| 				delete require.cache[commandFile]; |  | ||||||
| 				const { name } = path.parse(commandFile); |  | ||||||
| 				const File = require(commandFile); |  | ||||||
| 				if (!this.isClass(File)) throw new TypeError(`Command ${name} doesn't export a class.`); |  | ||||||
| 				const command = new File(this.client, name.toLowerCase()); |  | ||||||
| 				if (!(command instanceof Command)) throw new TypeError(`Command ${name} doesn't belong in commands.`); |  | ||||||
| 				this.client.commands.set(command.name, command); |  | ||||||
| 				if (command.aliases.length) { |  | ||||||
| 					for (const alias of command.aliases) { |  | ||||||
| 						this.client.aliases.set(alias, command.name); |  | ||||||
| 					} |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		}); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	async loadEvents() { |  | ||||||
| 		return glob(`${this.directory}events/**/*.js`).then(events => { |  | ||||||
| 			for (const eventFile of events) { |  | ||||||
| 				delete require.cache[eventFile]; |  | ||||||
| 				const { name } = path.parse(eventFile); |  | ||||||
| 				const File = require(eventFile); |  | ||||||
| 				if (!this.isClass(File)) throw new TypeError(`Event ${name} doesn't export a class!`); |  | ||||||
| 				const event = new File(this.client, name.toLowerCase()); |  | ||||||
| 				if (!(event instanceof Event)) throw new TypeError(`Event ${name} doesn't belong in the Events Directory.`); |  | ||||||
| 				this.client.events.set(event.name, event); |  | ||||||
| 				event.emitter[event.type](name, (...args) => event.run(...args)); |  | ||||||
| 			} |  | ||||||
| 		}); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| }; |  | ||||||
|  | @ -1,5 +0,0 @@ | ||||||
| const BotClient = require('./Structures/BotClient'); |  | ||||||
| const config = require('../config.json'); |  | ||||||
| 
 |  | ||||||
| const client = new BotClient(config); |  | ||||||
| client.start(); |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue