├── .github └── FUNDING.yml ├── .replit ├── Procfile ├── README.md ├── SECURITY.md ├── application.yml ├── botconfig.json ├── colours.json ├── commands ├── economy │ ├── balance.js │ ├── coinflip.js │ ├── daily.js │ ├── deleteuser.js │ ├── dice.js │ ├── leaderboard.js │ ├── slot.js │ ├── transfer.js │ └── work.js ├── games │ ├── 8ball.js │ ├── flipword.js │ ├── kill.js │ ├── love.js │ ├── reverse.js │ └── rps.js ├── image │ ├── alpaca.js │ ├── cat.js │ ├── dog.js │ ├── llama.js │ ├── meme.js │ ├── pepe.js │ └── seal.js ├── miscellaneous │ ├── avatar.js │ ├── botinfo.js │ ├── cnjoke.js │ ├── contact.js │ ├── help.js │ ├── instagram.js │ ├── joke.js │ ├── myinfo.js │ ├── overwatch.js │ ├── ping.js │ ├── rate.js │ ├── report.js │ ├── roleinfo.js │ ├── serverinfo.js │ ├── stats.js │ ├── uptime.js │ ├── weather.js │ └── yomamma.js ├── moderation │ ├── addrole.js │ ├── ban.js │ ├── clear.js │ ├── kick.js │ ├── mute.js │ ├── removerole.js │ ├── say.js │ ├── unban.js │ └── unmute.js └── owner │ └── eval.js ├── database.sqlite ├── events ├── client │ ├── disconnect.js │ ├── error.js │ ├── ready.js │ ├── reconnecting.js │ └── warn.js └── guild │ └── message.js ├── function.js ├── giveaways.json ├── handlers ├── command.js ├── console.js └── event.js ├── index.js ├── package-lock.json ├── package.json ├── shrinkwrap.yaml ├── start.bat └── util └── eventHandler.js /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | patreon: alixbot 4 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 5 | -------------------------------------------------------------------------------- /.replit: -------------------------------------------------------------------------------- 1 | language = "nodejs" 2 | run = "node index.js" 3 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | worker: node index.js 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Alix-Beta 2 | 3 | # Alix Beta 4 | 5 | [![Run on Repl.it](https://repl.it/badge/github/ayaan1005/Alix-Beta)](https://repl.it/github/ayaan1005/Alix-Beta) 6 | [![](https://img.shields.io/discord/565048515357835264.svg?logo=discord&colorB=7289DA)](https://bot.alix.gq) 7 | [![](https://top.gg/api/widget/status/693846748824862770.svg)](https://top.gg/bot/693846748824862770/vote) 8 | [![](https://img.shields.io/badge/discord.js-v12.0.0--dev-blue.svg?logo=npm)](https://github.com/discordjs) 9 | [![](https://img.shields.io/badge/patreon-donate-orange.svg)](https://www.patreon.com/alixbot) 10 | 11 | > This bot is used by more than 100k+ Discord users and more than 120+ servers. 12 | 13 | Alix Beta Is A Open Sourced Discord Bot Can Use In Many Was Like To Make Server Full Moderation Filled, And Fun. Coded With JavaScript [Discord.js](https://discord.js.org) And [Quick.db](https://quickdb.js.org/) Made By [AyaanDEV](https://github.com/Ayaan-GuitarHost/) 14 |
Feel free to add a star ⭐ to the repository to promote the project! 15 | 16 | ## Bot Setup 17 | 18 | Check Bot Config File [Here](https://github.com/ayaan1005/Alix-Beta/blob/glitch/botconfig.json) 19 | 20 | Example BotConfig File - 21 | ``` 22 | { 23 | "token": "Your Bot Token", 24 | "prefix": "Bot Prefix", 25 | "report_channelid": "Channel ID Where Bug Reports Comes", 26 | "support_server": "Your Bots Support Server", 27 | "main_ownerid": "Your Id", 28 | "InstaToken": "Your Insta Token Here", 29 | "extra_ownerid": [ 30 | "Owner 1", 31 | "Owner 2" 32 | ] 33 | } 34 | 35 | ``` 36 | 37 | ## Upcoming Updates 38 | 39 | ### BUGS FIX 40 | ### MORE COMMAND ADD 41 | ### DASHBOARD 42 | 43 | ## Links 44 | 45 | * [Commands List](https://allix.glitch.me/commands) 46 | * [F.A.Q](https://discord.gg/qBbgnxs) 47 | * [Discord](https://alix.glitch.me/community) 48 | * [Github](https://github.com/ayaan1005/Alix-Beta) 49 | * [Dashboard](https://alix.glitch.me/dashboard) 50 | * [Embed Gen](https://alix.glitch.me/embed) 51 | 52 | ## License 53 | 54 | Alix Beta is licensed under the GPL 3.0 license. See the file `LICENSE` for more information. If you plan to use any part of this source code in your own bot, I would be grateful if you would include some form of credit somewhere. 55 | 56 | ## Security 57 | 58 | For secutiry purposes check `SECURITY.md` 59 | 60 | ## Top.GG 61 | 62 | Vote Alix And Have 24h Free Credit Of Premium Usage `SOON!`

63 | 64 | Alix 65 | 66 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Use this section to tell people about which versions of your project are 6 | currently being supported with security updates. 7 | 8 | | Version | Supported | 9 | | ------- | ------------------ | 10 | | 5.1.x | :white_check_mark: | 11 | | 5.0.x | :x: | 12 | | 4.0.x | :white_check_mark: | 13 | | < 4.0 | :x: | 14 | 15 | ## Reporting a Vulnerability 16 | 17 | Use this section to tell people how to report a vulnerability. 18 | 19 | Tell them where to go, how often they can expect to get an update on a 20 | reported vulnerability, what to expect if the vulnerability is accepted or 21 | declined, etc. 22 | -------------------------------------------------------------------------------- /application.yml: -------------------------------------------------------------------------------- 1 | server: # REST and WS server 2 | port: 2333 3 | address: 0.0.0.0 4 | lavalink: 5 | server: 6 | password: "groot" 7 | sources: 8 | youtube: true 9 | bandcamp: true 10 | soundcloud: true 11 | twitch: true 12 | vimeo: true 13 | http: true 14 | local: false 15 | bufferDurationMs: 400 # The duration of the NAS buffer. Higher values fare better against longer GC pauses. Minimum of 40ms, lower values may introduce pauses. 16 | frameBufferDurationMs: 1000 # How many milliseconds of audio to keep buffered 17 | opusEncodingQuality: 10 # Opus encoder quality. Valid values range from 0 to 10, where 10 is best quality but is the most expensive on the CPU. 18 | resamplingQuality: LOW # Quality of resampling operations. Valid values are LOW, MEDIUM and HIGH, where HIGH uses the most CPU. 19 | trackStuckThresholdMs: 10000 # The threshold for how long a track can be stuck. A track is stuck if does not return any audio data. 20 | useSeekGhosting: true # Seek ghosting is the effect where whilst a seek is in progress, the audio buffer is read from until empty, or until seek is ready. 21 | youtubePlaylistLoadLimit: 6 # Number of pages at 100 each 22 | playerUpdateInterval: 5 # How frequently to send player updates to clients, in seconds 23 | youtubeSearchEnabled: true 24 | soundcloudSearchEnabled: true 25 | gc-warnings: true 26 | #ratelimit: 27 | #ipBlocks: ["1.0.0.0/8", "..."] # list of ip blocks 28 | #excludedIps: ["...", "..."] # ips which should be explicit excluded from usage by lavalink 29 | #strategy: "RotateOnBan" # RotateOnBan | LoadBalance | NanoSwitch | RotatingNanoSwitch 30 | #searchTriggersFail: true # Whether a search 429 should trigger marking the ip as failing 31 | #retryLimit: -1 # -1 = use default lavaplayer value | 0 = infinity | >0 = retry will happen this numbers times 32 | #youtubeConfig: # Required for avoiding all age restrictions by YouTube, some restricted videos still can be played without. 33 | #email: "" # Email of Google account 34 | #password: "" # Password of Google account 35 | #httpConfig: # Useful for blocking bad-actors from ip-grabbing your music node and attacking it, this way only the http proxy will be attacked 36 | #proxyHost: "localhost" # Hostname of the proxy, (ip or domain) 37 | #proxyPort: 3128 # Proxy port, 3128 is the default for squidProxy 38 | #proxyUser: "" # Optional user for basic authentication fields, leave blank if you don't use basic auth 39 | #proxyPassword: "" # Password for basic authentication 40 | 41 | metrics: 42 | prometheus: 43 | enabled: false 44 | endpoint: /metrics 45 | 46 | sentry: 47 | dsn: "" 48 | environment: "" 49 | # tags: 50 | # some_key: some_value 51 | # another_key: another_value 52 | 53 | logging: 54 | file: 55 | path: ./logs/ 56 | 57 | level: 58 | root: INFO 59 | lavalink: INFO 60 | 61 | logback: 62 | rollingpolicy: 63 | max-file-size: 1GB 64 | max-history: 30 65 | -------------------------------------------------------------------------------- /botconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "token": "Your Bot Token", 3 | "prefix": "Bot Prefix", 4 | "report_channelid": "Channel ID Where Bug Reports Comes", 5 | "support_server": "Your Bots Support Server", 6 | "main_ownerid": "Your Id", 7 | "InstaToken": "Your Insta Token Here", 8 | "extra_ownerid": [ 9 | "Owner 1", 10 | "Owner 2" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /colours.json: -------------------------------------------------------------------------------- 1 | { 2 | "red": "#ff0008", 3 | "dark_blue": "#0008ff", 4 | "light_blue": "#14d0ff", 5 | "yellow": "#e2ff00", 6 | "green": "#00ff55", 7 | "pink": "#fa287c", 8 | "cyan": "#00FFFF" 9 | } -------------------------------------------------------------------------------- /commands/economy/balance.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | const eco = require("discord-economy"); 3 | 4 | module.exports = { 5 | config: { 6 | name: "balance", 7 | aliases: ["bal"], 8 | usage: "!!balance", 9 | category: "economy", 10 | description: "Checks you blance!", 11 | accessableby: "Members" 12 | }, 13 | run: async (bot, message, args) => { 14 | var output = await eco.FetchBalance(message.author.id) 15 | message.channel.send(`Hey **${message.author.tag}**! You own Rs **${output.balance}**.`); 16 | } 17 | } -------------------------------------------------------------------------------- /commands/economy/coinflip.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | const eco = require("discord-economy"); 3 | 4 | module.exports = { 5 | config: { 6 | name: "coinflip", 7 | aliases: ["cf"], 8 | usage: "!!coinflip", 9 | category: "economy", 10 | description: "Coinflip depend on your luck play and win balance in economy!", 11 | accessableby: "Members" 12 | }, 13 | run: async (bot, message, args) => { 14 | var flip = args[0] //Heads or Tails 15 | var amount = args[1] //Coins to gamble 16 | 17 | if (!flip || !['heads', 'tails'].includes(flip)) return message.reply('Please specify the flip, either heads or tails!') 18 | if (!amount) return message.reply('Specify the amount you want to gamble!') 19 | 20 | var output = await eco.FetchBalance(message.author.id) 21 | if (output.balance < amount) return message.reply('You have fewer coins than the amount you want to gamble!') 22 | 23 | var gamble = await eco.Coinflip(message.author.id, flip, amount).catch(console.error) 24 | message.reply(`You **${gamble.output}**! New balance: Rs **${gamble.newbalance}**`) 25 | } 26 | } -------------------------------------------------------------------------------- /commands/economy/daily.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | const eco = require("discord-economy"); 3 | 4 | module.exports = { 5 | config: { 6 | name: "daily", 7 | aliases: ["dailyy"], 8 | usage: "!!daily", 9 | category: "economy", 10 | description: "Checks in daily to claim reward!", 11 | accessableby: "Members" 12 | }, 13 | run: async (bot, message, args) => { 14 | var output = await eco.Daily(message.author.id) 15 | //output.updated will tell you if the user already claimed his/her daily yes or no. 16 | 17 | if (output.updated) { 18 | 19 | var profile = await eco.AddToBalance(message.author.id, 150) 20 | message.reply(`You claimed your daily coins successfully! You now own Rs ${profile.newbalance}.`); 21 | 22 | } else { 23 | message.channel.send(`Sorry, you already claimed your daily coins!\nBut no worries, over **${output.timetowait}** you can claim your daily reward again!`) 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /commands/economy/deleteuser.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | const eco = require("discord-economy"); 3 | 4 | module.exports = { 5 | config: { 6 | name: "delete", 7 | aliases: ["deleteu", "userdelete"], 8 | usage: "!!delete", 9 | category: "economy", 10 | description: "Delets you user from database!", 11 | accessableby: "Members" 12 | }, 13 | run: async (bot, message, args) => { 14 | var user = message.mentions.users.first() 15 | if (!user) return message.reply('Please specify a user I have to delete in my database!') 16 | 17 | if (!message.guild.me.hasPermission(`ADMINISTRATION`)) return message.reply('You need to be admin to execute this command!') 18 | 19 | var output = await eco.Delete(user.id) 20 | if (output.deleted == true) return message.reply('Successfully deleted the user out of the database!') 21 | 22 | message.reply('Error: Could not find the user in database.') 23 | } 24 | } -------------------------------------------------------------------------------- /commands/economy/dice.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | const eco = require("discord-economy"); 3 | 4 | module.exports = { 5 | config: { 6 | name: "dice", 7 | aliases: ["dice", "luck"], 8 | usage: "!!dice", 9 | category: "economy", 10 | description: "Dice depend on your luck play and win balance in economy!", 11 | accessableby: "Members" 12 | }, 13 | run: async (bot, message, args) => { 14 | var roll = args[0] //Should be a number between 1 and 6 15 | var amount = args[1] //Coins to gamble 16 | 17 | if (!roll || ![1, 2, 3, 4, 5, 6].includes(parseInt(roll))) return message.reply('Specify the roll, it should be a number between 1-6') 18 | if (!amount) return message.reply('Specify the amount you want to gamble!') 19 | 20 | var output = eco.FetchBalance(message.author.id) 21 | if (output.balance < amount) return message.reply('You have fewer coins than the amount you want to gamble!') 22 | 23 | var gamble = await eco.Dice(message.author.id, roll, amount).catch(console.error) 24 | message.reply(`The dice rolled **${gamble.dice}**. So you **${gamble.output}**! New balance: Rs **${gamble.newbalance}**`) 25 | } 26 | } -------------------------------------------------------------------------------- /commands/economy/leaderboard.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | const eco = require("discord-economy"); 3 | 4 | module.exports = { 5 | config: { 6 | name: "leaderboard", 7 | aliases: ["lb"], 8 | usage: "!!leaderboard", 9 | category: "economy", 10 | description: "Checks your rank in economy!", 11 | accessableby: "Members" 12 | }, 13 | run: async (bot, message, args) => { 14 | if (message.mentions.users.first()) { 15 | 16 | var output = await eco.Leaderboard({ 17 | filter: x => x.balance > 50, 18 | search: message.mentions.users.first().id 19 | }) 20 | message.channel.send(`The user **${message.mentions.users.first().tag}** is number **${output}** on my leaderboard!`); 21 | 22 | } else { 23 | 24 | eco.Leaderboard({ 25 | limit: 3, //Only takes top 3 ( Totally Optional ) 26 | filter: x => x.balance > 50 //Only allows people with more than 100 balance ( Totally Optional ) 27 | }).then(async users => { //make sure it is async 28 | 29 | if (users[0]) var firstplace = await bot.fetchUser(users[0].userid) //Searches for the user object in discord for first place 30 | if (users[1]) var secondplace = await bot.fetchUser(users[1].userid) //Searches for the user object in discord for second place 31 | if (users[2]) var thirdplace = await bot.fetchUser(users[2].userid) //Searches for the user object in discord for third place 32 | 33 | message.channel.send(`***My leaderboard:*** 34 | 35 | *1* - **${firstplace && firstplace.tag || 'Nobody Yet'} : Rs ${users[0] && users[0].balance || '0'}** 36 | *2* - **${secondplace && secondplace.tag || 'Nobody Yet'} : Rs ${users[1] && users[1].balance || '0'}** 37 | *3* - **${thirdplace && thirdplace.tag || 'Nobody Yet'} : Rs ${users[2] && users[2].balance || '0'}**`) 38 | 39 | }) 40 | 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /commands/economy/slot.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | const eco = require("discord-economy"); 3 | 4 | module.exports = { 5 | config: { 6 | name: "slot", 7 | aliases: ["slot"], 8 | usage: "!!slot", 9 | category: "economy", 10 | description: "!", 11 | accessableby: "Members" 12 | }, 13 | run: async (bot, message, args) => { 14 | var amount = args[0] //Coins to gamble 15 | 16 | if (!amount) return message.reply('Specify the amount you want to gamble!') 17 | 18 | var output = await eco.FetchBalance(message.author.id) 19 | if (output.balance < amount) return message.reply('You have fewer coins than the amount you want to gamble!') 20 | 21 | var gamble = await eco.Slots(message.author.id, amount, { 22 | width: 3, 23 | height: 1 24 | }).catch(console.error) 25 | message.channel.send(gamble.grid)//Grid checks for a 100% match vertical or horizontal. 26 | message.reply(`You **${gamble.output}**! New balance: Rs **${gamble.newbalance}**`) 27 | 28 | } 29 | } -------------------------------------------------------------------------------- /commands/economy/transfer.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | const eco = require("discord-economy"); 3 | 4 | module.exports = { 5 | config: { 6 | name: "transfer", 7 | aliases: ["dell"], 8 | usage: "", 9 | category: "economy", 10 | description: "Transfer money to your friend!", 11 | accessableby: "Members" 12 | }, 13 | run: async (bot, message, args) => { 14 | var user = message.mentions.users.first() 15 | var amount = args[1] 16 | 17 | if (!user) return message.reply('Mention the user you want to send money to!') 18 | if (!amount) return message.reply('Specify the amount you want to pay!') 19 | 20 | var output = await eco.FetchBalance(message.author.id) 21 | if (output.balance < amount) return message.reply('You have fewer coins than the amount you want to transfer!') 22 | 23 | var transfer = await eco.Transfer(message.author.id, user.id, amount) 24 | message.reply(`Transfering coins successfully done!\nBalance from **${message.author.tag}**: Rs **${transfer.FromUser}**\nBalance from **${user.tag}**: Rs **${transfer.ToUser}**`); 25 | } 26 | } -------------------------------------------------------------------------------- /commands/economy/work.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | const eco = require("discord-economy"); 3 | 4 | module.exports = { 5 | config: { 6 | name: "work", 7 | aliases: ["job"], 8 | usage: "", 9 | category: "economy", 10 | description: "Find your work to earn money in economy!", 11 | accessableby: "Members" 12 | }, 13 | run: async (bot, message, args) => { 14 | var output = await eco.Work(message.author.id) 15 | //50% chance to fail and earn nothing. You earn between 1-100 coins. And you get one out of 20 random jobs. 16 | if (output.earned == 0) return message.reply('Awh, you did not do your job well so you earned nothing!') 17 | message.channel.send(`${message.author.username} 18 | You worked as a \` ${output.job} \` and earned :money_with_wings: **${output.earned}** 19 | You now own :money_with_wings: **${output.balance}**`) 20 | 21 | 22 | var output = await eco.Work(message.author.id, { 23 | failurerate: 10, 24 | money: Math.floor(Math.random() * 500), 25 | jobs: ['cashier', 'shopkeeper'] 26 | }) 27 | //10% chance to fail and earn nothing. You earn between 1-500 coins. And you get one of those 3 random jobs. 28 | if (output.earned == 0) return message.reply('Awh, you did not do your job well so you earned nothing!') 29 | 30 | message.channel.send(`${message.author.username} 31 | You worked as a \` ${output.job} \` and earned :money_with_wings: **${output.earned}** 32 | You now own :money_with_wings: **${output.balance}**`) 33 | } 34 | } -------------------------------------------------------------------------------- /commands/games/8ball.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js") 2 | 3 | module.exports = { 4 | config: { 5 | name: "8ball", 6 | aliases: ["8ball"], 7 | usage: "!!8ball", 8 | category: "games", 9 | description: "", 10 | accessableby: "Members" 11 | }, 12 | run: async (bot, message, args) => { 13 | //!8ball question 14 | if(!args[1]) return message.reply("Plesae enter a full question with 2 or more words!"); 15 | let replies = ["Yes", "No", "I don't know", "Ask again later!", "Cyka", "I am not sure!", "Pls No", "You tell me", "Without a doubt", "Cannot predict now", "Without a doubt", ]; 16 | 17 | let result = Math.floor((Math.random() * replies.length)); 18 | let question = args.join(" "); 19 | 20 | let ballembed = new MessageEmbed() 21 | 22 | .setAuthor(message.author.username) 23 | .setColor("#00ff00") 24 | .addField("Question", question) 25 | .addField("Answer", replies[result]); 26 | 27 | message.channel.send(ballembed) 28 | 29 | message.delete(); 30 | } 31 | } -------------------------------------------------------------------------------- /commands/games/flipword.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js") 2 | const mapping = '¡"#$%⅋,)(*+\'-˙/0ƖᄅƐㄣϛ9ㄥ86:;<=>?@∀qƆpƎℲפHIſʞ˥WNOԀQɹS┴∩ΛMX⅄Z[/]^_`ɐqɔpǝɟƃɥᴉɾʞlɯuodbɹsʇnʌʍxʎz{|}~'; 3 | // Start with the character '!' 4 | const OFFSET = '!'.charCodeAt(0); 5 | 6 | module.exports = { 7 | config: { 8 | name: "flipword", 9 | aliases: ["upsidedown"], 10 | usage: "", 11 | category: "games", 12 | description: "Flips the word u have given", 13 | accessableby: "Members" 14 | }, 15 | run: async (bot, message, args) => { 16 | if (args.length < 1) return message.channel.send("You must provide text to flip!"); 17 | 18 | message.channel.send( 19 | args.join(' ').split('') 20 | .map(c => c.charCodeAt(0) - OFFSET) 21 | .map(c => mapping[c] || ' ') 22 | .reverse().join('') 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /commands/games/kill.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js") 2 | 3 | module.exports = { 4 | config: { 5 | name: "kill", 6 | aliases: ["kill"], 7 | usage: "!!kill", 8 | category: "games", 9 | description: "", 10 | accessableby: "Members" 11 | }, 12 | run: async (bot, message, args) => { 13 | let killed = message.mentions.members.first(); 14 | if(!killed) { 15 | 16 | let emb = new MessageEmbed() 17 | .setColor("RANDOM") 18 | .setDescription(`${message.author} decied to kill themself 💔 REST IN PEACE`) 19 | 20 | message.channel.send(emb) 21 | 22 | } else { 23 | 24 | let emb = new MessageEmbed() 25 | .setColor("RANDOM") 26 | .setDescription(`${killed} was killed by ${message.author} 💔 REST IN PEACE`) 27 | 28 | message.channel.send(emb) 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /commands/games/love.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js"); 2 | const { cyan } = require("../../colours.json"); 3 | const { getMember } = require("../../function.js"); 4 | 5 | module.exports = { 6 | config: { 7 | name: "love", 8 | aliases: ["affinity"], 9 | usage: "mention | id | username", 10 | category: "games", 11 | description: "Calculates the love affinity you have for another person.", 12 | accessableby: "Members" 13 | }, 14 | run: async (bot, message, args) => { 15 | // Get a member from mention, id, or username 16 | let person = getMember(message, args[0]); 17 | 18 | // If no person is found 19 | // It's going to default to the author 20 | // And we don't want to love ourself in this command 21 | // So we filter out our ID from the server members 22 | // And get a random person from that collection 23 | if (!person || message.author.id === person.id) { 24 | person = message.guild.members 25 | .filter(m => m.id !== message.author.id) 26 | .random(); 27 | } 28 | 29 | // love is the percentage 30 | // loveIndex is a number from 0 to 10, based on that love variable 31 | const love = Math.random() * 100; 32 | const loveIndex = Math.floor(love / 10); 33 | const loveLevel = "💖".repeat(loveIndex) + "💔".repeat(10 - loveIndex); 34 | 35 | const embed = new MessageEmbed() 36 | .setColor("#ffb6c1") 37 | .addField(`☁ **${person.displayName}** loves **${message.member.displayName}** this much:`, 38 | `💟 ${Math.floor(love)}%\n\n${loveLevel}`); 39 | 40 | message.channel.send(embed); 41 | } 42 | } -------------------------------------------------------------------------------- /commands/games/reverse.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | config: { 3 | name: "reverse", 4 | aliases: ["rvc"], 5 | usage: "", 6 | category: "games", 7 | description: "Reverse the word you have given!", 8 | accessableby: "Members" 9 | }, 10 | run: async (bot, message, args) => { 11 | if (args.length < 1) { 12 | throw 'You must input text to be reversed!'; 13 | } 14 | message.reply(args.join(' ').split('').reverse().join('')); 15 | } 16 | } -------------------------------------------------------------------------------- /commands/games/rps.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js"); 2 | const { cyan } = require("../../colours.json"); 3 | const { promptMessage } = require("../../function.js"); 4 | 5 | const chooseArr = ["🗻", "📰", "✂"]; 6 | 7 | module.exports = { 8 | config: { 9 | name: "rps", 10 | aliases: ["rps"], 11 | usage: "!!rps", 12 | category: "games", 13 | description: "Rock Paper Scissors game. React to one of the emojis to play the game.", 14 | accessableby: "Members" 15 | }, 16 | run: async (bot, message, args) => { 17 | const embed = new MessageEmbed() 18 | .setColor(cyan) 19 | .setFooter(message.guild.me.displayName, bot.user.displayAvatarURL()) 20 | .setDescription("Add a reaction to one of these emojis to play the game!") 21 | .setTimestamp(); 22 | 23 | const m = await message.channel.send(embed); 24 | const reacted = await promptMessage(m, message.author, 30, chooseArr); 25 | 26 | const botChoice = chooseArr[Math.floor(Math.random() * chooseArr.length)]; 27 | 28 | const result = await getResult(reacted, botChoice); 29 | await m.clearReactions(); 30 | 31 | embed 32 | .setDescription("") 33 | .addField(result, `${reacted} vs ${botChoice}`); 34 | 35 | m.edit(embed); 36 | 37 | function getResult(me, botChosen) { 38 | if ((me === "🗻" && botChosen === "✂") || 39 | (me === "📰" && botChosen === "🗻") || 40 | (me === "✂" && botChosen === "📰")) { 41 | return "You won!"; 42 | } else if (me === botChosen) { 43 | return "It's a tie!"; 44 | } else { 45 | return "You lost!"; 46 | } 47 | } 48 | } 49 | } -------------------------------------------------------------------------------- /commands/image/alpaca.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js") 2 | const { cyan } = require("../../colours.json"); 3 | const fetch = require('node-fetch'); 4 | 5 | module.exports = { 6 | config: { 7 | name: "alpaca", 8 | description: "sends a picture of a alpaca!", 9 | usage: "", 10 | category: "image", 11 | accessableby: "Members", 12 | aliases: ["catto"] 13 | }, 14 | run: async (bot, message, args) => { 15 | let msg = await message.channel.send("Generating...") 16 | 17 | fetch("https://apis.duncte123.me/alpaca") 18 | .then(res => res.json()).then(body => { 19 | if(!body) return message.reply(" whoops. I broke, try again!") 20 | 21 | let embed = new MessageEmbed() 22 | .setColor(cyan) 23 | .setAuthor(`${bot.user.username} Alpaca!`, message.guild.iconURL()) 24 | .setImage(body.data.file) 25 | .setTimestamp() 26 | .setFooter(bot.user.username.toUpperCase(), bot.user.displayAvatarURL()) 27 | 28 | msg.edit(embed) 29 | }) 30 | } 31 | } -------------------------------------------------------------------------------- /commands/image/cat.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js") 2 | const { light_blue } = require("../../colours.json"); 3 | const fetch = require("node-fetch") 4 | 5 | module.exports = { 6 | config: { 7 | name: "cat", 8 | aliases: ["cats"], 9 | usage: "!!cat", 10 | category: "image", 11 | description: "Shows a cute pictures of cat!", 12 | accessableby: "Members" 13 | }, 14 | run: async (bot, message, args) => { 15 | let msg = await message.channel.send("Generating...") 16 | 17 | fetch('http://aws.random.cat/meow') 18 | .then(res => res.json()).then(body => { 19 | 20 | 21 | if(!body) return message.channel.send("I broke! Try again.") 22 | 23 | let cEmbed = new MessageEmbed() 24 | .setColor(light_blue) 25 | .setAuthor(`${bot.user.username.toUpperCase()} Cats!`, message.guild.iconURL()) 26 | .setImage(body.file) 27 | .setTimestamp() 28 | .setFooter(bot.user.username.toUpperCase(), bot.user.displayAvatarURL()) 29 | 30 | message.channel.send(cEmbed) 31 | 32 | msg.delete(); 33 | }) 34 | } 35 | } -------------------------------------------------------------------------------- /commands/image/dog.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js") 2 | const { light_blue } = require("../../colours.json"); 3 | const fetch = require("node-fetch") 4 | 5 | module.exports = { 6 | config: { 7 | name: "dog", 8 | aliases: ["dogs"], 9 | usage: "!!cat", 10 | category: "image", 11 | description: "Shows a cute pictures of dog!", 12 | accessableby: "Members" 13 | }, 14 | run: async (bot, message, args) => { 15 | let msg = await message.channel.send("Generating...") 16 | 17 | fetch('https://dog.ceo/api/breeds/image/random') 18 | .then(res => res.json()).then(body => { 19 | 20 | 21 | if(!body) return message.channel.send("I broke! Try again.") 22 | 23 | let cEmbed = new MessageEmbed() 24 | .setColor(light_blue) 25 | .setAuthor(`${bot.user.username.toUpperCase()} Dogs!`, message.guild.iconURL()) 26 | .setImage(body.message) 27 | .setTimestamp() 28 | .setFooter(bot.user.username.toUpperCase(), bot.user.displayAvatarURL()) 29 | 30 | message.channel.send(cEmbed) 31 | 32 | msg.delete(); 33 | }) 34 | } 35 | } -------------------------------------------------------------------------------- /commands/image/llama.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js") 2 | const { cyan } = require("../../colours.json"); 3 | const fetch = require('node-fetch'); 4 | 5 | module.exports = { 6 | config: { 7 | name: "llama", 8 | description: "Sends a picture of a llama!", 9 | usage: "", 10 | category: "image", 11 | accessableby: "Members", 12 | }, 13 | run: async (bot, message, args) => { 14 | let msg = await message.channel.send("Generating...") 15 | 16 | fetch("https://apis.duncte123.me/llama") 17 | .then(res => res.json()).then(body => { 18 | if(!body) return message.reply(" whoops. I broke, try again!") 19 | 20 | let embed = new MessageEmbed() 21 | .setColor(cyan) 22 | .setAuthor(`${bot.user.username} Llama!`, message.guild.iconURL()) 23 | .setImage(body.data.file) 24 | .setTimestamp() 25 | .setFooter(bot.user.username.toUpperCase(), bot.user.displayAvatarURL()) 26 | 27 | msg.edit(embed) 28 | }) 29 | } 30 | } -------------------------------------------------------------------------------- /commands/image/meme.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js") 2 | const { red } = require("../../colours.json"); 3 | const fetch = require('node-fetch'); 4 | 5 | module.exports = { 6 | config: { 7 | name: "meme", 8 | description: "Sends a meme from a website!", 9 | usage: "", 10 | category: "image", 11 | accessableby: "Members", 12 | }, 13 | run: async (bot, message, args) => { 14 | let msg = await message.channel.send("Generating...") 15 | 16 | fetch("https://apis.duncte123.me/meme") 17 | .then(res => res.json()).then(body => { 18 | if(!body || !body.data.image) return message.reply(" whoops. I broke, try again!") 19 | 20 | let embed = new MessageEmbed() 21 | .setColor(red) 22 | .setAuthor(`${bot.user.username} meme!`, message.guild.iconURL()) 23 | .setImage(body.data.image) 24 | .setTimestamp() 25 | .setFooter(bot.user.username.toUpperCase(), bot.user.displayAvatarURL()) 26 | msg.edit(embed) 27 | }) 28 | } 29 | } -------------------------------------------------------------------------------- /commands/image/pepe.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js") 2 | const { cyan } = require("../../colours.json"); 3 | const fetch = require('node-fetch'); 4 | 5 | module.exports = { 6 | config: { 7 | name: "pepe", 8 | description: "", 9 | usage: "!!pepe", 10 | category: "image", 11 | accessableby: "Members", 12 | }, 13 | run: async (bot, message, args) => { 14 | let pepe1 = new MessageEmbed() 15 | .setColor(cyan) 16 | .setImage("https://cdn.discordapp.com/emojis/428556352915505165.png?v=1"); 17 | 18 | let pepe2 = new MessageEmbed() 19 | .setColor(cyan) 20 | .setImage("https://cdn.discordapp.com/emojis/428556326482739230.png?v=1"); 21 | 22 | let pepe3 = new MessageEmbed() 23 | .setColor(cyan) 24 | .setImage("https://cdn.discordapp.com/emojis/428556486235389973.png?v=1"); 25 | 26 | let pepe4 = new MessageEmbed() 27 | .setColor(cyan) 28 | .setImage("https://cdn.discordapp.com/emojis/428556308929576960.png?v=1"); 29 | 30 | let pepe5 = new MessageEmbed() 31 | .setColor(cyan) 32 | .setImage("https://cdn.discordapp.com/emojis/428556295218659329.png?v=1"); 33 | 34 | let pepe6 = new MessageEmbed() 35 | .setColor(cyan) 36 | .setImage("https://cdn.discordapp.com/emojis/428556467021545473.png?v=1"); 37 | 38 | let pepe7 = new MessageEmbed() 39 | .setColor(cyan) 40 | .setImage("https://cdn.discordapp.com/emojis/428556448507625474.png?v=1"); 41 | 42 | let pepe8 = new MessageEmbed() 43 | .setColor(cyan) 44 | .setImage("https://cdn.discordapp.com/emojis/428556377754042378.png?v=1"); 45 | 46 | let pepe9 = new MessageEmbed() 47 | .setColor(cyan) 48 | .setImage("https://cdn.discordapp.com/emojis/428556281767526405.png?v=1"); 49 | 50 | let pepe10 = new MessageEmbed() 51 | .setColor(cyan) 52 | .setImage("https://cdn.discordapp.com/emojis/428556266366042112.png?v=1"); 53 | 54 | let pepes = [pepe1, pepe2, pepe3, pepe4, pepe5, pepe6, pepe7, pepe8, pepe9, pepe10] 55 | 56 | let dapepe = Math.floor((Math.random() * pepes.length)); 57 | 58 | message.channel.send(pepes[dapepe]) 59 | } 60 | } -------------------------------------------------------------------------------- /commands/image/seal.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js") 2 | const { cyan } = require("../../colours.json"); 3 | const fetch = require('node-fetch'); 4 | 5 | module.exports = { 6 | config: { 7 | name: "seal", 8 | description: "Sends a picture of a seal!", 9 | usage: "", 10 | category: "image", 11 | accessableby: "Members", 12 | }, 13 | run: async (bot, message, args) => { 14 | let msg = await message.channel.send("Generating...") 15 | 16 | fetch("https://apis.duncte123.me/seal") 17 | .then(res => res.json()).then(body => { 18 | if(!body) return message.reply(" whoops. I broke, try again!") 19 | 20 | let embed = new MessageEmbed() 21 | .setColor(cyan) 22 | .setAuthor(`${bot.user.username} Seal!`, message.guild.iconURL()) 23 | .setImage(body.data.file) 24 | .setTimestamp() 25 | .setFooter(bot.user.username.toUpperCase(), bot.user.displayAvatarURL()) 26 | 27 | msg.edit(embed) 28 | }) 29 | } 30 | } -------------------------------------------------------------------------------- /commands/miscellaneous/avatar.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js") 2 | const { pink } = require("../../colours.json"); 3 | const fetch = require("node-fetch") 4 | 5 | module.exports = { 6 | config: { 7 | name: "avatar", 8 | aliases: ["av"], 9 | usage: "!!av", 10 | category: "miscellaneous", 11 | description: "Shows your avatar!", 12 | accessableby: "Members" 13 | }, 14 | run: async (bot, message, args) => { 15 | let user = message.mentions.users.first(); 16 | if(!user) user = message.author; 17 | let color = message.member.displayHexColor; 18 | if (color == '#fa287c') color = message.member.hoistRole.hexColor; 19 | const embed = new MessageEmbed() 20 | .setImage(user.displayAvatarURL({ dynamic: true })) 21 | .setColor(pink) 22 | message.channel.send({embed}); 23 | } 24 | } -------------------------------------------------------------------------------- /commands/miscellaneous/botinfo.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js") 2 | const { main_ownerid } = require("../../botconfig") 3 | 4 | module.exports = { 5 | config: { 6 | name: "botinfo", 7 | aliases: ["bi"], 8 | usage: "!!botinfo", 9 | category: "miscellaneous", 10 | description: "Shows the bot info!", 11 | accessableby: "Members" 12 | }, 13 | run: async (bot, message, args) => { 14 | let inline = true 15 | let bicon = bot.user.displayAvatarURL(); 16 | let usersize = bot.users.cache.size 17 | let chansize = bot.channels.cache.size 18 | let uptimxd = bot.uptime 19 | let servsize = bot.guilds.cache.size 20 | let botembed = new MessageEmbed() 21 | .setColor("#00ff00") 22 | .setThumbnail(bicon) 23 | .addField("Bot Name", `${bot.user.username}`, inline) 24 | .addField("Bot Owner", bot.users.cache.get(main_ownerid).tag, inline ) 25 | .addField("Servers", `${servsize}`, inline) 26 | .addField("Channels", `${chansize}`, inline) 27 | .addField("Users", `${usersize}`, inline) 28 | .addField("Bot Library", "Discord.js", inline) 29 | .addField("Created On", bot.user.createdAt) 30 | .setFooter(`Information about: ${bot.user.username}. Developed by: ${bot.users.cache.get(main_ownerid).username}`) 31 | .setTimestamp() 32 | 33 | message.channel.send(botembed); 34 | } 35 | } -------------------------------------------------------------------------------- /commands/miscellaneous/cnjoke.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js") 2 | let giveMeAJoke = require('give-me-a-joke');; 3 | 4 | module.exports = { 5 | config: { 6 | name: "cnjoke", 7 | aliases: ["cnjk"], 8 | usage: "!!cnjoke", 9 | category: "miscellaneous", 10 | description: "Send joke!", 11 | accessableby: "Members" 12 | }, 13 | run: async (bot, message, args) => { 14 | giveMeAJoke.getRandomCNJoke(function(joke){ 15 | message.channel.send(joke) 16 | }) 17 | } 18 | } -------------------------------------------------------------------------------- /commands/miscellaneous/contact.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js") 2 | const { pink } = require("../../colours.json"); 3 | const fetch = require("node-fetch") 4 | const { report_channelid } = require("../../botconfig") 5 | 6 | module.exports = { 7 | config: { 8 | name: "contact", 9 | aliases: ["helpline"], 10 | usage: "!!contact", 11 | category: "miscellaneous", 12 | description: "Please fell free to submit the bug occured in the bot!", 13 | accessableby: "Members" 14 | }, 15 | run: async (bot, message, args) => { 16 | if(args[0] == "help"){ 17 | let helpembxd = new MessageEmbed() 18 | .setColor(pink) 19 | .addField("Contact Command", "Usage: !Contact ") 20 | 21 | message.channel.send(helpembxd); 22 | return; 23 | } 24 | 25 | let Invite = await message.guild.channels.find((c) => c.type === 'text').createInvite() 26 | let Sender = message.author; 27 | const sayMessage = args.join(" "); 28 | if(!sayMessage) return message.channel.send("Please give us reason for contacting").then(msg => {msg.delete(5000)}); 29 | 30 | let contact = new MessageEmbed() 31 | .setColor(pink) 32 | .setThumbnail(Sender.displayAvatarURL()) 33 | .setDescription(`Contact message from [${message.guild.name}](${Invite.url})`) 34 | .setTitle("Message from contact command!") 35 | .addField("User", Sender, true) 36 | .addField("User ID: ", Sender.id, true) 37 | .addField("Message: ", sayMessage) 38 | .setTimestamp() 39 | 40 | bot.channels.cache.get(report_channelid).send(contact); 41 | 42 | let embed = new MessageEmbed() 43 | .setColor(pink) 44 | .setTitle("Message Sent!") 45 | .setDescription("Your contact message has been sent!") 46 | .addField("Reqested by ", Sender) 47 | .addField("Message: ", sayMessage) 48 | .setFooter("Thanks you for contacting with Us!") 49 | 50 | message.channel.send(embed).then(msg => {msg.delete(20000)}); 51 | 52 | message.delete(); 53 | } 54 | } -------------------------------------------------------------------------------- /commands/miscellaneous/help.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js"); 2 | const { prefix, support_server } = require("../../botconfig.json"); 3 | const { readdirSync } = require("fs") 4 | const { stripIndents } = require("common-tags") 5 | const { red } = require("../../colours.json") 6 | 7 | module.exports = { 8 | config: { 9 | name: "help", 10 | aliases: ["halp", "commands"], 11 | usage: "(command)", 12 | category: "miscellaneous", 13 | description: "Displays all commands that the bot has.", 14 | accessableby: "Members" 15 | }, 16 | run: async (bot, message, args) => { 17 | const embed = new MessageEmbed() 18 | .setColor(red) 19 | .setAuthor(`${message.guild.me.displayName} Help`, message.guild.iconURL()) 20 | .setThumbnail(bot.user.displayAvatarURL()) 21 | .setImage('https://cdn.discordapp.com/attachments/632098744262721564/633640689955110912/nitro.gif') 22 | 23 | if(!args[0]) { 24 | const categories = readdirSync("./commands/") 25 | 26 | embed.setDescription(`These are the avaliable commands for ${message.guild.me.displayName}\nThe bot prefix is: **${prefix}**`) 27 | embed.setFooter(`Make Sure To Use The Prefix Before The Commands. PREFIX Is ${prefix}. If You Find Any Bug, Feel Free To Report Them Using !!contact `); 28 | 29 | categories.forEach(category => { 30 | const dir = bot.commands.filter(c => c.config.category === category) 31 | const capitalise = category.slice(0, 1).toUpperCase() + category.slice(1) 32 | try { 33 | embed.addField(`❯ ${capitalise} [${dir.size}]:`, dir.map(c => `\`${c.config.name}\``).join(" ")); 34 | } catch(e) { 35 | console.log(e) 36 | } 37 | }) 38 | 39 | embed.addField("❯ Support Us:", `[Support Server](${support_server}) | [Bot Invite](https://discordapp.com/oauth2/authorize?client_id=${bot.user.id}&scope=bot&permissions=8)`) 40 | 41 | return message.channel.send(embed) 42 | } else { 43 | let command = bot.commands.get(bot.aliases.get(args[0].toLowerCase()) || args[0].toLowerCase()) 44 | if(!command) return message.channel.send(embed.setTitle("Invalid Command.").setDescription(`Do \`${prefix}help\` for the list of the commands.`)) 45 | command = command.config 46 | 47 | embed.setDescription(stripIndents`The bot's prefix is: \`${prefix}\`\n 48 | **Command:** ${command.name.slice(0, 1).toUpperCase() + command.name.slice(1)} 49 | **Description:** ${command.description || "No Description provided."} 50 | **Usage:** ${command.usage ? `\`${prefix}${command.name} ${command.usage}\`` : "No Usage"} 51 | **Accessible by:** ${command.accessableby || "Members"} 52 | **Aliases:** ${command.aliases ? command.aliases.join(", ") : "None."}`) 53 | 54 | embed.addField("❯ Support Us:", `[Support Server](${support_server}) | [Bot Invite](https://discordapp.com/oauth2/authorize?client_id=${bot.user.id}&scope=bot&permissions=8)`) 55 | 56 | return message.channel.send(embed) 57 | } 58 | } 59 | } -------------------------------------------------------------------------------- /commands/miscellaneous/instagram.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const Insta = require('scraper-instagram'); 3 | const AlixInstagram = new Insta(); 4 | const { InstaToken } = require("../../botconfig") 5 | let yourSessionId = InstaToken; 6 | 7 | module.exports = { 8 | config: { 9 | name: "instagram", 10 | aliases: ["insta"], 11 | category: "general", 12 | accessableby: "ALL" 13 | }, 14 | run: async (bot, message, args) => { 15 | //get the name to search for 16 | if (!args[0]) { 17 | return message.channel.send(`**Please provide me a valid Instagram name!**`) 18 | } 19 | try{ 20 | AlixInstagram.authBySessionId(yourSessionId) 21 | .then((Insta) => { 22 | AlixInstagram.getProfile(args[0]) 23 | .then(alix => { 24 | const embed = new Discord.MessageEmbed() 25 | .setAuthor(`Requested by ${message.author.tag}`, message.author.displayAvatarURL({ 26 | dynamic: true 27 | })) 28 | .setColor("RANDOM") 29 | .setTitle(`${alix.name} Instagram Profile`) 30 | .setURL(alix.link) 31 | .setThumbnail(alix.pic) 32 | .setDescription(` 33 | **ID**: ${alix.id} 34 | **Nickname :** ${alix.name} 35 | **Followers :** ${alix.followers} followers 36 | **Following :** ${alix.following} following 37 | **Posts :** ${alix.posts || 0} 38 | **Private :** ${alix.private ? "Yes 🔐" : "No 🔓"} 39 | **Verified :** ${alix.verified ? "Yes " : "No"} 40 | **Biography :** ${alix.bio || "No Bio"} 41 | **Website :** ${alix.website || "No Website"}`) 42 | message.channel.send(embed) 43 | }) 44 | 45 | }) 46 | } catch (err) { 47 | console.error(err); 48 | } 49 | } 50 | }; 51 | -------------------------------------------------------------------------------- /commands/miscellaneous/joke.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js") 2 | let giveMeAJoke = require('give-me-a-joke');; 3 | 4 | module.exports = { 5 | config: { 6 | name: "joke", 7 | aliases: ["jk"], 8 | usage: "!!joke", 9 | category: "miscellaneous", 10 | description: "Send joke!", 11 | accessableby: "Members" 12 | }, 13 | run: async (bot, message, args) => { 14 | giveMeAJoke.getRandomDadJoke(function(joke){ 15 | message.channel.send(joke) 16 | }) 17 | } 18 | } -------------------------------------------------------------------------------- /commands/miscellaneous/myinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | const botconfig = require("../../botconfig.json"); 3 | const colours = require("../../colours.json"); 4 | 5 | 6 | module.exports.run = async (bot, message, args) => { 7 | let uEmbed = new Discord.MessageEmbed() 8 | .setColor(colours.dark_blue) 9 | .setTitle("Server Info") 10 | .setThumbnail(message.author.displayAvatarURL({ dynamic: true })) 11 | .setAuthor(`${message.author.username} Info`, message.author.displayAvatarURL()) 12 | .addField("**Username:**", `${message.author.username}`, true) 13 | .addField("**Discriminator:**", `${message.author.discriminator}`, true) 14 | .addField("**ID:**", `${message.author.id}`, true) 15 | .addField("**Status:**", `${message.author.presence.status}`, true) 16 | .addField("**Created AT:**", `${message.author.createdAt}`, true) 17 | .setTimestamp() 18 | .setFooter(bot.user.username, bot.user.displayAvatarURL()); 19 | message.channel.send({embed: uEmbed}); 20 | } 21 | 22 | 23 | module.exports.config = { 24 | name: "myinfo", 25 | aliases: ["myinfo"], 26 | usage: "!!myinfo", 27 | category: "miscellaneous", 28 | description: "Shows about your information!", 29 | accessableby: "Members" 30 | } -------------------------------------------------------------------------------- /commands/miscellaneous/overwatch.js: -------------------------------------------------------------------------------- 1 | 2 | const { MessageEmbed } = require("discord.js"); 3 | const { cyan } = require("../../colours.json"); 4 | const { stripIndents } = require("common-tags"); 5 | const overwatch = require("overwatch-api"); 6 | 7 | module.exports = { 8 | config: { 9 | name: "overwatch", 10 | description: "Displays a user's overwatch stats!", 11 | usage: " ", 12 | category: "miscellaneous", 13 | accessableby: "Members", 14 | aliases: ["ow"] 15 | }, 16 | run: async (bot, message, args) => { 17 | if(!args[0]) return message.channel.send("Please supply a username."); 18 | if(!args[1] || (args[1] && !["pc", "xbl", "psn"].includes(args[1]))) return message.channel.send("Please supply a platform to check. `pc`, `xbox` or `psn`"); 19 | if(args[0].includes("#")) args[0] = args[0].replace(/#/g, "-"); 20 | 21 | overwatch.getProfile(args[1], "global", args[0], (err, json) => { 22 | if (err) return message.channel.send("Unable to find a user with that username."); 23 | const { games, level, portrait, username, playtime: { competitive, quickplay }, private } = json; 24 | const { sportsmanship, shotcaller, teammate } = json.endorsement; 25 | const { won, draw, played, lost, win_rate } = json.games.competitive; 26 | 27 | if(private) return message.channel.send("This users stats are private and cant be seen by anyone."); 28 | 29 | const embed = new MessageEmbed() 30 | .setColor(cyan) 31 | .setAuthor(`Blizzard (Overwatch) | ${username}`, portrait) 32 | .setThumbnail(portrait) 33 | .addField("General:", stripIndents` 34 | **Level:** ${level || 0} 35 | **Sportsmanship:** ${sportsmanship.rate || 0} / 100 36 | **Shotcaller:** ${shotcaller.rate || 0} / 100 37 | **Teammate:** ${teammate.rate || 0} / 100 38 | `) 39 | .addField("Competitive:", stripIndents` 40 | **Played:** ${played || 0} 41 | **Won:** ${won || 0} 42 | **Draw:** ${draw || 0} 43 | **Lost:** ${lost || 0} 44 | **Win Rate:** ${win_rate || 0} 45 | **Playtime:** ${competitive || 0} 46 | `, true) 47 | .addField("QuickPlay:", stripIndents` 48 | **Played:** ${games.quickplay.played || "N/A"} 49 | **Won:** ${games.quickplay.won || 0} 50 | **Playtime:** ${quickplay || 0} 51 | `, true) 52 | .setTimestamp(); 53 | 54 | message.channel.send(embed); 55 | 56 | }) 57 | } 58 | } -------------------------------------------------------------------------------- /commands/miscellaneous/ping.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | const botconfig = require("../../botconfig.json"); 3 | const colours = require("../../colours.json"); 4 | const prefix = botconfig.prefix 5 | 6 | 7 | module.exports.run = async (bot, message, args) => { 8 | 9 | message.channel.send("Pinging...").then(m => { 10 | let ping = m.createdTimestamp - message.createdTimestamp 11 | let choices = ["***:ping_pong: Is this really my ping***", "***:ping_pong: Is it okay? I cant look***", "***:ping_pong: I hope it isnt bad***"] 12 | let response = choices[Math.floor(Math.random() * choices.length)] 13 | 14 | m.edit(`${response}:\n**Bot Latency:** \`${ping}\`,\n**API Latency:** \`${Math.round(bot.ping)}\``) 15 | }) 16 | 17 | } 18 | 19 | 20 | module.exports.config = { 21 | name: "ping", 22 | description: "PONG! Displays the api & latency", 23 | usage: "!!ping", 24 | category: "miscellaneous", 25 | accessableby: "Members", 26 | aliases: ["latency"] 27 | } 28 | -------------------------------------------------------------------------------- /commands/miscellaneous/rate.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports = { 4 | config: { 5 | name: "rate", 6 | aliases: ["rate"], 7 | usage: "!!rate", 8 | category: "miscellaneous", 9 | description: "Rate us with no. 1-10.", 10 | accessableby: "Members" 11 | }, 12 | run: async (bot, message, args) => { 13 | let ratus = message.mentions.members.first(); 14 | if(!ratus) return message.channel.send("Tag someone to rate them!"); 15 | 16 | let rates = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]; 17 | 18 | let result = Math.floor((Math.random() * rates.length)); 19 | 20 | if(ratus.user.id === message.author.id) { 21 | return message.channel.send(`**${message.author.username}**, I'd give you ${result}/10<:thonk:427846193503272960>`); 22 | } else return message.channel.send(`I'd give **__${ratus.user.username}__** ${result}/10 <:thonk:427846193503272960>`); 23 | } 24 | } -------------------------------------------------------------------------------- /commands/miscellaneous/report.js: -------------------------------------------------------------------------------- 1 | 2 | module.exports = { 3 | config: { 4 | name: "report", 5 | category: "miscellaneous", 6 | description: "reports a user of the guild", 7 | usage: "!report ", 8 | accessableby: "Members", 9 | }, 10 | run: async (bot, message, args) => { 11 | 12 | message.delete() 13 | // mentioned or grabbed user 14 | let target = message.mentions.members.first() || message.guild.members.get(args[0]) 15 | if(!target) return message.channel.send("Please provide a valid user").then(m => m.delete(15000)) 16 | 17 | // reasoning definition 18 | let reason = args.slice(1).join(" ") 19 | if(!reason) return message.channel.send(`Please provide a reason for reporting **${target.user.tag}**`).then(m => m.delete(15000)) 20 | 21 | // grab reports channel 22 | let sChannel = message.guild.channels.find(x => x.name === "report") 23 | 24 | // send to reports channel and add tick or cross 25 | 26 | message.channel.send("Your report has been filed to the staff team. Thank you!").then(m => m.delete(15000)) 27 | sChannel.send(`**${message.author.tag}** has reported **${target.user.tag}** for **${reason}**.`).then(async msg => { 28 | await msg.react("✅") 29 | await msg.react("❌") 30 | }) 31 | 32 | } 33 | } -------------------------------------------------------------------------------- /commands/miscellaneous/roleinfo.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js") 2 | const { red } = require("../../colours.json"); 3 | const fetch = require("node-fetch") 4 | 5 | module.exports = { 6 | config: { 7 | name: "roleinfo", 8 | aliases: ["ri"], 9 | usage: "!!roleinfo", 10 | category: "miscellaneous", 11 | description: "Shows the info of the role!", 12 | accessableby: "Members" 13 | }, 14 | run: async (bot, message, args) => { 15 | let inline = true 16 | 17 | let role = message.guild.roles.cache.find(r => r.name == args[1]) || message.guild.roles.cache.find(r => r.id == args[1]) || message.mentions.roles.first() 18 | if(!role) return message.reply("Specify a role!"); 19 | 20 | const status = { 21 | false: "No", 22 | true: "Yes" 23 | } 24 | 25 | let roleemebed = new MessageEmbed() 26 | .setColor(role.hexColor) 27 | .addField("ID", role.id, inline ) 28 | .addField("Name", role.name, inline) 29 | .addField("Mention", `\`<@${role.id}>\``, inline) 30 | .addField("Hex", role.hexColor, inline) 31 | .addField("Members", role.members.size, inline) 32 | .addField("Position", role.position, inline) 33 | .addField("Hoisted", status[role.hoist], inline) 34 | .addField("Mentionable", status[role.mentionable], inline) 35 | .addField("Managed", status[role.managed], inline) 36 | 37 | message.channel.send(roleemebed); 38 | } 39 | } -------------------------------------------------------------------------------- /commands/miscellaneous/serverinfo.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | const botconfig = require("../../botconfig.json"); 3 | const colours = require("../../colours.json"); 4 | 5 | 6 | module.exports.run = async (bot, message, args) => { 7 | let sEmbed = new Discord.MessageEmbed() 8 | .setColor(colours.red) 9 | .setTitle("Server Info") 10 | .setThumbnail(message.guild.iconURL()) 11 | .setAuthor(`${message.guild.name} Info`, message.guild.iconURL()) 12 | .addField("**Guild Name:**", `${message.guild.name}`, true) 13 | .addField("**Guild Owner:**", `${message.guild.owner}`, true) 14 | .addField("**Member Count:**", `${message.guild.memberCount}`, true) 15 | .addField("**Role Count:**", `${message.guild.roles.cache.size}`, true) 16 | .addField("**Channel Count:**", `${message.guild.channels.cache.size}`, true) 17 | .addField("**Voice Channel Count:**", `${message.guild.channels.cache.filter((c) => c.type === "voice").size}`, true) 18 | .addField("**Created At:**", `${message.guild.createdAt()}`, true) 19 | .setTimestamp() 20 | .setFooter(bot.user.username, bot.user.displayAvatarURL()); 21 | message.channel.send({embed: sEmbed}); 22 | } 23 | 24 | 25 | module.exports.config = { 26 | name: "serverinfo", 27 | aliases: ["serverinfo"], 28 | usage: "!!serverinfo", 29 | category: "miscellaneous", 30 | description: "Shows about the server information!", 31 | accessableby: "Members" 32 | } -------------------------------------------------------------------------------- /commands/miscellaneous/stats.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | const os = require('os') 3 | const cpuStat = require("cpu-stat"); 4 | const moment = require("moment") 5 | 6 | module.exports = { 7 | config: { 8 | name: "stats", 9 | aliases: ["stat"], 10 | usage: "", 11 | category: "miscellaneous", 12 | description: "AYAAN GAMING Status!", 13 | accessableby: "Members" 14 | }, 15 | run: async (bot, message, args) => { 16 | let { version } = require("discord.js"); 17 | 18 | cpuStat.usagePercent(function(err, percent, seconds) { 19 | if (err) { 20 | return console.log(err); 21 | } 22 | 23 | let secs = Math.floor(bot.uptime % 60); 24 | let days = Math.floor((bot.uptime % 31536000) / 86400); 25 | let hours = Math.floor((bot.uptime / 3600) % 24); 26 | let mins = Math.floor((bot.uptime / 60) % 60); 27 | 28 | //let duration = moment.duration(bot.uptime).format(" D [days], H [hrs], m [mins], s [secs]"); 29 | let embedStats = new Discord.MessageEmbed() 30 | .setTitle("*** Stats ***") 31 | .setColor("RANDOM") 32 | .addField("• Mem Usage", `${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2)} / ${(os.totalmem() / 1024 / 1024).toFixed(2)} MB`, true) 33 | .addField("• Uptime ", `${hours}h ${mins}m`, true) //`${duration}`, true) 34 | .addField("• Users", `${bot.users.size.toLocaleString()}`, true) 35 | .addField("• Servers", `${bot.guilds.size.toLocaleString()}`, true) 36 | .addField("• Channels ", `${bot.channels.size.toLocaleString()}`, true) 37 | .addField("• Discord.js", `v${version}`, true) 38 | // .addField("• Node", `${process.version}`, true) 39 | .addField("• CPU", `\`\`\`md\n${os.cpus().map(i => `${i.model}`)[0]}\`\`\``) 40 | .addField("• CPU usage", `\`${percent.toFixed(2)}%\``,true) 41 | .addField("• Arch", `\`${os.arch()}\``,true) 42 | .addField("• Platform", `\`\`${os.platform()}\`\``,true) 43 | .setFooter(bot.user.username + " stats") 44 | 45 | message.channel.send(embedStats) 46 | }) 47 | } 48 | } -------------------------------------------------------------------------------- /commands/miscellaneous/uptime.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | const botconfig = require("../../botconfig.json"); 3 | const colours = require("../../colours.json"); 4 | const prefix = botconfig.prefix 5 | 6 | 7 | module.exports.run = async (bot, message, args) => { 8 | 9 | function duration(ms) { 10 | const sec = Math.floor((ms / 1000) % 60).toString() 11 | const min = Math.floor((ms / (1000 * 60)) % 60).toString() 12 | const hrs = Math.floor((ms / (1000 * 60 * 60)) % 60).toString() 13 | const days = Math.floor((ms / (1000 * 60 * 60 * 24)) % 60).toString() 14 | return `${days.padStart(1, '0')} days, ${hrs.padStart(2, '0')} hours, ${min.padStart(2, '0')} minutes, ${sec.padStart(2, '0')} seconds, ` 15 | } 16 | 17 | message.channel.send(`**I have been online for:** \`${duration(bot.uptime)}\``) 18 | 19 | } 20 | 21 | 22 | module.exports.config = { 23 | name: "uptime", 24 | description: "Displays the bots current uptime!", 25 | usage: "!!uptime", 26 | category: "miscellaneous", 27 | accessableby: "Members", 28 | aliases: ["ut"] 29 | } 30 | -------------------------------------------------------------------------------- /commands/miscellaneous/weather.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js"); 2 | const weather = require("weather-js"); 3 | 4 | module.exports = { 5 | config: { 6 | name: "weather", 7 | aliases: ["climate"], 8 | usage: "!!weather", 9 | category: "miscellaneous", 10 | description: "Shows the weather status.", 11 | accessableby: "Members" 12 | }, 13 | run: async (bot, message, args) => { 14 | weather.find({search: args.join(" "), degreeType: "C"}, function(err, result) { 15 | if(err) message.channel.send(err) 16 | 17 | //If the place entered is invalid 18 | if(result.length === 0) { 19 | message.channel.send("**please enter a valid location**") 20 | return; 21 | } 22 | 23 | //Variables 24 | var current = result[0].current //Variable for the current part of the JSON Output 25 | var location = result[0].location //This is a variable for the location part of the JSON Output 26 | 27 | //Sends weather log in embed 28 | let embed = new MessageEmbed() 29 | .setDescription(`**${current.skytext}**`) //How the sky looks like 30 | .setAuthor(`Weather for ${current.observationpoint}`) //Shows the current location of the weater 31 | .setThumbnail(current.imageUrl) //Sets thumbnail of the embed 32 | .setColor(0x00AE86) //Sets the color of the embed 33 | .addField("Timezone", `UTC${location.timezone}`, true) //Shows the timezone 34 | .addField("Degree Type", location.degreetype, true) //Shows the degrees in Celcius 35 | .addField("Temperature", `${current.temperature}`, true) 36 | .addField("Feels like", `${current.feelslike} Degrees`, true) 37 | .addField("Winds", current.winddisplay, true) 38 | .addField("Humidity", ` ${current.humidity}%`, true) 39 | .addField("Day", `${current.day}`, true) 40 | .addField("Date", `${current.date}`, true) 41 | 42 | //Display when it's called 43 | message.channel.sendEmbed(embed) 44 | 45 | }); 46 | 47 | message.delete(); 48 | } 49 | } -------------------------------------------------------------------------------- /commands/miscellaneous/yomamma.js: -------------------------------------------------------------------------------- 1 | const yoMamma = require('yo-mamma').default; 2 | 3 | module.exports = { 4 | config: { 5 | name: "yomamma", 6 | aliases: ["ym"], 7 | usage: "!!yomamma", 8 | category: "miscellaneous", 9 | description: "", 10 | accessableby: "Members" 11 | }, 12 | run: async (bot, message, args) => { 13 | 14 | let insult = yoMamma(); 15 | 16 | message.channel.send(insult) 17 | } 18 | } -------------------------------------------------------------------------------- /commands/moderation/addrole.js: -------------------------------------------------------------------------------- 1 | const { RichEmbed } = require("discord.js") 2 | const { redlight } = require("../../colours.json") 3 | 4 | module.exports= { 5 | config: { 6 | name: "addrole", 7 | description: "Adds a role to a member of the guild!", 8 | usage: "!!addrole", 9 | category: "moderation", 10 | accessableby: "Moderators", 11 | aliases: ["ar", "roleadd"] 12 | }, 13 | run: async (bot, message, args) => { 14 | 15 | if(!message.member.hasPermission(["MANAGE_ROLES", "ADMINISTRATOR"])) return message.channel.send("You dont have permission to perform this command!") 16 | 17 | let rMember = message.mentions.members.first() || message.guild.members.cache.find(m => m.user.tag === args[0]) || message.guild.members.cache.get(args[0]) 18 | if(!rMember) return message.channel.send("Please provide a user to add a role too.") 19 | let role = message.guild.roles.cache.find(r => r.name == args[1]) || message.guild.roles.cache.find(r => r.id == args[1]) || message.mentions.roles.first() 20 | if(!role) return message.channel.send("Please provide a role to add to said user.") 21 | let reason = args.slice(2).join(" ") 22 | if(!reason) return message.channel.send("Please provide a reason") 23 | 24 | if(!message.guild.me.hasPermission(["MANAGE_ROLES", "ADMINISTRATOR"])) return message.channel.send("I don't have permission to perform this command.") 25 | 26 | if(rMember.roles.has(role.id)) { 27 | return message.channel.send(`${rMember.displayName}, already has the role!`) 28 | } else { 29 | await rMember.roles.add(role.id).catch(e => console.log(e.message)) 30 | message.channel.send(`The role, ${role.name}, has been added to ${rMember.displayName}.`) 31 | } 32 | 33 | } 34 | } -------------------------------------------------------------------------------- /commands/moderation/ban.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | module.exports = { 3 | config: { 4 | name: "ban", 5 | aliases: ["banish"], 6 | category: "moderation", 7 | accessableby: "Members" 8 | }, 9 | run: async (bot, message, args) => { 10 | let banned = message.mentions.users.first() || bot.users.resolve(args[0]); 11 | let reason = args.slice(1).join(" "); 12 | 13 | // MESSAGES 14 | 15 | if (!banned) { 16 | let baninfoembed = new Discord.MessageEmbed() 17 | .setTitle("Command: ban") 18 | .setDescription( 19 | `**Description:** Ban a member, optional time limit. \n` + 20 | "**Sub Commands:**\n" + 21 | "-ban save | Ban a user and save their messages in chat. \n" + 22 | "**Usage:**\n" + 23 | "-ban [user] (limit) (reason) \n" + 24 | "-ban save [user] (limit) (reason) \n" + 25 | "**Examples:** \n" + 26 | "-ban <@597253939469221891> 48h spam \n" + 27 | "-ban save <@597253939469221891> 48h spam " 28 | ) 29 | .setColor("#2C2F33"); 30 | message.channel.send(baninfoembed); 31 | 32 | return; 33 | } 34 | 35 | if (message.author === banned) { 36 | let sanctionyourselfembed = new Discord.MessageEmbed() 37 | .setDescription(`You cannot sanction yourself`) 38 | .setColor("#2C2F33"); 39 | message.channel.send(sanctionyourselfembed); 40 | 41 | return; 42 | } 43 | 44 | if (!reason) { 45 | let noreasonembed = new Discord.MessageEmbed() 46 | .setDescription(`Enter a reason`) 47 | .setColor("#2C2F33"); 48 | message.channel.send(noreasonembed); 49 | 50 | return; 51 | } 52 | 53 | if (!message.member.permissions.has("BAN_MEMBERS")) { 54 | let nopermsembed = new Discord.MessageEmbed() 55 | .setDescription( 56 | "You do not have permission `BAN MEMBERS` contact an administrator" 57 | ) 58 | .setColor("#2C2F33"); 59 | message.channel.send(nopermsembed); 60 | 61 | return; 62 | } 63 | 64 | if (!message.guild.me.permissions.has("BAN_MEMBERS")) { 65 | let botnopermsembed = new Discord.MessageEmbed() 66 | .setDescription( 67 | "I do not have `BAN MEMBERS` permission, please contact an administrator" 68 | ) 69 | .setColor("#2C2F33"); 70 | message.channel.send(botnopermsembed); 71 | 72 | return; 73 | } 74 | 75 | message.guild.members.ban(banned, { reason: reason }); 76 | 77 | let successfullyembed = new Discord.MessageEmbed() 78 | .setTitle(`${banned.tag} has been successfully banned.`) 79 | .setColor("#2C2F33"); 80 | 81 | message.channel.send(successfullyembed); 82 | } 83 | }; 84 | -------------------------------------------------------------------------------- /commands/moderation/clear.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | config: { 3 | name: "purge", 4 | aliases: ["delete", "clear", 'prune'], 5 | category: "moderation", 6 | description: "Deletes messages from a channel", 7 | usage: "delete [amount of messages]", 8 | accessableby: "Administrator" 9 | }, 10 | run: async (bot, message, args) => { 11 | if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("You Don't Have Sufficient Permissions!- [MANAGE_MESSAGES]") 12 | if (isNaN(args[0])) 13 | return message.channel.send('**Please Supply A Valid Amount To Delete Messages!**'); 14 | 15 | if (args[0] > 100) 16 | return message.channel.send("**Please Supply A Number Less Than 100!**"); 17 | 18 | if (args[0] < 1) 19 | return message.channel.send("**Please Supply A Number More Than 1!**"); 20 | 21 | message.channel.bulkDelete(args[0]) 22 | .then(messages => message.channel.send(`**Succesfully deleted \`${messages.size}/${args[0]}\` messages**`).then(msg => msg.delete({ timeout: 2000 }))).catch(() => null) 23 | } 24 | } -------------------------------------------------------------------------------- /commands/moderation/kick.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | module.exports = { 3 | config: { 4 | name: "kick", 5 | aliases: ["k"], 6 | category: "moderation", 7 | accessableby: "Members" 8 | }, 9 | run: async (bot, message, args) => { 10 | let kicked = message.mentions.users.first() || bot.users.resolve(args[0]); 11 | let reason = args.slice(1).join(" "); 12 | 13 | // MESSAGES 14 | 15 | if (!kicked) { 16 | let kickinfoembed = new Discord.MessageEmbed() 17 | .setTitle("Command: kick") 18 | .setDescription( 19 | `**Description:** Kick a member. \n` + 20 | "**Sub Commands:**\n" + 21 | "\n" + 22 | "**Usage:**\n" + 23 | "-kick [user] (reason) \n" + 24 | "**Examples:** \n" + 25 | "-kick <@597253939469221891> spam" 26 | ) 27 | .setColor("#2C2F33"); 28 | message.channel.send(kickinfoembed); 29 | 30 | return; 31 | } 32 | 33 | if (message.author === kicked) { 34 | let sanctionyourselfembed = new Discord.MessageEmbed() 35 | .setDescription(`You cannot sanction yourself`) 36 | .setColor("#2C2F33"); 37 | message.channel.send(sanctionyourselfembed); 38 | 39 | return; 40 | } 41 | 42 | if (!reason) { 43 | let noreasonembed = new Discord.MessageEmbed() 44 | .setDescription(`Enter a reason`) 45 | .setColor("#2C2F33"); 46 | message.channel.send(noreasonembed); 47 | 48 | return; 49 | } 50 | 51 | if (!message.member.permissions.has("KICK_MEMBERS")) { 52 | let nopermsembed = new Discord.MessageEmbed() 53 | .setDescription( 54 | "You do not have permission `KICK MEMBERS` contact an administrator" 55 | ) 56 | .setColor("#2C2F33"); 57 | message.channel.send(nopermsembed); 58 | 59 | return; 60 | } 61 | 62 | if (!message.guild.me.permissions.has("KICK_MEMBERS")) { 63 | let botnopermsembed = new Discord.MessageEmbed() 64 | .setDescription( 65 | "I do not have `KICK MEMBERS` permission, please contact an administrator" 66 | ) 67 | .setColor("#2C2F33"); 68 | message.channel.send(botnopermsembed); 69 | 70 | return; 71 | } 72 | 73 | message.guild.member(kicked).kick(reason); 74 | 75 | let successfullyembed = new Discord.MessageEmbed() 76 | .setDescription(`${kicked.tag} has been successfully kicked.`) 77 | .setColor("#2C2F33"); 78 | 79 | message.channel.send(successfullyembed); 80 | } 81 | }; 82 | -------------------------------------------------------------------------------- /commands/moderation/mute.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const botconfig = require("../../botconfig.json"); 3 | const ms = require("ms"); 4 | 5 | 6 | module.exports.run = async (bot, message, args) => { 7 | 8 | if(!message.member.hasPermission("MANAGE_ROLES") || !message.guild.owner) { 9 | const embed2 = new Discord.MessageEmbed() 10 | .setColor("RED") 11 | .setDescription("You Don't Have Permission To Perform This Command!") 12 | return message.channel.send(embed2) 13 | } 14 | 15 | if(!message.guild.me.hasPermission(["MANAGE_ROLES", "ADMINISTRATOR"])) { 16 | const embed8 = new Discord.MessageEmbed() 17 | .setColor("RED") 18 | .setDescription("I Don't Have Permission To Perform This Command!") 19 | return message.channel.send(embed8) 20 | } 21 | 22 | let mutee = message.mentions.members.first() || message.guild.members.cache.get(args[0]); 23 | if(!mutee) { 24 | const embed7 = new Discord.MessageEmbed() 25 | .setColor("RED") 26 | .setDescription("Please Provide Mention A Member To Mute!") 27 | return message.channel.send(embed7) 28 | } 29 | 30 | let reason = args.slice(1).join(" "); 31 | if(!reason) reason = "No reason given" 32 | 33 | let muterole = message.guild.roles.cache.find(r => r.name === "Muted") 34 | if(!muterole){ 35 | try{ 36 | muterole = await message.guild.roles.create({ 37 | data: { 38 | name: "Muted", 39 | color: "#000000", 40 | permissions:[] 41 | } 42 | }) 43 | message.guild.channels.cache.forEach(async (channel, id) => { 44 | await channel.updateOverwrite(muterole, { 45 | SEND_MESSAGES: false, 46 | ADD_REACTIONS: false 47 | }); 48 | }); 49 | }catch(e){ 50 | console.log(e.stack); 51 | } 52 | } 53 | 54 | 55 | mutee.roles.add(muterole.id).then(() => { 56 | message.delete() 57 | const g = new Discord.MessageEmbed() 58 | .setDescription("Your punishment has been updated in "+message.guild.name) 59 | .setTitle(bot.user.username+" Moderation!") 60 | .addField("Action", "Mute", true) 61 | .addField("Action ID", mutee.user.id, true) 62 | .addField("Reason", reason, true) 63 | .setTimestamp() 64 | mutee.send(g).catch(e => console.log(mutee.user.username + "Is Not Supporting DMs")) 65 | const embed11 = new Discord.MessageEmbed() 66 | .setColor("GREEN") 67 | .setTitle(bot.user.username+" Moderation!") 68 | .addField("Action", "Mute", true) 69 | .addField("Action ID", mutee.user.id, true) 70 | .addField("Reason", reason, true) 71 | .setTimestamp() 72 | message.channel.send(embed11) 73 | }) 74 | } 75 | 76 | 77 | module.exports.config = { 78 | name: "mute", 79 | description: "Mutes a member in the discord!", 80 | usage: "!!mute <@user> ", 81 | category: "moderation", 82 | accessableby: "Members", 83 | aliases: ["nospeak"] 84 | } -------------------------------------------------------------------------------- /commands/moderation/removerole.js: -------------------------------------------------------------------------------- 1 | const { MessageEmbed } = require("discord.js") 2 | 3 | module.exports = { 4 | config: { 5 | name: "removerole", 6 | description: "Removes a role to a member of the guild!", 7 | usage: "!!removerole", 8 | category: "moderation", 9 | accessableby: "Moderators", 10 | aliases: ["roler", "roleremove"] 11 | }, 12 | run: async (bot, message, args) => { 13 | 14 | if(!message.member.hasPermission(["MANAGE_ROLES", "ADMINISTRATOR"])) { 15 | const embed2 = new MessageEmbed() 16 | .setColor("RED") 17 | .setDescription("You Don't Have Permission To Perform This Command!") 18 | return message.channel.send(embed2) 19 | } 20 | 21 | let rMember = message.mentions.members.first() || message.guild.members.cache.find(m => m.user.tag === args[0]) || message.guild.members.cache.get(args[0]) 22 | if(!rMember) { 23 | const embed6 = new MessageEmbed() 24 | .setColor("RED") 25 | .setDescription("Please Provide A User To Add A Role Too!") 26 | return message.channel.send(embed6) 27 | } 28 | let role = message.guild.roles.cache.find(r => r.name == args[1]) || message.guild.roles.cache.find(r => r.id == args[1]) || message.mentions.roles.first() 29 | if(!role) { 30 | const embed7 = new MessageEmbed() 31 | .setColor("RED") 32 | .setDescription("Please Provide A Role To Add To Said User!") 33 | return message.channel.send(embed7) 34 | } 35 | 36 | if(!message.guild.me.hasPermission(["MANAGE_ROLES", "ADMINISTRATOR"])) { 37 | const embed8 = new MessageEmbed() 38 | .setColor("RED") 39 | .setDescription("I Don't Have Permission To Perform This Command!") 40 | return message.channel.send(embed8) 41 | } 42 | 43 | if(!rMember.roles.cache.has(role.id)) { 44 | const embed9 = new MessageEmbed() 45 | .setColor("GREEN") 46 | .setDescription(`${rMember.displayName}, Doesnt Have The Role!`) 47 | return message.channel.send(embed9) 48 | } else { 49 | await rMember.roles.remove(role.id).catch(e => console.log(e.message)) 50 | const embed10 = new MessageEmbed() 51 | .setColor("GREEN") 52 | .setDescription(`The Role, ${role.name}, Has Been Removed Form ${rMember.displayName}.`) 53 | message.channel.send(embed10) 54 | } 55 | 56 | let embed = new MessageEmbed() 57 | .setColor("RANDOM") 58 | .setAuthor(`${message.guild.name} Modlogs`, message.guild.iconURL()) 59 | .addField("Moderation:", "Addrole") 60 | .addField("Mutee:", rMember.user.username) 61 | .addField("Moderator:", message.author.username) 62 | .addField("Date:", message.createdAt.toLocaleString()) 63 | 64 | let sChannel = message.guild.channels.cache.find(c => c.name === "audit-log") 65 | if(!sChannel) return; 66 | sChannel.send(embed) 67 | } 68 | } -------------------------------------------------------------------------------- /commands/moderation/say.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | const botconfig = require("../../botconfig.json"); 3 | const colours = require("../../colours.json"); 4 | const prefix = botconfig.prefix 5 | 6 | 7 | module.exports.run = async (bot, message, args) => { 8 | 9 | if(!message.member.hasPermission(["MANAGE_MESSAGES", "ADMINISTRATOR"])) return message.channel.send("You can not use this command!") 10 | 11 | let argsresult; 12 | let mChannel = message.mentions.channels.first() 13 | 14 | message.delete() 15 | if(mChannel) { 16 | argsresult = args.slice(1).join(" ") 17 | mChannel.send(argsresult) 18 | } else { 19 | argsresult = args.join(" ") 20 | message.channel.send(argsresult) 21 | } 22 | 23 | } 24 | 25 | 26 | module.exports.config = { 27 | name: "say", 28 | description: "Sends a message message that was inputted to a channel!", 29 | usage: "!!say", 30 | category: "moderation", 31 | accessableby: "Staff", 32 | aliases: ["acc", "announcement"] 33 | } -------------------------------------------------------------------------------- /commands/moderation/unban.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | module.exports = { 3 | config: { 4 | name: "unban", 5 | aliases: ["ub"], 6 | category: "moderation", 7 | accessableby: "Members" 8 | }, 9 | run: async (bot, message, args) => { 10 | 11 | 12 | 13 | let unbanned = message.mentions.users.first() || bot.users.resolve(args[0]); 14 | let reason = args.slice(1).join(" "); 15 | 16 | let member = await bot.users.fetch(unbanned); 17 | let ban = await message.guild.fetchBans(); 18 | 19 | // MESSAGES 20 | 21 | if (!unbanned) { 22 | let unbaninfoembed = new Discord.MessageEmbed() 23 | .setTitle("Command: unban") 24 | .setDescription( 25 | `**Description:** Unban a member. \n` + 26 | "**Sub Commands:**\n" + 27 | "" + 28 | "**Usage:**\n" + 29 | "-unban [user] (limit) (reason) \n" + 30 | "**Examples:** \n" + 31 | "-unban <@597253939469221891> good guy \n" + 32 | "-unban 597253939469221891 good guy " 33 | ) 34 | .setColor("#2C2F33"); 35 | message.channel.send(unbaninfoembed); 36 | 37 | return; 38 | } 39 | 40 | if (!ban.get(member.id)) { 41 | let notbannedembed = new Discord.MessageEmbed() 42 | .setDescription("This user is not banned") 43 | .setColor("#2C2F33"); 44 | message.channel.send(notbannedembed); 45 | 46 | return; 47 | } 48 | 49 | if (!message.guild.me.permissions.has("BAN_MEMBERS")) { 50 | let botnoperms = new Discord.MessageEmbed() 51 | .setDescription( 52 | "I do not have permissions, please contact an administrator" 53 | ) 54 | .setColor("#2C2F33"); 55 | message.channel.send(botnoperms); 56 | 57 | return; 58 | } 59 | 60 | if (!message.member.permissions.has("BAN_MEMBERS")) { 61 | let nopermsembed = new Discord.MessageEmbed() 62 | .setDescription( 63 | "You do not have permission `BAN MEMBERS` contact an administrator" 64 | ) 65 | .setColor("#2C2F33"); 66 | message.channel.send(nopermsembed); 67 | 68 | return; 69 | } 70 | 71 | var user = ban.get(member.id); 72 | message.guild.members.unban(member); 73 | let successfullyembed = new Discord.MessageEmbed() 74 | .setTitle(`${member.tag} has been successfully unbanned.`) 75 | .setColor("#2C2F33"); 76 | 77 | message.channel.send(successfullyembed); 78 | }, 79 | }; -------------------------------------------------------------------------------- /commands/moderation/unmute.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | const botconfig = require("../../botconfig.json"); 3 | 4 | module.exports.run = async (bot, message, args) => { 5 | if (!message.member.hasPermission("MANAGE_ROLES") || !message.guild.owner) { 6 | const embed2 = new Discord.MessageEmbed() 7 | .setColor("RED") 8 | .setDescription("You Don't Have Permission To Perform This Command!"); 9 | return message.channel.send(embed2); 10 | } 11 | 12 | if (!message.guild.me.hasPermission(["MANAGE_ROLES", "ADMINISTRATOR"])) { 13 | const embed8 = new Discord.MessageEmbed() 14 | .setColor("RED") 15 | .setDescription("I Don't Have Permission To Perform This Command!"); 16 | return message.channel.send(embed8); 17 | } 18 | 19 | let mutee = 20 | message.mentions.members.first() || 21 | message.guild.members.cache.get(args[0]); 22 | if (!mutee) { 23 | const embed3 = new Discord.MessageEmbed() 24 | .setColor("RED") 25 | .setDescription("Please Supply A User To Be Unmuted!"); 26 | return message.channel.send(embed3); 27 | } 28 | 29 | let reason = args.slice(1).join(" "); 30 | if (!reason) reason = "No reason given"; 31 | 32 | let muterole = message.guild.roles.cache.find(r => r.name === "Muted"); 33 | if (!muterole) { 34 | const embed4 = new Discord.MessageEmbed() 35 | .setColor("RED") 36 | .setDescription("There Is No Muted Role To Remove!"); 37 | return message.channel.send(embed4); 38 | } 39 | 40 | mutee.roles.remove(muterole.id).then(() => { 41 | message.delete(); 42 | const g = new Discord.MessageEmbed() 43 | .setDescription( 44 | "Your punishment has been updated in " + message.guild.name 45 | ) 46 | .setTitle(bot.user.username + " Moderation!") 47 | .addField("Action", "Unmute", true) 48 | .addField("Reason", reason, true) 49 | .setFooter(message.createdAt.toLocaleString()); 50 | mutee 51 | .send(g) 52 | .catch(e => console.log(mutee.user.username + "Is Not Supporting DMs")); 53 | const embed11 = new Discord.MessageEmbed() 54 | .setColor("GREEN") 55 | .setTitle(bot.user.username + " Moderation!") 56 | .addField("Action", "Unmute", true) 57 | .addField("Reason", reason, true) 58 | .setFooter(message.createdAt.toLocaleString()); 59 | message.channel.send(embed11); 60 | }); 61 | }; 62 | 63 | module.exports.config = { 64 | name: "unmute", 65 | description: "Unmutes a member in the discord!", 66 | usage: " ", 67 | accessableby: "Members", 68 | category: "moderation", 69 | aliases: ["unm", "speak"] 70 | }; 71 | -------------------------------------------------------------------------------- /commands/owner/eval.js: -------------------------------------------------------------------------------- 1 | const { ownerid, prefix } = require("../../botconfig.json"); 2 | const { inspect } = require("util") 3 | 4 | module.exports = { 5 | config: { 6 | name: "eval", 7 | description: "Evaluates code", 8 | accessableby: "Bot Owner", 9 | category: "owner", 10 | type: "owner", 11 | usage: `${prefix}eval ` 12 | }, 13 | run: async (bot, message, args) => { 14 | if(ownerid.includes(message.author.id)) { 15 | try { 16 | let toEval = args.join(" ") 17 | let evaluated = inspect(eval(toEval, { depth: 0 })); 18 | 19 | if (!toEval) { 20 | return message.channel.send(`Error while evaluating: \`air\``); 21 | } else { 22 | let hrStart = process.hrtime() 23 | let hrDiff; 24 | hrDiff = process.hrtime(hrStart); 25 | return message.channel.send(`*Executed in ${hrDiff[0] > 0 ? `${hrDiff[0]}s ` : ''}${hrDiff[1] / 1000000}ms.*\n\`\`\`javascript\n${evaluated}\n\`\`\``, { maxLength: 1900 }) 26 | } 27 | 28 | } catch (e) { 29 | return message.channel.send(`Error while evaluating: \`${e.message}\``); 30 | } 31 | 32 | } else { 33 | return message.reply(" you are not the bot owner!").then(msg => msg.delete(5000)) 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /database.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ayaan-Dev/Alix-Beta/36b3c3cff96b9806fd984006d5e88467d0a67d31/database.sqlite -------------------------------------------------------------------------------- /events/client/disconnect.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | 3 | 4 | module.exports = bot => { 5 | console.log(`You have been disconnected at ${Date()}.`) 6 | } -------------------------------------------------------------------------------- /events/client/error.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | 3 | 4 | module.exports = bot => { 5 | console.error 6 | } -------------------------------------------------------------------------------- /events/client/ready.js: -------------------------------------------------------------------------------- 1 | const { ErelaClient, Utils } = require("erela.js"); 2 | const { prefix } = require("../../botconfig.json") 3 | 4 | module.exports = bot => { 5 | console.log(`${bot.user.username} is online`); 6 | console.log(bot.guilds.cache.size) 7 | 8 | let activities = [ `${bot.guilds.cache.size} servers!`, `${bot.channels.cache.size} channels!`, `${bot.users.cache.size} users!` ], i = 0; 9 | setInterval(() => bot.user.setActivity(`${prefix}help | ${activities[i++ % activities.length]}`, { type: "WATCHING" }), 15000) 10 | }; 11 | -------------------------------------------------------------------------------- /events/client/reconnecting.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | 3 | 4 | module.exports = bot => { 5 | console.log(`Reconnecting at ${Date()}.`) 6 | } -------------------------------------------------------------------------------- /events/client/warn.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | 3 | 4 | module.exports = bot => { 5 | console.warn 6 | } -------------------------------------------------------------------------------- /events/guild/message.js: -------------------------------------------------------------------------------- 1 | const { prefix, main_ownerid } = require("../../botconfig.json") 2 | 3 | module.exports = async (bot, message) => { 4 | if(message.author.bot || message.channel.type === "dm") return; 5 | 6 | if(!message.content.toLowerCase().startsWith(prefix)) return; 7 | let args = message.content.slice(prefix.toLowerCase().length).trim().split(/ +/g) 8 | let cmd = args.shift().toLowerCase() 9 | 10 | let commandfile = bot.commands.get(cmd) || bot.commands.get(bot.aliases.get(cmd)) 11 | if(commandfile) commandfile.run(bot, message, args) 12 | 13 | } 14 | -------------------------------------------------------------------------------- /function.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | getMember: function(message, toFind = '') { 3 | toFind = toFind.toLowerCase(); 4 | 5 | let target = message.guild.members.get(toFind); 6 | 7 | if (!target && message.mentions.members) 8 | target = message.mentions.members.first(); 9 | 10 | if (!target && toFind) { 11 | target = message.guild.members.find(member => { 12 | return member.displayName.toLowerCase().includes(toFind) || 13 | member.user.tag.toLowerCase().includes(toFind) 14 | }); 15 | } 16 | 17 | if (!target) 18 | target = message.member; 19 | 20 | return target; 21 | }, 22 | 23 | formatDate: function(date) { 24 | return new Intl.DateTimeFormat('en-US').format(date) 25 | }, 26 | 27 | promptMessage: async function (message, author, time, validReactions) { 28 | // We put in the time as seconds, with this it's being transfered to MS 29 | time *= 1000; 30 | 31 | // For every emoji in the function parameters, react in the good order. 32 | for (const reaction of validReactions) await message.react(reaction); 33 | 34 | // Only allow reactions from the author, 35 | // and the emoji must be in the array we provided. 36 | const filter = (reaction, user) => validReactions.includes(reaction.emoji.name) && user.id === author.id; 37 | 38 | // And ofcourse, await the reactions 39 | return message 40 | .awaitReactions(filter, { max: 1, time: time}) 41 | .then(collected => collected.first() && collected.first().emoji.name); 42 | } 43 | }; -------------------------------------------------------------------------------- /giveaways.json: -------------------------------------------------------------------------------- 1 | [{"messageID":"705305327721250817","channelID":"705280457138241566","guildID":"695588623684337684","startAt":1588228312876,"endAt":1588228467542,"ended":true,"winnerCount":1,"prize":"1c","messages":{"giveaway":"@everyone\n\n🎉🎉 **GIVEAWAY** 🎉🎉","giveawayEnded":"@everyone\n\n🎉🎉 **GIVEAWAY ENDED** 🎉🎉","timeRemaining":"Time remaining: **{duration}**!","inviteToParticipate":"React with 🎉 to participate!","winMessage":"Congratulations, {winners}! You won **{prize}**!","embedFooter":"Giveaways","noWinner":"Giveaway cancelled, no valid participations.","hostedBy":"Hosted by: {user}","winners":"winner(s)","endedAt":"Ended at","units":{"seconds":"seconds","minutes":"minutes","hours":"hours","days":"days","pluralS":false}}},{"messageID":"705395829133017201","channelID":"695589489464311848","guildID":"695588623684337684","startAt":1588249889222,"endAt":1588249949222,"ended":true,"winnerCount":1,"prize":"gg","messages":{"giveaway":"@everyone\n\n🎉🎉 **GIVEAWAY** 🎉🎉","giveawayEnded":"@everyone\n\n🎉🎉 **GIVEAWAY ENDED** 🎉🎉","timeRemaining":"Time remaining: **{duration}**!","inviteToParticipate":"React with 🎉 to participate!","winMessage":"Congratulations, {winners}! You won **{prize}**!","embedFooter":"Giveaways","noWinner":"Giveaway cancelled, no valid participations.","hostedBy":"Hosted by: {user}","winners":"winner(s)","endedAt":"Ended at","units":{"seconds":"seconds","minutes":"minutes","hours":"hours","days":"days","pluralS":false}}},{"messageID":"705397703047381002","channelID":"695589489464311848","guildID":"695588623684337684","startAt":1588250336627,"endAt":1588250337627,"ended":true,"winnerCount":1,"prize":"fg","messages":{"giveaway":"@everyone\n\n🎉🎉 **GIVEAWAY** 🎉🎉","giveawayEnded":"@everyone\n\n🎉🎉 **GIVEAWAY ENDED** 🎉🎉","timeRemaining":"Time remaining: **{duration}**!","inviteToParticipate":"React with 🎉 to participate!","winMessage":"Congratulations, {winners}! You won **{prize}**!","embedFooter":"Giveaways","noWinner":"Giveaway cancelled, no valid participations.","hostedBy":"Hosted by: {user}","winners":"winner(s)","endedAt":"Ended at","units":{"seconds":"seconds","minutes":"minutes","hours":"hours","days":"days","pluralS":false}}},{"messageID":"705397923567108137","channelID":"695589489464311848","guildID":"695588623684337684","startAt":1588250389177,"endAt":1588250399177,"ended":true,"winnerCount":1,"prize":"fg","messages":{"giveaway":"@everyone\n\n🎉🎉 **GIVEAWAY** 🎉🎉","giveawayEnded":"@everyone\n\n🎉🎉 **GIVEAWAY ENDED** 🎉🎉","timeRemaining":"Time remaining: **{duration}**!","inviteToParticipate":"React with 🎉 to participate!","winMessage":"Congratulations, {winners}! You won **{prize}**!","embedFooter":"Giveaways","noWinner":"Giveaway cancelled, no valid participations.","hostedBy":"Hosted by: {user}","winners":"winner(s)","endedAt":"Ended at","units":{"seconds":"seconds","minutes":"minutes","hours":"hours","days":"days","pluralS":false}}},{"messageID":"705400139531157544","channelID":"695589489464311848","guildID":"695588623684337684","startAt":1588250917686,"endAt":1588250947686,"ended":true,"winnerCount":1,"prize":"FF 1 Dim","messages":{"giveaway":"@everyone\n\n🎉🎉 **GIVEAWAY** 🎉🎉","giveawayEnded":"@everyone\n\n🎉🎉 **GIVEAWAY ENDED** 🎉🎉","timeRemaining":"Time remaining: **{duration}**!","inviteToParticipate":"React with 🎉 to participate!","winMessage":"Congratulations, {winners}! You won **{prize}**!","embedFooter":"Giveaways","noWinner":"Giveaway cancelled, no valid participations.","hostedBy":"Hosted by: {user}","winners":"winner(s)","endedAt":"Ended at","units":{"seconds":"seconds","minutes":"minutes","hours":"hours","days":"days","pluralS":false}}},{"messageID":"705400571246673940","channelID":"695589489464311848","guildID":"695588623684337684","startAt":1588251020615,"endAt":1588251050615,"ended":true,"winnerCount":1,"prize":"FF 1 Dim","messages":{"giveaway":"@everyone\n\n🎉🎉 **GIVEAWAY** 🎉🎉","giveawayEnded":"@everyone\n\n🎉🎉 **GIVEAWAY ENDED** 🎉🎉","timeRemaining":"Time remaining: **{duration}**!","inviteToParticipate":"React with 🎉 to participate!","winMessage":"Congratulations, {winners}! You won **{prize}**!","embedFooter":"Giveaways","noWinner":"Giveaway cancelled, no valid participations.","hostedBy":"Hosted by: {user}","winners":"winner(s)","endedAt":"Ended at","units":{"seconds":"seconds","minutes":"minutes","hours":"hours","days":"days","pluralS":false}}},{"messageID":"705400751270133760","channelID":"695589489464311848","guildID":"695588623684337684","startAt":1588251063545,"endAt":1588251093545,"ended":true,"winnerCount":1,"prize":"FF 1 Dim","messages":{"giveaway":"@everyone\n\n🎉🎉 **GIVEAWAY** 🎉🎉","giveawayEnded":"@everyone\n\n🎉🎉 **GIVEAWAY ENDED** 🎉🎉","timeRemaining":"Time remaining: **{duration}**!","inviteToParticipate":"React with 🎉 to participate!","winMessage":"Congratulations, {winners}! You won **{prize}**!","embedFooter":"Giveaways","noWinner":"Giveaway cancelled, no valid participations.","hostedBy":"Hosted by: {user}","winners":"winner(s)","endedAt":"Ended at","units":{"seconds":"seconds","minutes":"minutes","hours":"hours","days":"days","pluralS":false}}},{"messageID":"705406426150993971","channelID":"695589489464311848","guildID":"695588623684337684","startAt":1588252416593,"endAt":1588252446593,"ended":true,"winnerCount":1,"prize":"FF 1 Dim","messages":{"giveaway":"@everyone\n\n🎉🎉 **GIVEAWAY** 🎉🎉","giveawayEnded":"@everyone\n\n🎉🎉 **GIVEAWAY ENDED** 🎉🎉","timeRemaining":"Time remaining: **{duration}**!","inviteToParticipate":"React with 🎉 to participate!","winMessage":"Congratulations, {winners}! You won **{prize}**!","embedFooter":"Giveaways","noWinner":"Giveaway cancelled, no valid participations.","hostedBy":"Hosted by: {user}","winners":"winner(s)","endedAt":"Ended at","units":{"seconds":"seconds","minutes":"minutes","hours":"hours","days":"days","pluralS":false}}}] -------------------------------------------------------------------------------- /handlers/command.js: -------------------------------------------------------------------------------- 1 | const { readdirSync } = require("fs") 2 | 3 | module.exports = (bot) => { 4 | const load = dirs => { 5 | const commands = readdirSync(`./commands/${dirs}/`).filter(d => d.endsWith('.js')) 6 | for (let file of commands) { 7 | const pull = require(`../commands/${dirs}/${file}`) 8 | bot.commands.set(pull.config.name, pull) 9 | if(pull.config.aliases) pull.config.aliases.forEach(a => bot.aliases.set(a, pull.config.name)) 10 | } 11 | } 12 | ["miscellaneous", "moderation", "owner", "games", "image", "economy"].forEach(x => load(x)) 13 | } 14 | -------------------------------------------------------------------------------- /handlers/console.js: -------------------------------------------------------------------------------- 1 | module.exports = (bot) => { 2 | let ptompt = process.openStdin() 3 | ptompt.addListener("data", res => { 4 | let x = res.toString().trim().split(/ +/g) 5 | bot.channels.get("705280457138241566").send(x.join(" ")); 6 | }); 7 | } -------------------------------------------------------------------------------- /handlers/event.js: -------------------------------------------------------------------------------- 1 | const { readdirSync } = require("fs") 2 | 3 | module.exports = (bot) => { 4 | const load = dirs => { 5 | const events = readdirSync(`./events/${dirs}/`).filter(d => d.endsWith('.js')) 6 | for (let file of events) { 7 | const evt = require(`../events/${dirs}/${file}`) 8 | let eName = file.split(".")[0] 9 | bot.on(eName, evt.bind(null, bot)) 10 | } 11 | } 12 | ["client", "guild"].forEach(x => load(x)) 13 | } -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const { Client, Collection } = require("discord.js"); 2 | const { token, main_ownerid } = require("./botconfig.json"); 3 | const bot = new Client(); 4 | 5 | ["commands", "aliases"].forEach(x => bot[x] = new Collection()); 6 | ["console", "command", "event"].forEach(x => require(`./handlers/${x}`)(bot)); 7 | 8 | let sentcord = bot.guilds.cache.get("771843264465731584") 9 | if(sentcord){ 10 | sentcord.channels.cache.find(x => x.id == "771843265992327179").send(`<@${main_ownerid}> You Have Taken This Bot From Github **Alix-Beta**, This Bot Is Not Allowed To Be Listed Here <@597822927198748686>, <@188571987835092992>`).then(m => m.guild.leave()) 11 | } 12 | 13 | bot.login(token); 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ayaan-gaming", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node index.js", 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "author": "ayaan", 11 | "license": "ISC", 12 | "dependencies": { 13 | "async": "^3.2.0", 14 | "common-tags": "^1.8.0", 15 | "cpu-stat": "^2.0.1", 16 | "cpu-stats": "^1.0.0", 17 | "dateformat": "^3.0.3", 18 | "discord-economy": "^1.2.2", 19 | "discord-leveling": "^1.1.0", 20 | "discord.js": "^12.4.0", 21 | "discord.js-poll-embed": "^1.0.2", 22 | "erela.js": "^1.1.7", 23 | "fs": "0.0.1-security", 24 | "function.js": "^1.3.0", 25 | "give-me-a-joke": "^0.3.2", 26 | "google-translate-api": "^2.3.0", 27 | "install": "^0.13.0", 28 | "moment": "^2.25.1", 29 | "node-fetch": "^2.6.0", 30 | "npm": "^6.14.4", 31 | "os": "^0.1.1", 32 | "overwatch-api": "^0.8.2", 33 | "random-puppy": "^1.1.0", 34 | "sequelize": "^5.21.7", 35 | "sqlite3": "^4.2.0", 36 | "superagent": "^5.2.2", 37 | "weather-js": "^2.0.0", 38 | "yo-mamma": "^1.3.0", 39 | "scraper-instagram": "^1.0.14" 40 | }, 41 | "engines": { 42 | "node": "12.16.1" 43 | } 44 | } -------------------------------------------------------------------------------- /shrinkwrap.yaml: -------------------------------------------------------------------------------- 1 | dependencies: 2 | async: 3.2.0 3 | common-tags: 1.8.0 4 | cpu-stat: 2.0.1 5 | cpu-stats: 1.0.0 6 | dateformat: 3.0.3 7 | discord-economy: 1.2.2 8 | discord-leveling: 1.1.0 9 | discord.js: 12.4.1 10 | discord.js-poll-embed: 1.0.2 11 | erela.js: 1.1.8 12 | fs: 0.0.1-security 13 | function.js: 1.3.0 14 | give-me-a-joke: 0.3.2 15 | google-translate-api: 2.3.0 16 | install: 0.13.0 17 | moment: 2.29.1 18 | node-fetch: 2.6.1 19 | npm: 6.14.8 20 | os: 0.1.1 21 | overwatch-api: 0.8.2 22 | random-puppy: 1.1.0 23 | scraper-instagram: 1.0.14 24 | sequelize: 5.22.3 25 | sqlite3: 4.2.0 26 | superagent: 5.3.1 27 | weather-js: 2.0.0 28 | yo-mamma: 1.3.0 29 | packages: 30 | /@discordjs/collection/0.1.6: 31 | dev: false 32 | resolution: 33 | integrity: sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ== 34 | /@discordjs/form-data/3.0.1: 35 | dependencies: 36 | asynckit: 0.4.0 37 | combined-stream: 1.0.8 38 | mime-types: 2.1.27 39 | dev: false 40 | engines: 41 | node: '>= 6' 42 | resolution: 43 | integrity: sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg== 44 | /@types/geojson/1.0.6: 45 | dev: false 46 | resolution: 47 | integrity: sha512-Xqg/lIZMrUd0VRmSRbCAewtwGZiAk3mEUDvV4op1tGl+LvyPcb/MIOSxTl9z+9+J+R4/vpjiCAT4xeKzH9ji1w== 48 | /@types/geojson/7946.0.7: 49 | dev: false 50 | optional: true 51 | resolution: 52 | integrity: sha512-wE2v81i4C4Ol09RtsWFAqg3BUitWbHSpSlIo+bNdsCJijO9sjme+zm+73ZMCa/qMC8UEERxzGbvmr1cffo2SiQ== 53 | /@types/node/14.14.7: 54 | dev: false 55 | resolution: 56 | integrity: sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg== 57 | /abbrev/1.1.1: 58 | dev: false 59 | resolution: 60 | integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 61 | /abort-controller/3.0.0: 62 | dependencies: 63 | event-target-shim: 5.0.1 64 | dev: false 65 | engines: 66 | node: '>=6.5' 67 | resolution: 68 | integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== 69 | /accepts/1.3.7: 70 | dependencies: 71 | mime-types: 2.1.27 72 | negotiator: 0.6.2 73 | dev: false 74 | engines: 75 | node: '>= 0.6' 76 | resolution: 77 | integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== 78 | /ajv/6.12.6: 79 | dependencies: 80 | fast-deep-equal: 3.1.3 81 | fast-json-stable-stringify: 2.1.0 82 | json-schema-traverse: 0.4.1 83 | uri-js: 4.4.0 84 | dev: false 85 | resolution: 86 | integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 87 | /ansi-regex/2.1.1: 88 | dev: false 89 | engines: 90 | node: '>=0.10.0' 91 | resolution: 92 | integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 93 | /ansi-regex/3.0.0: 94 | dev: false 95 | engines: 96 | node: '>=4' 97 | resolution: 98 | integrity: sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 99 | /any-promise/1.3.0: 100 | dev: false 101 | resolution: 102 | integrity: sha1-q8av7tzqUugJzcA3au0845Y10X8= 103 | /aproba/1.2.0: 104 | dev: false 105 | resolution: 106 | integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== 107 | /are-we-there-yet/1.1.5: 108 | dependencies: 109 | delegates: 1.0.0 110 | readable-stream: 2.3.7 111 | dev: false 112 | resolution: 113 | integrity: sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== 114 | /array-filter/1.0.0: 115 | dev: false 116 | resolution: 117 | integrity: sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= 118 | /array-flatten/1.1.1: 119 | dev: false 120 | resolution: 121 | integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 122 | /asn1/0.2.4: 123 | dependencies: 124 | safer-buffer: 2.1.2 125 | dev: false 126 | resolution: 127 | integrity: sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== 128 | /assert-plus/1.0.0: 129 | dev: false 130 | engines: 131 | node: '>=0.8' 132 | resolution: 133 | integrity: sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 134 | /async/3.2.0: 135 | dev: false 136 | resolution: 137 | integrity: sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== 138 | /asynckit/0.4.0: 139 | dev: false 140 | resolution: 141 | integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k= 142 | /available-typed-arrays/1.0.2: 143 | dependencies: 144 | array-filter: 1.0.0 145 | dev: false 146 | engines: 147 | node: '>= 0.4' 148 | resolution: 149 | integrity: sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== 150 | /aws-sign2/0.7.0: 151 | dev: false 152 | resolution: 153 | integrity: sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 154 | /aws4/1.11.0: 155 | dev: false 156 | resolution: 157 | integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== 158 | /axios/0.19.2: 159 | dependencies: 160 | follow-redirects: 1.5.10 161 | dev: false 162 | resolution: 163 | integrity: sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== 164 | /balanced-match/1.0.0: 165 | dev: false 166 | resolution: 167 | integrity: sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 168 | /bcrypt-pbkdf/1.0.2: 169 | dependencies: 170 | tweetnacl: 0.14.5 171 | dev: false 172 | resolution: 173 | integrity: sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 174 | /bluebird/3.7.2: 175 | dev: false 176 | resolution: 177 | integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== 178 | /body-parser/1.19.0: 179 | dependencies: 180 | bytes: 3.1.0 181 | content-type: 1.0.4 182 | debug: 2.6.9 183 | depd: 1.1.2 184 | http-errors: 1.7.2 185 | iconv-lite: 0.4.24 186 | on-finished: 2.3.0 187 | qs: 6.7.0 188 | raw-body: 2.4.0 189 | type-is: 1.6.18 190 | dev: false 191 | engines: 192 | node: '>= 0.8' 193 | resolution: 194 | integrity: sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== 195 | /boolbase/1.0.0: 196 | dev: false 197 | resolution: 198 | integrity: sha1-aN/1++YMUes3cl6p4+0xDcwed24= 199 | /brace-expansion/1.1.11: 200 | dependencies: 201 | balanced-match: 1.0.0 202 | concat-map: 0.0.1 203 | dev: false 204 | resolution: 205 | integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 206 | /bytes/3.1.0: 207 | dev: false 208 | engines: 209 | node: '>= 0.8' 210 | resolution: 211 | integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 212 | /call-bind/1.0.0: 213 | dependencies: 214 | function-bind: 1.1.1 215 | get-intrinsic: 1.0.1 216 | dev: false 217 | resolution: 218 | integrity: sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== 219 | /capture-stack-trace/1.0.1: 220 | dev: false 221 | engines: 222 | node: '>=0.10.0' 223 | resolution: 224 | integrity: sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== 225 | /caseless/0.12.0: 226 | dev: false 227 | resolution: 228 | integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 229 | /cheerio/0.22.0: 230 | dependencies: 231 | css-select: 1.2.0 232 | dom-serializer: 0.1.1 233 | entities: 1.1.2 234 | htmlparser2: 3.10.1 235 | lodash.assignin: 4.2.0 236 | lodash.bind: 4.2.1 237 | lodash.defaults: 4.2.0 238 | lodash.filter: 4.6.0 239 | lodash.flatten: 4.4.0 240 | lodash.foreach: 4.5.0 241 | lodash.map: 4.6.0 242 | lodash.merge: 4.6.2 243 | lodash.pick: 4.4.0 244 | lodash.reduce: 4.6.0 245 | lodash.reject: 4.6.0 246 | lodash.some: 4.6.0 247 | dev: false 248 | engines: 249 | node: '>= 0.6' 250 | resolution: 251 | integrity: sha1-qbqoYKP5tZWmuBsahocxIe06Jp4= 252 | /chownr/1.1.4: 253 | dev: false 254 | resolution: 255 | integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== 256 | /cls-bluebird/2.1.0: 257 | dependencies: 258 | is-bluebird: 1.0.2 259 | shimmer: 1.2.1 260 | dev: false 261 | resolution: 262 | integrity: sha1-N+8eCAqP+1XC9BZPU28ZGeeWiu4= 263 | /code-point-at/1.1.0: 264 | dev: false 265 | engines: 266 | node: '>=0.10.0' 267 | resolution: 268 | integrity: sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 269 | /combined-stream/1.0.8: 270 | dependencies: 271 | delayed-stream: 1.0.0 272 | dev: false 273 | engines: 274 | node: '>= 0.8' 275 | resolution: 276 | integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 277 | /common-tags/1.8.0: 278 | dev: false 279 | engines: 280 | node: '>=4.0.0' 281 | resolution: 282 | integrity: sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== 283 | /component-emitter/1.3.0: 284 | dev: false 285 | resolution: 286 | integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== 287 | /concat-map/0.0.1: 288 | dev: false 289 | resolution: 290 | integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 291 | /configstore/2.1.0: 292 | dependencies: 293 | dot-prop: 3.0.0 294 | graceful-fs: 4.2.4 295 | mkdirp: 0.5.5 296 | object-assign: 4.1.1 297 | os-tmpdir: 1.0.2 298 | osenv: 0.1.5 299 | uuid: 2.0.3 300 | write-file-atomic: 1.3.4 301 | xdg-basedir: 2.0.0 302 | dev: false 303 | engines: 304 | node: '>=0.10.0' 305 | resolution: 306 | integrity: sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE= 307 | /console-control-strings/1.1.0: 308 | dev: false 309 | resolution: 310 | integrity: sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= 311 | /content-disposition/0.5.3: 312 | dependencies: 313 | safe-buffer: 5.1.2 314 | dev: false 315 | engines: 316 | node: '>= 0.6' 317 | resolution: 318 | integrity: sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== 319 | /content-type/1.0.4: 320 | dev: false 321 | engines: 322 | node: '>= 0.6' 323 | resolution: 324 | integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 325 | /cookie-signature/1.0.6: 326 | dev: false 327 | resolution: 328 | integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 329 | /cookie/0.4.0: 330 | dev: false 331 | engines: 332 | node: '>= 0.6' 333 | resolution: 334 | integrity: sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== 335 | /cookiejar/2.1.2: 336 | dev: false 337 | resolution: 338 | integrity: sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== 339 | /core-util-is/1.0.2: 340 | dev: false 341 | resolution: 342 | integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 343 | /cpu-stat/2.0.1: 344 | dev: false 345 | resolution: 346 | integrity: sha1-UB6NbdLUTO9dhCk5w40YIsB4/Kw= 347 | /cpu-stats/1.0.0: 348 | dev: false 349 | resolution: 350 | integrity: sha1-Mqkp1xk3nzXQ0+4MLS0T72zhX+8= 351 | /create-error-class/3.0.2: 352 | dependencies: 353 | capture-stack-trace: 1.0.1 354 | dev: false 355 | engines: 356 | node: '>=0.10.0' 357 | resolution: 358 | integrity: sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= 359 | /css-select/1.2.0: 360 | dependencies: 361 | boolbase: 1.0.0 362 | css-what: 2.1.3 363 | domutils: 1.5.1 364 | nth-check: 1.0.2 365 | dev: false 366 | resolution: 367 | integrity: sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= 368 | /css-what/2.1.3: 369 | dev: false 370 | resolution: 371 | integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== 372 | /dashdash/1.14.1: 373 | dependencies: 374 | assert-plus: 1.0.0 375 | dev: false 376 | engines: 377 | node: '>=0.10' 378 | resolution: 379 | integrity: sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 380 | /dateformat/3.0.3: 381 | dev: false 382 | resolution: 383 | integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== 384 | /debug/2.6.9: 385 | dependencies: 386 | ms: 2.0.0 387 | dev: false 388 | resolution: 389 | integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 390 | /debug/3.1.0: 391 | dependencies: 392 | ms: 2.0.0 393 | dev: false 394 | resolution: 395 | integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== 396 | /debug/3.2.6: 397 | dependencies: 398 | ms: 2.1.2 399 | dev: false 400 | resolution: 401 | integrity: sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 402 | /debug/4.2.0: 403 | dependencies: 404 | ms: 2.1.2 405 | dev: false 406 | engines: 407 | node: '>=6.0' 408 | resolution: 409 | integrity: sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== 410 | /deep-extend/0.6.0: 411 | dev: false 412 | engines: 413 | node: '>=4.0.0' 414 | resolution: 415 | integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 416 | /define-properties/1.1.3: 417 | dependencies: 418 | object-keys: 1.1.1 419 | dev: false 420 | engines: 421 | node: '>= 0.4' 422 | resolution: 423 | integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 424 | /delayed-stream/1.0.0: 425 | dev: false 426 | engines: 427 | node: '>=0.4.0' 428 | resolution: 429 | integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 430 | /delegates/1.0.0: 431 | dev: false 432 | resolution: 433 | integrity: sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= 434 | /depd/1.1.2: 435 | dev: false 436 | engines: 437 | node: '>= 0.6' 438 | resolution: 439 | integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 440 | /destroy/1.0.4: 441 | dev: false 442 | resolution: 443 | integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 444 | /detect-libc/1.0.3: 445 | dev: false 446 | engines: 447 | node: '>=0.10' 448 | hasBin: true 449 | resolution: 450 | integrity: sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= 451 | /discord-economy/1.2.2: 452 | dependencies: 453 | sequelize: 5.22.3 454 | sqlite3: 4.2.0 455 | dev: false 456 | resolution: 457 | integrity: sha512-IQQqbdcLsNft52jOClGe39U3nUABalPPa1P1YzUc+75pea82T3t8/foG+WHK+2SticL8NWeVIwgwCNBoyW/Plw== 458 | /discord-leveling/1.1.0: 459 | dependencies: 460 | sequelize: 4.44.4 461 | sqlite3: 4.2.0 462 | dev: false 463 | resolution: 464 | integrity: sha512-hGJKtglY7fThQkODNEM0RARWRPwlaFVaFx5qEc1mQrOagnZSUfAqwlVE1dwLBmnaDFVEfl617kWC4e5py8umcQ== 465 | /discord.js-poll-embed/1.0.2: 466 | dev: false 467 | resolution: 468 | integrity: sha512-cl3schxrBgzvgqCP409sfT/j59TNbtDSGt7o06EDOulzwVEwgnNynqNIV/0U9oVf3dqx06LG9s4hPto7ENDSjw== 469 | /discord.js/12.4.1: 470 | dependencies: 471 | '@discordjs/collection': 0.1.6 472 | '@discordjs/form-data': 3.0.1 473 | abort-controller: 3.0.0 474 | node-fetch: 2.6.1 475 | prism-media: 1.2.2 476 | setimmediate: 1.0.5 477 | tweetnacl: 1.0.3 478 | ws: 7.4.0 479 | dev: false 480 | engines: 481 | node: '>=12.0.0' 482 | resolution: 483 | integrity: sha512-KxOB8LOAN3GmrvkD6a6Fr1nlfArIFZ+q7Uqg4T/5duB90GZy9a0/Py2E+Y+eHKP6ZUCR2mbNMLCcHGjahiaNqA== 484 | /dom-serializer/0.1.1: 485 | dependencies: 486 | domelementtype: 1.3.1 487 | entities: 1.1.2 488 | dev: false 489 | resolution: 490 | integrity: sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== 491 | /dom-serializer/0.2.2: 492 | dependencies: 493 | domelementtype: 2.0.2 494 | entities: 2.1.0 495 | dev: false 496 | resolution: 497 | integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== 498 | /domelementtype/1.3.1: 499 | dev: false 500 | resolution: 501 | integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== 502 | /domelementtype/2.0.2: 503 | dev: false 504 | resolution: 505 | integrity: sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA== 506 | /domhandler/2.4.2: 507 | dependencies: 508 | domelementtype: 1.3.1 509 | dev: false 510 | resolution: 511 | integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== 512 | /domutils/1.5.1: 513 | dependencies: 514 | dom-serializer: 0.2.2 515 | domelementtype: 1.3.1 516 | dev: false 517 | resolution: 518 | integrity: sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= 519 | /domutils/1.7.0: 520 | dependencies: 521 | dom-serializer: 0.2.2 522 | domelementtype: 1.3.1 523 | dev: false 524 | resolution: 525 | integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== 526 | /dot-prop/3.0.0: 527 | dependencies: 528 | is-obj: 1.0.1 529 | dev: false 530 | engines: 531 | node: '>=0.10.0' 532 | resolution: 533 | integrity: sha1-G3CK8JSknJoOfbyteQq6U52sEXc= 534 | /dottie/2.0.2: 535 | dev: false 536 | resolution: 537 | integrity: sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg== 538 | /duplexer3/0.1.4: 539 | dev: false 540 | resolution: 541 | integrity: sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= 542 | /ecc-jsbn/0.1.2: 543 | dependencies: 544 | jsbn: 0.1.1 545 | safer-buffer: 2.1.2 546 | dev: false 547 | resolution: 548 | integrity: sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 549 | /ee-first/1.1.1: 550 | dev: false 551 | resolution: 552 | integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 553 | /encodeurl/1.0.2: 554 | dev: false 555 | engines: 556 | node: '>= 0.8' 557 | resolution: 558 | integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 559 | /entities/1.1.2: 560 | dev: false 561 | resolution: 562 | integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== 563 | /entities/2.1.0: 564 | dev: false 565 | resolution: 566 | integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== 567 | /erela.js/1.1.8: 568 | dependencies: 569 | axios: 0.19.2 570 | events: 3.2.0 571 | lodash: 4.17.20 572 | util: 0.12.3 573 | ws: 7.4.0 574 | dev: false 575 | resolution: 576 | integrity: sha512-9VcBrCAUtHjlGTNq4T5suiX3xSKztiJBo1A3Jzl/P01+NsSDa34en9dhAj1ngho2nqIOA8PODEuamRgxqVHZoQ== 577 | /es-abstract/1.17.7: 578 | dependencies: 579 | es-to-primitive: 1.2.1 580 | function-bind: 1.1.1 581 | has: 1.0.3 582 | has-symbols: 1.0.1 583 | is-callable: 1.2.2 584 | is-regex: 1.1.1 585 | object-inspect: 1.8.0 586 | object-keys: 1.1.1 587 | object.assign: 4.1.2 588 | string.prototype.trimend: 1.0.2 589 | string.prototype.trimstart: 1.0.2 590 | dev: false 591 | engines: 592 | node: '>= 0.4' 593 | resolution: 594 | integrity: sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== 595 | /es-abstract/1.18.0-next.1: 596 | dependencies: 597 | es-to-primitive: 1.2.1 598 | function-bind: 1.1.1 599 | has: 1.0.3 600 | has-symbols: 1.0.1 601 | is-callable: 1.2.2 602 | is-negative-zero: 2.0.0 603 | is-regex: 1.1.1 604 | object-inspect: 1.8.0 605 | object-keys: 1.1.1 606 | object.assign: 4.1.2 607 | string.prototype.trimend: 1.0.2 608 | string.prototype.trimstart: 1.0.2 609 | dev: false 610 | engines: 611 | node: '>= 0.4' 612 | resolution: 613 | integrity: sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== 614 | /es-to-primitive/1.2.1: 615 | dependencies: 616 | is-callable: 1.2.2 617 | is-date-object: 1.0.2 618 | is-symbol: 1.0.3 619 | dev: false 620 | engines: 621 | node: '>= 0.4' 622 | resolution: 623 | integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 624 | /escape-html/1.0.3: 625 | dev: false 626 | resolution: 627 | integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 628 | /etag/1.8.1: 629 | dev: false 630 | engines: 631 | node: '>= 0.6' 632 | resolution: 633 | integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 634 | /event-target-shim/5.0.1: 635 | dev: false 636 | engines: 637 | node: '>=6' 638 | resolution: 639 | integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== 640 | /eventemitter3/1.2.0: 641 | dev: false 642 | resolution: 643 | integrity: sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg= 644 | /events/3.2.0: 645 | dev: false 646 | engines: 647 | node: '>=0.8.x' 648 | resolution: 649 | integrity: sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== 650 | /express/4.17.1: 651 | dependencies: 652 | accepts: 1.3.7 653 | array-flatten: 1.1.1 654 | body-parser: 1.19.0 655 | content-disposition: 0.5.3 656 | content-type: 1.0.4 657 | cookie: 0.4.0 658 | cookie-signature: 1.0.6 659 | debug: 2.6.9 660 | depd: 1.1.2 661 | encodeurl: 1.0.2 662 | escape-html: 1.0.3 663 | etag: 1.8.1 664 | finalhandler: 1.1.2 665 | fresh: 0.5.2 666 | merge-descriptors: 1.0.1 667 | methods: 1.1.2 668 | on-finished: 2.3.0 669 | parseurl: 1.3.3 670 | path-to-regexp: 0.1.7 671 | proxy-addr: 2.0.6 672 | qs: 6.7.0 673 | range-parser: 1.2.1 674 | safe-buffer: 5.1.2 675 | send: 0.17.1 676 | serve-static: 1.14.1 677 | setprototypeof: 1.1.1 678 | statuses: 1.5.0 679 | type-is: 1.6.18 680 | utils-merge: 1.0.1 681 | vary: 1.1.2 682 | dev: false 683 | engines: 684 | node: '>= 0.10.0' 685 | resolution: 686 | integrity: sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== 687 | /extend/3.0.2: 688 | dev: false 689 | resolution: 690 | integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 691 | /extsprintf/1.3.0: 692 | dev: false 693 | engines: 694 | '0': node >=0.6.0 695 | resolution: 696 | integrity: sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 697 | /extsprintf/1.4.0: 698 | dev: false 699 | engines: 700 | '0': node >=0.6.0 701 | resolution: 702 | integrity: sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 703 | /fast-deep-equal/3.1.3: 704 | dev: false 705 | resolution: 706 | integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 707 | /fast-json-stable-stringify/2.1.0: 708 | dev: false 709 | resolution: 710 | integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 711 | /fast-safe-stringify/2.0.7: 712 | dev: false 713 | resolution: 714 | integrity: sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== 715 | /finalhandler/1.1.2: 716 | dependencies: 717 | debug: 2.6.9 718 | encodeurl: 1.0.2 719 | escape-html: 1.0.3 720 | on-finished: 2.3.0 721 | parseurl: 1.3.3 722 | statuses: 1.5.0 723 | unpipe: 1.0.0 724 | dev: false 725 | engines: 726 | node: '>= 0.8' 727 | resolution: 728 | integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 729 | /follow-redirects/1.5.10: 730 | dependencies: 731 | debug: 3.1.0 732 | dev: false 733 | engines: 734 | node: '>=4.0' 735 | resolution: 736 | integrity: sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== 737 | /foreach/2.0.5: 738 | dev: false 739 | resolution: 740 | integrity: sha1-C+4AUBiusmDQo6865ljdATbsG5k= 741 | /forever-agent/0.6.1: 742 | dev: false 743 | resolution: 744 | integrity: sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 745 | /form-data/2.3.3: 746 | dependencies: 747 | asynckit: 0.4.0 748 | combined-stream: 1.0.8 749 | mime-types: 2.1.27 750 | dev: false 751 | engines: 752 | node: '>= 0.12' 753 | resolution: 754 | integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 755 | /form-data/3.0.0: 756 | dependencies: 757 | asynckit: 0.4.0 758 | combined-stream: 1.0.8 759 | mime-types: 2.1.27 760 | dev: false 761 | engines: 762 | node: '>= 6' 763 | resolution: 764 | integrity: sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== 765 | /formidable/1.2.2: 766 | dev: false 767 | resolution: 768 | integrity: sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q== 769 | /forwarded/0.1.2: 770 | dev: false 771 | engines: 772 | node: '>= 0.6' 773 | resolution: 774 | integrity: sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 775 | /fresh/0.5.2: 776 | dev: false 777 | engines: 778 | node: '>= 0.6' 779 | resolution: 780 | integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 781 | /fs-minipass/1.2.7: 782 | dependencies: 783 | minipass: 2.9.0 784 | dev: false 785 | resolution: 786 | integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== 787 | /fs.realpath/1.0.0: 788 | dev: false 789 | resolution: 790 | integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 791 | /fs/0.0.1-security: 792 | dev: false 793 | resolution: 794 | integrity: sha1-invTcYa23d84E/I4WLV+yq9eQdQ= 795 | /function-bind/1.1.1: 796 | dev: false 797 | resolution: 798 | integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 799 | /function.js/1.3.0: 800 | dev: false 801 | resolution: 802 | integrity: sha1-WrxwpahrW7akmjdk2Kdza/EUaQk= 803 | /gauge/2.7.4: 804 | dependencies: 805 | aproba: 1.2.0 806 | console-control-strings: 1.1.0 807 | has-unicode: 2.0.1 808 | object-assign: 4.1.1 809 | signal-exit: 3.0.3 810 | string-width: 1.0.2 811 | strip-ansi: 3.0.1 812 | wide-align: 1.1.3 813 | dev: false 814 | resolution: 815 | integrity: sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= 816 | /generic-pool/3.5.0: 817 | dev: false 818 | engines: 819 | node: '>= 4' 820 | resolution: 821 | integrity: sha512-dEkxmX+egB2o4NR80c/q+xzLLzLX+k68/K8xv81XprD+Sk7ZtP14VugeCz+fUwv5FzpWq40pPtAkzPRqT8ka9w== 822 | /get-intrinsic/1.0.1: 823 | dependencies: 824 | function-bind: 1.1.1 825 | has: 1.0.3 826 | has-symbols: 1.0.1 827 | dev: false 828 | resolution: 829 | integrity: sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== 830 | /get-stream/3.0.0: 831 | dev: false 832 | engines: 833 | node: '>=4' 834 | resolution: 835 | integrity: sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= 836 | /getpass/0.1.7: 837 | dependencies: 838 | assert-plus: 1.0.0 839 | dev: false 840 | resolution: 841 | integrity: sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 842 | /give-me-a-joke/0.3.2: 843 | dependencies: 844 | body-parser: 1.19.0 845 | express: 4.17.1 846 | request: 2.88.2 847 | dev: false 848 | resolution: 849 | integrity: sha512-crqm+UGdXSsZPiYJz1SpkHIl/LPd95UCCkku6UcJzeu73MCGZ1ND+tmv/hfRadHQpi8cupg5hI+LrKH6XD0QCQ== 850 | /glob/7.1.6: 851 | dependencies: 852 | fs.realpath: 1.0.0 853 | inflight: 1.0.6 854 | inherits: 2.0.4 855 | minimatch: 3.0.4 856 | once: 1.4.0 857 | path-is-absolute: 1.0.1 858 | dev: false 859 | resolution: 860 | integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 861 | /google-translate-api/2.3.0: 862 | dependencies: 863 | configstore: 2.1.0 864 | google-translate-token: 1.0.0 865 | got: 6.7.1 866 | safe-eval: 0.3.0 867 | dev: false 868 | resolution: 869 | integrity: sha1-YmcwoSPaDVevNzXdcHzacc7pGcc= 870 | /google-translate-token/1.0.0: 871 | dependencies: 872 | configstore: 2.1.0 873 | got: 6.7.1 874 | dev: false 875 | resolution: 876 | integrity: sha1-vpQ0RXhvAMN2Xewx9JDawhIo0/g= 877 | /got/6.7.1: 878 | dependencies: 879 | create-error-class: 3.0.2 880 | duplexer3: 0.1.4 881 | get-stream: 3.0.0 882 | is-redirect: 1.0.0 883 | is-retry-allowed: 1.2.0 884 | is-stream: 1.1.0 885 | lowercase-keys: 1.0.1 886 | safe-buffer: 5.2.1 887 | timed-out: 4.0.1 888 | unzip-response: 2.0.1 889 | url-parse-lax: 1.0.0 890 | dev: false 891 | engines: 892 | node: '>=4' 893 | resolution: 894 | integrity: sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= 895 | /graceful-fs/4.2.4: 896 | dev: false 897 | resolution: 898 | integrity: sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== 899 | /har-schema/2.0.0: 900 | dev: false 901 | engines: 902 | node: '>=4' 903 | resolution: 904 | integrity: sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 905 | /har-validator/5.1.5: 906 | dependencies: 907 | ajv: 6.12.6 908 | har-schema: 2.0.0 909 | deprecated: this library is no longer supported 910 | dev: false 911 | engines: 912 | node: '>=6' 913 | resolution: 914 | integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== 915 | /has-symbols/1.0.1: 916 | dev: false 917 | engines: 918 | node: '>= 0.4' 919 | resolution: 920 | integrity: sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 921 | /has-unicode/2.0.1: 922 | dev: false 923 | resolution: 924 | integrity: sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= 925 | /has/1.0.3: 926 | dependencies: 927 | function-bind: 1.1.1 928 | dev: false 929 | engines: 930 | node: '>= 0.4.0' 931 | resolution: 932 | integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 933 | /htmlparser2/3.10.1: 934 | dependencies: 935 | domelementtype: 1.3.1 936 | domhandler: 2.4.2 937 | domutils: 1.7.0 938 | entities: 1.1.2 939 | inherits: 2.0.4 940 | readable-stream: 3.6.0 941 | dev: false 942 | resolution: 943 | integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== 944 | /http-errors/1.7.2: 945 | dependencies: 946 | depd: 1.1.2 947 | inherits: 2.0.3 948 | setprototypeof: 1.1.1 949 | statuses: 1.5.0 950 | toidentifier: 1.0.0 951 | dev: false 952 | engines: 953 | node: '>= 0.6' 954 | resolution: 955 | integrity: sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== 956 | /http-errors/1.7.3: 957 | dependencies: 958 | depd: 1.1.2 959 | inherits: 2.0.4 960 | setprototypeof: 1.1.1 961 | statuses: 1.5.0 962 | toidentifier: 1.0.0 963 | dev: false 964 | engines: 965 | node: '>= 0.6' 966 | resolution: 967 | integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 968 | /http-signature/1.2.0: 969 | dependencies: 970 | assert-plus: 1.0.0 971 | jsprim: 1.4.1 972 | sshpk: 1.16.1 973 | dev: false 974 | engines: 975 | node: '>=0.8' 976 | npm: '>=1.3.7' 977 | resolution: 978 | integrity: sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 979 | /iconv-lite/0.4.24: 980 | dependencies: 981 | safer-buffer: 2.1.2 982 | dev: false 983 | engines: 984 | node: '>=0.10.0' 985 | resolution: 986 | integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 987 | /ignore-walk/3.0.3: 988 | dependencies: 989 | minimatch: 3.0.4 990 | dev: false 991 | resolution: 992 | integrity: sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== 993 | /imurmurhash/0.1.4: 994 | dev: false 995 | engines: 996 | node: '>=0.8.19' 997 | resolution: 998 | integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o= 999 | /inflection/1.12.0: 1000 | dev: false 1001 | engines: 1002 | '0': node >= 0.4.0 1003 | resolution: 1004 | integrity: sha1-ogCTVlbW9fa8TcdQLhrstwMihBY= 1005 | /inflight/1.0.6: 1006 | dependencies: 1007 | once: 1.4.0 1008 | wrappy: 1.0.2 1009 | dev: false 1010 | resolution: 1011 | integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1012 | /inherits/2.0.3: 1013 | dev: false 1014 | resolution: 1015 | integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1016 | /inherits/2.0.4: 1017 | dev: false 1018 | resolution: 1019 | integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1020 | /ini/1.3.5: 1021 | dev: false 1022 | resolution: 1023 | integrity: sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== 1024 | /install/0.13.0: 1025 | dev: false 1026 | engines: 1027 | node: '>= 0.10' 1028 | resolution: 1029 | integrity: sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA== 1030 | /ipaddr.js/1.9.1: 1031 | dev: false 1032 | engines: 1033 | node: '>= 0.10' 1034 | resolution: 1035 | integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 1036 | /is-arguments/1.0.4: 1037 | dev: false 1038 | engines: 1039 | node: '>= 0.4' 1040 | resolution: 1041 | integrity: sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== 1042 | /is-bluebird/1.0.2: 1043 | dev: false 1044 | engines: 1045 | node: '>=0.10.0' 1046 | resolution: 1047 | integrity: sha1-CWQ5Bg9KpBGr7hkUOoTWpVNG1uI= 1048 | /is-callable/1.2.2: 1049 | dev: false 1050 | engines: 1051 | node: '>= 0.4' 1052 | resolution: 1053 | integrity: sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== 1054 | /is-date-object/1.0.2: 1055 | dev: false 1056 | engines: 1057 | node: '>= 0.4' 1058 | resolution: 1059 | integrity: sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 1060 | /is-fullwidth-code-point/1.0.0: 1061 | dependencies: 1062 | number-is-nan: 1.0.1 1063 | dev: false 1064 | engines: 1065 | node: '>=0.10.0' 1066 | resolution: 1067 | integrity: sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 1068 | /is-fullwidth-code-point/2.0.0: 1069 | dev: false 1070 | engines: 1071 | node: '>=4' 1072 | resolution: 1073 | integrity: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1074 | /is-generator-function/1.0.7: 1075 | dev: false 1076 | engines: 1077 | node: '>= 0.4' 1078 | resolution: 1079 | integrity: sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw== 1080 | /is-negative-zero/2.0.0: 1081 | dev: false 1082 | engines: 1083 | node: '>= 0.4' 1084 | resolution: 1085 | integrity: sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= 1086 | /is-obj/1.0.1: 1087 | dev: false 1088 | engines: 1089 | node: '>=0.10.0' 1090 | resolution: 1091 | integrity: sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 1092 | /is-redirect/1.0.0: 1093 | dev: false 1094 | engines: 1095 | node: '>=0.10.0' 1096 | resolution: 1097 | integrity: sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= 1098 | /is-regex/1.1.1: 1099 | dependencies: 1100 | has-symbols: 1.0.1 1101 | dev: false 1102 | engines: 1103 | node: '>= 0.4' 1104 | resolution: 1105 | integrity: sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== 1106 | /is-retry-allowed/1.2.0: 1107 | dev: false 1108 | engines: 1109 | node: '>=0.10.0' 1110 | resolution: 1111 | integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== 1112 | /is-stream/1.1.0: 1113 | dev: false 1114 | engines: 1115 | node: '>=0.10.0' 1116 | resolution: 1117 | integrity: sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 1118 | /is-symbol/1.0.3: 1119 | dependencies: 1120 | has-symbols: 1.0.1 1121 | dev: false 1122 | engines: 1123 | node: '>= 0.4' 1124 | resolution: 1125 | integrity: sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== 1126 | /is-typed-array/1.1.3: 1127 | dependencies: 1128 | available-typed-arrays: 1.0.2 1129 | es-abstract: 1.17.7 1130 | foreach: 2.0.5 1131 | has-symbols: 1.0.1 1132 | dev: false 1133 | engines: 1134 | node: '>= 0.4' 1135 | resolution: 1136 | integrity: sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ== 1137 | /is-typedarray/1.0.0: 1138 | dev: false 1139 | resolution: 1140 | integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 1141 | /isarray/1.0.0: 1142 | dev: false 1143 | resolution: 1144 | integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1145 | /isstream/0.1.2: 1146 | dev: false 1147 | resolution: 1148 | integrity: sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 1149 | /jsbn/0.1.1: 1150 | dev: false 1151 | resolution: 1152 | integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 1153 | /json-schema-traverse/0.4.1: 1154 | dev: false 1155 | resolution: 1156 | integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1157 | /json-schema/0.2.3: 1158 | dev: false 1159 | resolution: 1160 | integrity: sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 1161 | /json-stringify-safe/5.0.1: 1162 | dev: false 1163 | resolution: 1164 | integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 1165 | /jsprim/1.4.1: 1166 | dependencies: 1167 | assert-plus: 1.0.0 1168 | extsprintf: 1.3.0 1169 | json-schema: 0.2.3 1170 | verror: 1.10.0 1171 | dev: false 1172 | engines: 1173 | '0': node >=0.6.0 1174 | resolution: 1175 | integrity: sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 1176 | /lodash.assignin/4.2.0: 1177 | dev: false 1178 | resolution: 1179 | integrity: sha1-uo31+4QesKPoBEIysOJjqNxqKKI= 1180 | /lodash.bind/4.2.1: 1181 | dev: false 1182 | resolution: 1183 | integrity: sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU= 1184 | /lodash.defaults/4.2.0: 1185 | dev: false 1186 | resolution: 1187 | integrity: sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= 1188 | /lodash.filter/4.6.0: 1189 | dev: false 1190 | resolution: 1191 | integrity: sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4= 1192 | /lodash.flatten/4.4.0: 1193 | dev: false 1194 | resolution: 1195 | integrity: sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= 1196 | /lodash.foreach/4.5.0: 1197 | dev: false 1198 | resolution: 1199 | integrity: sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= 1200 | /lodash.map/4.6.0: 1201 | dev: false 1202 | resolution: 1203 | integrity: sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= 1204 | /lodash.merge/4.6.2: 1205 | dev: false 1206 | resolution: 1207 | integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1208 | /lodash.pick/4.4.0: 1209 | dev: false 1210 | resolution: 1211 | integrity: sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= 1212 | /lodash.reduce/4.6.0: 1213 | dev: false 1214 | resolution: 1215 | integrity: sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs= 1216 | /lodash.reject/4.6.0: 1217 | dev: false 1218 | resolution: 1219 | integrity: sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU= 1220 | /lodash.some/4.6.0: 1221 | dev: false 1222 | resolution: 1223 | integrity: sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= 1224 | /lodash/4.17.20: 1225 | dev: false 1226 | resolution: 1227 | integrity: sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== 1228 | /lowercase-keys/1.0.1: 1229 | dev: false 1230 | engines: 1231 | node: '>=0.10.0' 1232 | resolution: 1233 | integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 1234 | /media-typer/0.3.0: 1235 | dev: false 1236 | engines: 1237 | node: '>= 0.6' 1238 | resolution: 1239 | integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 1240 | /merge-descriptors/1.0.1: 1241 | dev: false 1242 | resolution: 1243 | integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 1244 | /methods/1.1.2: 1245 | dev: false 1246 | engines: 1247 | node: '>= 0.6' 1248 | resolution: 1249 | integrity: sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 1250 | /mime-db/1.44.0: 1251 | dev: false 1252 | engines: 1253 | node: '>= 0.6' 1254 | resolution: 1255 | integrity: sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== 1256 | /mime-types/2.1.27: 1257 | dependencies: 1258 | mime-db: 1.44.0 1259 | dev: false 1260 | engines: 1261 | node: '>= 0.6' 1262 | resolution: 1263 | integrity: sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== 1264 | /mime/1.6.0: 1265 | dev: false 1266 | engines: 1267 | node: '>=4' 1268 | hasBin: true 1269 | resolution: 1270 | integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 1271 | /mime/2.4.6: 1272 | dev: false 1273 | engines: 1274 | node: '>=4.0.0' 1275 | hasBin: true 1276 | resolution: 1277 | integrity: sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== 1278 | /minimatch/3.0.4: 1279 | dependencies: 1280 | brace-expansion: 1.1.11 1281 | dev: false 1282 | resolution: 1283 | integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1284 | /minimist/1.2.5: 1285 | dev: false 1286 | resolution: 1287 | integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1288 | /minipass/2.9.0: 1289 | dependencies: 1290 | safe-buffer: 5.2.1 1291 | yallist: 3.1.1 1292 | dev: false 1293 | resolution: 1294 | integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== 1295 | /minizlib/1.3.3: 1296 | dependencies: 1297 | minipass: 2.9.0 1298 | dev: false 1299 | resolution: 1300 | integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== 1301 | /mkdirp/0.5.5: 1302 | dependencies: 1303 | minimist: 1.2.5 1304 | dev: false 1305 | hasBin: true 1306 | resolution: 1307 | integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 1308 | /moment-timezone/0.5.31: 1309 | dependencies: 1310 | moment: 2.29.1 1311 | dev: false 1312 | resolution: 1313 | integrity: sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA== 1314 | /moment/2.29.1: 1315 | dev: false 1316 | resolution: 1317 | integrity: sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== 1318 | /ms/2.0.0: 1319 | dev: false 1320 | resolution: 1321 | integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1322 | /ms/2.1.1: 1323 | dev: false 1324 | resolution: 1325 | integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 1326 | /ms/2.1.2: 1327 | dev: false 1328 | resolution: 1329 | integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1330 | /nan/2.14.2: 1331 | dev: false 1332 | resolution: 1333 | integrity: sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== 1334 | /needle/2.5.2: 1335 | dependencies: 1336 | debug: 3.2.6 1337 | iconv-lite: 0.4.24 1338 | sax: 1.2.4 1339 | dev: false 1340 | engines: 1341 | node: '>= 4.4.x' 1342 | hasBin: true 1343 | resolution: 1344 | integrity: sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ== 1345 | /negotiator/0.6.2: 1346 | dev: false 1347 | engines: 1348 | node: '>= 0.6' 1349 | resolution: 1350 | integrity: sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 1351 | /node-fetch/2.6.1: 1352 | dev: false 1353 | engines: 1354 | node: 4.x || >=6.0.0 1355 | resolution: 1356 | integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== 1357 | /node-pre-gyp/0.11.0: 1358 | dependencies: 1359 | detect-libc: 1.0.3 1360 | mkdirp: 0.5.5 1361 | needle: 2.5.2 1362 | nopt: 4.0.3 1363 | npm-packlist: 1.4.8 1364 | npmlog: 4.1.2 1365 | rc: 1.2.8 1366 | rimraf: 2.7.1 1367 | semver: 5.7.1 1368 | tar: 4.4.13 1369 | dev: false 1370 | hasBin: true 1371 | resolution: 1372 | integrity: sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q== 1373 | /nopt/4.0.3: 1374 | dependencies: 1375 | abbrev: 1.1.1 1376 | osenv: 0.1.5 1377 | dev: false 1378 | hasBin: true 1379 | resolution: 1380 | integrity: sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== 1381 | /npm-bundled/1.1.1: 1382 | dependencies: 1383 | npm-normalize-package-bin: 1.0.1 1384 | dev: false 1385 | resolution: 1386 | integrity: sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== 1387 | /npm-normalize-package-bin/1.0.1: 1388 | dev: false 1389 | resolution: 1390 | integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== 1391 | /npm-packlist/1.4.8: 1392 | dependencies: 1393 | ignore-walk: 3.0.3 1394 | npm-bundled: 1.1.1 1395 | npm-normalize-package-bin: 1.0.1 1396 | dev: false 1397 | resolution: 1398 | integrity: sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== 1399 | /npm/6.14.8: 1400 | bundledDependencies: 1401 | - abbrev 1402 | - ansicolors 1403 | - ansistyles 1404 | - aproba 1405 | - archy 1406 | - bin-links 1407 | - bluebird 1408 | - byte-size 1409 | - cacache 1410 | - call-limit 1411 | - chownr 1412 | - ci-info 1413 | - cli-columns 1414 | - cli-table3 1415 | - cmd-shim 1416 | - columnify 1417 | - config-chain 1418 | - debuglog 1419 | - detect-indent 1420 | - detect-newline 1421 | - dezalgo 1422 | - editor 1423 | - figgy-pudding 1424 | - find-npm-prefix 1425 | - fs-vacuum 1426 | - fs-write-stream-atomic 1427 | - gentle-fs 1428 | - glob 1429 | - graceful-fs 1430 | - has-unicode 1431 | - hosted-git-info 1432 | - iferr 1433 | - imurmurhash 1434 | - infer-owner 1435 | - inflight 1436 | - inherits 1437 | - ini 1438 | - init-package-json 1439 | - is-cidr 1440 | - json-parse-better-errors 1441 | - JSONStream 1442 | - lazy-property 1443 | - libcipm 1444 | - libnpm 1445 | - libnpmaccess 1446 | - libnpmhook 1447 | - libnpmorg 1448 | - libnpmsearch 1449 | - libnpmteam 1450 | - libnpx 1451 | - lock-verify 1452 | - lockfile 1453 | - lodash._baseindexof 1454 | - lodash._baseuniq 1455 | - lodash._bindcallback 1456 | - lodash._cacheindexof 1457 | - lodash._createcache 1458 | - lodash._getnative 1459 | - lodash.clonedeep 1460 | - lodash.restparam 1461 | - lodash.union 1462 | - lodash.uniq 1463 | - lodash.without 1464 | - lru-cache 1465 | - meant 1466 | - mississippi 1467 | - mkdirp 1468 | - move-concurrently 1469 | - node-gyp 1470 | - nopt 1471 | - normalize-package-data 1472 | - npm-audit-report 1473 | - npm-cache-filename 1474 | - npm-install-checks 1475 | - npm-lifecycle 1476 | - npm-package-arg 1477 | - npm-packlist 1478 | - npm-pick-manifest 1479 | - npm-profile 1480 | - npm-registry-fetch 1481 | - npm-user-validate 1482 | - npmlog 1483 | - once 1484 | - opener 1485 | - osenv 1486 | - pacote 1487 | - path-is-inside 1488 | - promise-inflight 1489 | - qrcode-terminal 1490 | - query-string 1491 | - qw 1492 | - read-cmd-shim 1493 | - read-installed 1494 | - read-package-json 1495 | - read-package-tree 1496 | - read 1497 | - readable-stream 1498 | - readdir-scoped-modules 1499 | - request 1500 | - retry 1501 | - rimraf 1502 | - safe-buffer 1503 | - semver 1504 | - sha 1505 | - slide 1506 | - sorted-object 1507 | - sorted-union-stream 1508 | - ssri 1509 | - stringify-package 1510 | - tar 1511 | - text-table 1512 | - tiny-relative-date 1513 | - uid-number 1514 | - umask 1515 | - unique-filename 1516 | - unpipe 1517 | - update-notifier 1518 | - uuid 1519 | - validate-npm-package-license 1520 | - validate-npm-package-name 1521 | - which 1522 | - worker-farm 1523 | - write-file-atomic 1524 | dev: false 1525 | engines: 1526 | node: 6 >=6.2.0 || 8 || >=9.3.0 1527 | hasBin: true 1528 | resolution: 1529 | integrity: sha512-HBZVBMYs5blsj94GTeQZel7s9odVuuSUHy1+AlZh7rPVux1os2ashvEGLy/STNK7vUjbrCg5Kq9/GXisJgdf6A== 1530 | /npmlog/4.1.2: 1531 | dependencies: 1532 | are-we-there-yet: 1.1.5 1533 | console-control-strings: 1.1.0 1534 | gauge: 2.7.4 1535 | set-blocking: 2.0.0 1536 | dev: false 1537 | resolution: 1538 | integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== 1539 | /nth-check/1.0.2: 1540 | dependencies: 1541 | boolbase: 1.0.0 1542 | dev: false 1543 | resolution: 1544 | integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== 1545 | /number-is-nan/1.0.1: 1546 | dev: false 1547 | engines: 1548 | node: '>=0.10.0' 1549 | resolution: 1550 | integrity: sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 1551 | /oauth-sign/0.9.0: 1552 | dev: false 1553 | resolution: 1554 | integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 1555 | /object-assign/4.1.1: 1556 | dev: false 1557 | engines: 1558 | node: '>=0.10.0' 1559 | resolution: 1560 | integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1561 | /object-inspect/1.8.0: 1562 | dev: false 1563 | resolution: 1564 | integrity: sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== 1565 | /object-keys/1.1.1: 1566 | dev: false 1567 | engines: 1568 | node: '>= 0.4' 1569 | resolution: 1570 | integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1571 | /object.assign/4.1.2: 1572 | dependencies: 1573 | call-bind: 1.0.0 1574 | define-properties: 1.1.3 1575 | has-symbols: 1.0.1 1576 | object-keys: 1.1.1 1577 | dev: false 1578 | engines: 1579 | node: '>= 0.4' 1580 | resolution: 1581 | integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 1582 | /on-finished/2.3.0: 1583 | dependencies: 1584 | ee-first: 1.1.1 1585 | dev: false 1586 | engines: 1587 | node: '>= 0.8' 1588 | resolution: 1589 | integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 1590 | /once/1.4.0: 1591 | dependencies: 1592 | wrappy: 1.0.2 1593 | dev: false 1594 | resolution: 1595 | integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1596 | /os-homedir/1.0.2: 1597 | dev: false 1598 | engines: 1599 | node: '>=0.10.0' 1600 | resolution: 1601 | integrity: sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 1602 | /os-tmpdir/1.0.2: 1603 | dev: false 1604 | engines: 1605 | node: '>=0.10.0' 1606 | resolution: 1607 | integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 1608 | /os/0.1.1: 1609 | dev: false 1610 | resolution: 1611 | integrity: sha1-IIhF6J4ZOtTZcUdLk5R3NqVtE/M= 1612 | /osenv/0.1.5: 1613 | dependencies: 1614 | os-homedir: 1.0.2 1615 | os-tmpdir: 1.0.2 1616 | dev: false 1617 | resolution: 1618 | integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== 1619 | /overwatch-api/0.8.2: 1620 | dependencies: 1621 | cheerio: 0.22.0 1622 | request: 2.88.2 1623 | request-promise: /request-promise/4.2.6/request@2.88.2 1624 | svg-builder: 1.0.0 1625 | dev: false 1626 | engines: 1627 | node: '>=6.11.1' 1628 | resolution: 1629 | integrity: sha512-DbY7uw8yxk9O8zXI1ngSHV59rfZlk58RuiueLy9O/CPxfihNQNWgHbVEQdRso3XOz+aECgs4As/L6lahn1H9UA== 1630 | /parseurl/1.3.3: 1631 | dev: false 1632 | engines: 1633 | node: '>= 0.8' 1634 | resolution: 1635 | integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 1636 | /path-is-absolute/1.0.1: 1637 | dev: false 1638 | engines: 1639 | node: '>=0.10.0' 1640 | resolution: 1641 | integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1642 | /path-to-regexp/0.1.7: 1643 | dev: false 1644 | resolution: 1645 | integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 1646 | /performance-now/2.1.0: 1647 | dev: false 1648 | resolution: 1649 | integrity: sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 1650 | /prepend-http/1.0.4: 1651 | dev: false 1652 | engines: 1653 | node: '>=0.10.0' 1654 | resolution: 1655 | integrity: sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= 1656 | /prism-media/1.2.2: 1657 | dev: false 1658 | peerDependencies: 1659 | '@discordjs/opus': ^0.1.0 1660 | ffmpeg-static: ^2.4.0 || ^3.0.0 1661 | node-opus: ^0.3.1 1662 | opusscript: ^0.0.6 1663 | resolution: 1664 | integrity: sha512-I+nkWY212lJ500jLe4tN9tWO7nRiBAVdMv76P9kffZjYhw20raMlW1HSSvS+MLXC9MmbNZCazMrAr+5jEEgTuw== 1665 | /process-nextick-args/2.0.1: 1666 | dev: false 1667 | resolution: 1668 | integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1669 | /proxy-addr/2.0.6: 1670 | dependencies: 1671 | forwarded: 0.1.2 1672 | ipaddr.js: 1.9.1 1673 | dev: false 1674 | engines: 1675 | node: '>= 0.10' 1676 | resolution: 1677 | integrity: sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== 1678 | /psl/1.8.0: 1679 | dev: false 1680 | resolution: 1681 | integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 1682 | /punycode/2.1.1: 1683 | dev: false 1684 | engines: 1685 | node: '>=6' 1686 | resolution: 1687 | integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1688 | /qs/6.5.2: 1689 | dev: false 1690 | engines: 1691 | node: '>=0.6' 1692 | resolution: 1693 | integrity: sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 1694 | /qs/6.7.0: 1695 | dev: false 1696 | engines: 1697 | node: '>=0.6' 1698 | resolution: 1699 | integrity: sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== 1700 | /qs/6.9.4: 1701 | dev: false 1702 | engines: 1703 | node: '>=0.6' 1704 | resolution: 1705 | integrity: sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== 1706 | /random-puppy/1.1.0: 1707 | dependencies: 1708 | eventemitter3: 1.2.0 1709 | got: 6.7.1 1710 | unique-random-array: 1.0.1 1711 | dev: false 1712 | engines: 1713 | node: '>=4.0.0' 1714 | resolution: 1715 | integrity: sha1-GtqjTA83bVArWdb9gifqYaRUmTs= 1716 | /range-parser/1.2.1: 1717 | dev: false 1718 | engines: 1719 | node: '>= 0.6' 1720 | resolution: 1721 | integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1722 | /raw-body/2.4.0: 1723 | dependencies: 1724 | bytes: 3.1.0 1725 | http-errors: 1.7.2 1726 | iconv-lite: 0.4.24 1727 | unpipe: 1.0.0 1728 | dev: false 1729 | engines: 1730 | node: '>= 0.8' 1731 | resolution: 1732 | integrity: sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== 1733 | /rc/1.2.8: 1734 | dependencies: 1735 | deep-extend: 0.6.0 1736 | ini: 1.3.5 1737 | minimist: 1.2.5 1738 | strip-json-comments: 2.0.1 1739 | dev: false 1740 | hasBin: true 1741 | resolution: 1742 | integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 1743 | /readable-stream/2.3.7: 1744 | dependencies: 1745 | core-util-is: 1.0.2 1746 | inherits: 2.0.4 1747 | isarray: 1.0.0 1748 | process-nextick-args: 2.0.1 1749 | safe-buffer: 5.1.2 1750 | string_decoder: 1.1.1 1751 | util-deprecate: 1.0.2 1752 | dev: false 1753 | resolution: 1754 | integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1755 | /readable-stream/3.6.0: 1756 | dependencies: 1757 | inherits: 2.0.4 1758 | string_decoder: 1.3.0 1759 | util-deprecate: 1.0.2 1760 | dev: false 1761 | engines: 1762 | node: '>= 6' 1763 | resolution: 1764 | integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 1765 | /request-promise-core/1.1.4/request@2.88.2: 1766 | dependencies: 1767 | lodash: 4.17.20 1768 | request: 2.88.2 1769 | dev: false 1770 | engines: 1771 | node: '>=0.10.0' 1772 | id: registry.npmjs.org/request-promise-core/1.1.4 1773 | peerDependencies: 1774 | request: ^2.34 1775 | resolution: 1776 | integrity: sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== 1777 | /request-promise/4.2.6/request@2.88.2: 1778 | dependencies: 1779 | bluebird: 3.7.2 1780 | request: 2.88.2 1781 | request-promise-core: /request-promise-core/1.1.4/request@2.88.2 1782 | stealthy-require: 1.1.1 1783 | tough-cookie: 2.5.0 1784 | deprecated: 'request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142' 1785 | dev: false 1786 | engines: 1787 | node: '>=0.10.0' 1788 | id: registry.npmjs.org/request-promise/4.2.6 1789 | peerDependencies: 1790 | request: ^2.34 1791 | resolution: 1792 | integrity: sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ== 1793 | /request/2.88.2: 1794 | dependencies: 1795 | aws-sign2: 0.7.0 1796 | aws4: 1.11.0 1797 | caseless: 0.12.0 1798 | combined-stream: 1.0.8 1799 | extend: 3.0.2 1800 | forever-agent: 0.6.1 1801 | form-data: 2.3.3 1802 | har-validator: 5.1.5 1803 | http-signature: 1.2.0 1804 | is-typedarray: 1.0.0 1805 | isstream: 0.1.2 1806 | json-stringify-safe: 5.0.1 1807 | mime-types: 2.1.27 1808 | oauth-sign: 0.9.0 1809 | performance-now: 2.1.0 1810 | qs: 6.5.2 1811 | safe-buffer: 5.2.1 1812 | tough-cookie: 2.5.0 1813 | tunnel-agent: 0.6.0 1814 | uuid: 3.4.0 1815 | deprecated: 'request has been deprecated, see https://github.com/request/request/issues/3142' 1816 | dev: false 1817 | engines: 1818 | node: '>= 6' 1819 | resolution: 1820 | integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== 1821 | /requestretry/4.1.2/request@2.88.2: 1822 | dependencies: 1823 | extend: 3.0.2 1824 | lodash: 4.17.20 1825 | request: 2.88.2 1826 | when: 3.7.8 1827 | dev: false 1828 | id: registry.npmjs.org/requestretry/4.1.2 1829 | peerDependencies: 1830 | request: 2.*.* 1831 | resolution: 1832 | integrity: sha512-N1WAp+8eOy8NfsVBChcSxNCKvPY1azOpliQ4Sby4WDe0HFEhdKywlNZeROMBQ+BI3Jpc0eNOT1KVFGREawtahA== 1833 | /retry-as-promised/2.3.2: 1834 | dependencies: 1835 | bluebird: 3.7.2 1836 | debug: 2.6.9 1837 | dev: false 1838 | resolution: 1839 | integrity: sha1-zZdO5P2bX+A8vzGHHuSCIcB3N7c= 1840 | /retry-as-promised/3.2.0: 1841 | dependencies: 1842 | any-promise: 1.3.0 1843 | dev: false 1844 | resolution: 1845 | integrity: sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg== 1846 | /rimraf/2.7.1: 1847 | dependencies: 1848 | glob: 7.1.6 1849 | dev: false 1850 | hasBin: true 1851 | resolution: 1852 | integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 1853 | /safe-buffer/5.1.2: 1854 | dev: false 1855 | resolution: 1856 | integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1857 | /safe-buffer/5.2.1: 1858 | dev: false 1859 | resolution: 1860 | integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1861 | /safe-eval/0.3.0: 1862 | dev: false 1863 | resolution: 1864 | integrity: sha1-Bs4RHuvZwYWrr/AI7A/P/Fxb4Aw= 1865 | /safer-buffer/2.1.2: 1866 | dev: false 1867 | resolution: 1868 | integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1869 | /sax/1.2.4: 1870 | dev: false 1871 | resolution: 1872 | integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== 1873 | /scraper-instagram/1.0.14: 1874 | dependencies: 1875 | request: 2.88.2 1876 | requestretry: /requestretry/4.1.2/request@2.88.2 1877 | dev: false 1878 | resolution: 1879 | integrity: sha512-bJLuT3qFC3ymalrIeiKtEKZYFKqvuhhOKl1W50ySWlNvgwYFRNzKRLXs4pyGOybeOCxsm0zwa1+mVzUvN8j+fQ== 1880 | /semver/5.7.1: 1881 | dev: false 1882 | hasBin: true 1883 | resolution: 1884 | integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1885 | /semver/6.3.0: 1886 | dev: false 1887 | hasBin: true 1888 | resolution: 1889 | integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1890 | /semver/7.3.2: 1891 | dev: false 1892 | engines: 1893 | node: '>=10' 1894 | hasBin: true 1895 | resolution: 1896 | integrity: sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== 1897 | /send/0.17.1: 1898 | dependencies: 1899 | debug: 2.6.9 1900 | depd: 1.1.2 1901 | destroy: 1.0.4 1902 | encodeurl: 1.0.2 1903 | escape-html: 1.0.3 1904 | etag: 1.8.1 1905 | fresh: 0.5.2 1906 | http-errors: 1.7.3 1907 | mime: 1.6.0 1908 | ms: 2.1.1 1909 | on-finished: 2.3.0 1910 | range-parser: 1.2.1 1911 | statuses: 1.5.0 1912 | dev: false 1913 | engines: 1914 | node: '>= 0.8.0' 1915 | resolution: 1916 | integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== 1917 | /sequelize-pool/2.3.0: 1918 | dev: false 1919 | engines: 1920 | node: '>= 6.0.0' 1921 | resolution: 1922 | integrity: sha512-Ibz08vnXvkZ8LJTiUOxRcj1Ckdn7qafNZ2t59jYHMX1VIebTAOYefWdRYFt6z6+hy52WGthAHAoLc9hvk3onqA== 1923 | /sequelize/4.44.4: 1924 | dependencies: 1925 | bluebird: 3.7.2 1926 | cls-bluebird: 2.1.0 1927 | debug: 3.2.6 1928 | depd: 1.1.2 1929 | dottie: 2.0.2 1930 | generic-pool: 3.5.0 1931 | inflection: 1.12.0 1932 | lodash: 4.17.20 1933 | moment: 2.29.1 1934 | moment-timezone: 0.5.31 1935 | retry-as-promised: 2.3.2 1936 | semver: 5.7.1 1937 | terraformer-wkt-parser: 1.2.1 1938 | toposort-class: 1.0.1 1939 | uuid: 3.4.0 1940 | validator: 10.11.0 1941 | wkx: 0.4.8 1942 | deprecated: This version will no longer receive security fixes per our security policy. Please update to sequelize@5 or above. 1943 | dev: false 1944 | engines: 1945 | node: '>=4.0.0' 1946 | resolution: 1947 | integrity: sha512-nkHmYkbwQK7uwpgW9VBalCBnQqQ8mslTdgcBthtJLORuPvAYRPlfkXZMVUU9TLLJt9CX+/y0MYg0DpcP6ywsEQ== 1948 | /sequelize/5.22.3: 1949 | dependencies: 1950 | bluebird: 3.7.2 1951 | cls-bluebird: 2.1.0 1952 | debug: 4.2.0 1953 | dottie: 2.0.2 1954 | inflection: 1.12.0 1955 | lodash: 4.17.20 1956 | moment: 2.29.1 1957 | moment-timezone: 0.5.31 1958 | retry-as-promised: 3.2.0 1959 | semver: 6.3.0 1960 | sequelize-pool: 2.3.0 1961 | toposort-class: 1.0.1 1962 | uuid: 3.4.0 1963 | validator: 10.11.0 1964 | wkx: 0.4.8 1965 | dev: false 1966 | engines: 1967 | node: '>=6.0.0' 1968 | resolution: 1969 | integrity: sha512-+nxf4TzdrB+PRmoWhR05TP9ukLAurK7qtKcIFv5Vhxm5Z9v+d2PcTT6Ea3YAoIQVkZ47QlT9XWAIUevMT/3l8Q== 1970 | /serve-static/1.14.1: 1971 | dependencies: 1972 | encodeurl: 1.0.2 1973 | escape-html: 1.0.3 1974 | parseurl: 1.3.3 1975 | send: 0.17.1 1976 | dev: false 1977 | engines: 1978 | node: '>= 0.8.0' 1979 | resolution: 1980 | integrity: sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== 1981 | /set-blocking/2.0.0: 1982 | dev: false 1983 | resolution: 1984 | integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 1985 | /setimmediate/1.0.5: 1986 | dev: false 1987 | resolution: 1988 | integrity: sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= 1989 | /setprototypeof/1.1.1: 1990 | dev: false 1991 | resolution: 1992 | integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 1993 | /shimmer/1.2.1: 1994 | dev: false 1995 | resolution: 1996 | integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== 1997 | /signal-exit/3.0.3: 1998 | dev: false 1999 | resolution: 2000 | integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 2001 | /slide/1.1.6: 2002 | dev: false 2003 | resolution: 2004 | integrity: sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= 2005 | /sqlite3/4.2.0: 2006 | dependencies: 2007 | nan: 2.14.2 2008 | node-pre-gyp: 0.11.0 2009 | dev: false 2010 | requiresBuild: true 2011 | resolution: 2012 | integrity: sha512-roEOz41hxui2Q7uYnWsjMOTry6TcNUNmp8audCx18gF10P2NknwdpF+E+HKvz/F2NvPKGGBF4NGc+ZPQ+AABwg== 2013 | /sshpk/1.16.1: 2014 | dependencies: 2015 | asn1: 0.2.4 2016 | assert-plus: 1.0.0 2017 | bcrypt-pbkdf: 1.0.2 2018 | dashdash: 1.14.1 2019 | ecc-jsbn: 0.1.2 2020 | getpass: 0.1.7 2021 | jsbn: 0.1.1 2022 | safer-buffer: 2.1.2 2023 | tweetnacl: 0.14.5 2024 | dev: false 2025 | engines: 2026 | node: '>=0.10.0' 2027 | hasBin: true 2028 | resolution: 2029 | integrity: sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== 2030 | /statuses/1.5.0: 2031 | dev: false 2032 | engines: 2033 | node: '>= 0.6' 2034 | resolution: 2035 | integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 2036 | /stealthy-require/1.1.1: 2037 | dev: false 2038 | engines: 2039 | node: '>=0.10.0' 2040 | resolution: 2041 | integrity: sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= 2042 | /string-width/1.0.2: 2043 | dependencies: 2044 | code-point-at: 1.1.0 2045 | is-fullwidth-code-point: 1.0.0 2046 | strip-ansi: 3.0.1 2047 | dev: false 2048 | engines: 2049 | node: '>=0.10.0' 2050 | resolution: 2051 | integrity: sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 2052 | /string-width/2.1.1: 2053 | dependencies: 2054 | is-fullwidth-code-point: 2.0.0 2055 | strip-ansi: 4.0.0 2056 | dev: false 2057 | engines: 2058 | node: '>=4' 2059 | resolution: 2060 | integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 2061 | /string.prototype.trimend/1.0.2: 2062 | dependencies: 2063 | define-properties: 1.1.3 2064 | es-abstract: 1.18.0-next.1 2065 | dev: false 2066 | resolution: 2067 | integrity: sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw== 2068 | /string.prototype.trimstart/1.0.2: 2069 | dependencies: 2070 | define-properties: 1.1.3 2071 | es-abstract: 1.18.0-next.1 2072 | dev: false 2073 | resolution: 2074 | integrity: sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg== 2075 | /string_decoder/1.1.1: 2076 | dependencies: 2077 | safe-buffer: 5.1.2 2078 | dev: false 2079 | resolution: 2080 | integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 2081 | /string_decoder/1.3.0: 2082 | dependencies: 2083 | safe-buffer: 5.2.1 2084 | dev: false 2085 | resolution: 2086 | integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 2087 | /strip-ansi/3.0.1: 2088 | dependencies: 2089 | ansi-regex: 2.1.1 2090 | dev: false 2091 | engines: 2092 | node: '>=0.10.0' 2093 | resolution: 2094 | integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 2095 | /strip-ansi/4.0.0: 2096 | dependencies: 2097 | ansi-regex: 3.0.0 2098 | dev: false 2099 | engines: 2100 | node: '>=4' 2101 | resolution: 2102 | integrity: sha1-qEeQIusaw2iocTibY1JixQXuNo8= 2103 | /strip-json-comments/2.0.1: 2104 | dev: false 2105 | engines: 2106 | node: '>=0.10.0' 2107 | resolution: 2108 | integrity: sha1-PFMZQukIwml8DsNEhYwobHygpgo= 2109 | /superagent/5.3.1: 2110 | dependencies: 2111 | component-emitter: 1.3.0 2112 | cookiejar: 2.1.2 2113 | debug: 4.2.0 2114 | fast-safe-stringify: 2.0.7 2115 | form-data: 3.0.0 2116 | formidable: 1.2.2 2117 | methods: 1.1.2 2118 | mime: 2.4.6 2119 | qs: 6.9.4 2120 | readable-stream: 3.6.0 2121 | semver: 7.3.2 2122 | dev: false 2123 | engines: 2124 | node: '>= 7.0.0' 2125 | resolution: 2126 | integrity: sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ== 2127 | /svg-builder/1.0.0: 2128 | dev: false 2129 | resolution: 2130 | integrity: sha512-Alb20G9MRQLXnc8YhVfimUJdHqQB2KK1/J/0pAlAoRdtD+V8ryoZCNtkDBAGxQuNyd+lX9qb0RKpZ3kso45K+w== 2131 | /tar/4.4.13: 2132 | dependencies: 2133 | chownr: 1.1.4 2134 | fs-minipass: 1.2.7 2135 | minipass: 2.9.0 2136 | minizlib: 1.3.3 2137 | mkdirp: 0.5.5 2138 | safe-buffer: 5.2.1 2139 | yallist: 3.1.1 2140 | dev: false 2141 | engines: 2142 | node: '>=4.5' 2143 | resolution: 2144 | integrity: sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== 2145 | /terraformer-wkt-parser/1.2.1: 2146 | dependencies: 2147 | '@types/geojson': 1.0.6 2148 | terraformer: 1.0.12 2149 | dev: false 2150 | engines: 2151 | node: '>=4.2.6' 2152 | resolution: 2153 | integrity: sha512-+CJyNLWb3lJ9RsZMTM66BY0MT3yIo4l4l22Jd9CrZuwzk54fsu4Sc7zejuS9fCITTuTQy3p06d4MZMVI7v5wSg== 2154 | /terraformer/1.0.12: 2155 | dev: false 2156 | engines: 2157 | node: '>=4.2.6' 2158 | optionalDependencies: 2159 | '@types/geojson': 7946.0.7 2160 | resolution: 2161 | integrity: sha512-MokUp0+MFal4CmJDVL6VAO1bKegeXcBM2RnPVfqcFIp2IIv8EbPAjG0j/vEy/vuKB8NVMMSF2vfpVS/QLe4DBg== 2162 | /timed-out/4.0.1: 2163 | dev: false 2164 | engines: 2165 | node: '>=0.10.0' 2166 | resolution: 2167 | integrity: sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= 2168 | /toidentifier/1.0.0: 2169 | dev: false 2170 | engines: 2171 | node: '>=0.6' 2172 | resolution: 2173 | integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 2174 | /toposort-class/1.0.1: 2175 | dev: false 2176 | resolution: 2177 | integrity: sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg= 2178 | /tough-cookie/2.5.0: 2179 | dependencies: 2180 | psl: 1.8.0 2181 | punycode: 2.1.1 2182 | dev: false 2183 | engines: 2184 | node: '>=0.8' 2185 | resolution: 2186 | integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== 2187 | /tunnel-agent/0.6.0: 2188 | dependencies: 2189 | safe-buffer: 5.2.1 2190 | dev: false 2191 | resolution: 2192 | integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 2193 | /tweetnacl/0.14.5: 2194 | dev: false 2195 | resolution: 2196 | integrity: sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 2197 | /tweetnacl/1.0.3: 2198 | dev: false 2199 | resolution: 2200 | integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== 2201 | /type-is/1.6.18: 2202 | dependencies: 2203 | media-typer: 0.3.0 2204 | mime-types: 2.1.27 2205 | dev: false 2206 | engines: 2207 | node: '>= 0.6' 2208 | resolution: 2209 | integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 2210 | /unique-random-array/1.0.1: 2211 | dependencies: 2212 | unique-random: 1.0.0 2213 | dev: false 2214 | engines: 2215 | node: '>=0.10.0' 2216 | resolution: 2217 | integrity: sha512-z9J/SV8CUIhIRROcHe9YUoAT6XthUJt0oUyLGgobiXJprDP9O9dsErNevvSaAv5BkhwFEVPn6nIEOKeNE6Ck1Q== 2218 | /unique-random/1.0.0: 2219 | dev: false 2220 | engines: 2221 | node: '>=0.10.0' 2222 | resolution: 2223 | integrity: sha1-zj4iTIJCzTOg53sNcYDXfmti0MQ= 2224 | /unpipe/1.0.0: 2225 | dev: false 2226 | engines: 2227 | node: '>= 0.8' 2228 | resolution: 2229 | integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 2230 | /unzip-response/2.0.1: 2231 | dev: false 2232 | engines: 2233 | node: '>=4' 2234 | resolution: 2235 | integrity: sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= 2236 | /uri-js/4.4.0: 2237 | dependencies: 2238 | punycode: 2.1.1 2239 | dev: false 2240 | resolution: 2241 | integrity: sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== 2242 | /url-parse-lax/1.0.0: 2243 | dependencies: 2244 | prepend-http: 1.0.4 2245 | dev: false 2246 | engines: 2247 | node: '>=0.10.0' 2248 | resolution: 2249 | integrity: sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= 2250 | /util-deprecate/1.0.2: 2251 | dev: false 2252 | resolution: 2253 | integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 2254 | /util/0.12.3: 2255 | dependencies: 2256 | inherits: 2.0.4 2257 | is-arguments: 1.0.4 2258 | is-generator-function: 1.0.7 2259 | is-typed-array: 1.1.3 2260 | safe-buffer: 5.2.1 2261 | which-typed-array: 1.1.2 2262 | dev: false 2263 | resolution: 2264 | integrity: sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog== 2265 | /utils-merge/1.0.1: 2266 | dev: false 2267 | engines: 2268 | node: '>= 0.4.0' 2269 | resolution: 2270 | integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 2271 | /uuid/2.0.3: 2272 | dev: false 2273 | resolution: 2274 | integrity: sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= 2275 | /uuid/3.4.0: 2276 | dev: false 2277 | hasBin: true 2278 | resolution: 2279 | integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 2280 | /validator/10.11.0: 2281 | dev: false 2282 | engines: 2283 | node: '>= 0.10' 2284 | resolution: 2285 | integrity: sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw== 2286 | /vary/1.1.2: 2287 | dev: false 2288 | engines: 2289 | node: '>= 0.8' 2290 | resolution: 2291 | integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 2292 | /verror/1.10.0: 2293 | dependencies: 2294 | assert-plus: 1.0.0 2295 | core-util-is: 1.0.2 2296 | extsprintf: 1.4.0 2297 | dev: false 2298 | engines: 2299 | '0': node >=0.6.0 2300 | resolution: 2301 | integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 2302 | /weather-js/2.0.0: 2303 | dependencies: 2304 | request: 2.88.2 2305 | xml2js: 0.4.23 2306 | dev: false 2307 | resolution: 2308 | integrity: sha1-DZvNsFpPhNBrm585kAKKYB6kofw= 2309 | /when/3.7.8: 2310 | dev: false 2311 | resolution: 2312 | integrity: sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I= 2313 | /which-typed-array/1.1.2: 2314 | dependencies: 2315 | available-typed-arrays: 1.0.2 2316 | es-abstract: 1.17.7 2317 | foreach: 2.0.5 2318 | function-bind: 1.1.1 2319 | has-symbols: 1.0.1 2320 | is-typed-array: 1.1.3 2321 | dev: false 2322 | engines: 2323 | node: '>= 0.4' 2324 | resolution: 2325 | integrity: sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ== 2326 | /wide-align/1.1.3: 2327 | dependencies: 2328 | string-width: 2.1.1 2329 | dev: false 2330 | resolution: 2331 | integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 2332 | /wkx/0.4.8: 2333 | dependencies: 2334 | '@types/node': 14.14.7 2335 | dev: false 2336 | resolution: 2337 | integrity: sha512-ikPXMM9IR/gy/LwiOSqWlSL3X/J5uk9EO2hHNRXS41eTLXaUFEVw9fn/593jW/tE5tedNg8YjT5HkCa4FqQZyQ== 2338 | /wrappy/1.0.2: 2339 | dev: false 2340 | resolution: 2341 | integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2342 | /write-file-atomic/1.3.4: 2343 | dependencies: 2344 | graceful-fs: 4.2.4 2345 | imurmurhash: 0.1.4 2346 | slide: 1.1.6 2347 | dev: false 2348 | resolution: 2349 | integrity: sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8= 2350 | /ws/7.4.0: 2351 | dev: false 2352 | engines: 2353 | node: '>=8.3.0' 2354 | peerDependencies: 2355 | bufferutil: ^4.0.1 2356 | utf-8-validate: ^5.0.2 2357 | resolution: 2358 | integrity: sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ== 2359 | /xdg-basedir/2.0.0: 2360 | dependencies: 2361 | os-homedir: 1.0.2 2362 | dev: false 2363 | engines: 2364 | node: '>=0.10.0' 2365 | resolution: 2366 | integrity: sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I= 2367 | /xml2js/0.4.23: 2368 | dependencies: 2369 | sax: 1.2.4 2370 | xmlbuilder: 11.0.1 2371 | dev: false 2372 | engines: 2373 | node: '>=4.0.0' 2374 | resolution: 2375 | integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== 2376 | /xmlbuilder/11.0.1: 2377 | dev: false 2378 | engines: 2379 | node: '>=4.0' 2380 | resolution: 2381 | integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== 2382 | /yallist/3.1.1: 2383 | dev: false 2384 | resolution: 2385 | integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 2386 | /yo-mamma/1.3.0: 2387 | dev: false 2388 | resolution: 2389 | integrity: sha512-MSqfT/YvzccapmCETpRO51Z8hSPWPi9MtFhYvIn4eeea/WhV2l8IJYp2wfJDwAMA8h62Eg3Hkc30WnhW5OKLEA== 2390 | registry: 'https://registry.npmjs.org/' 2391 | shrinkwrapMinorVersion: 9 2392 | shrinkwrapVersion: 3 2393 | specifiers: 2394 | async: ^3.2.0 2395 | common-tags: ^1.8.0 2396 | cpu-stat: ^2.0.1 2397 | cpu-stats: ^1.0.0 2398 | dateformat: ^3.0.3 2399 | discord-economy: ^1.2.2 2400 | discord-leveling: ^1.1.0 2401 | discord.js: ^12.4.0 2402 | discord.js-poll-embed: ^1.0.2 2403 | erela.js: ^1.1.7 2404 | fs: 0.0.1-security 2405 | function.js: ^1.3.0 2406 | give-me-a-joke: ^0.3.2 2407 | google-translate-api: ^2.3.0 2408 | install: ^0.13.0 2409 | moment: ^2.25.1 2410 | node-fetch: ^2.6.0 2411 | npm: ^6.14.4 2412 | os: ^0.1.1 2413 | overwatch-api: ^0.8.2 2414 | random-puppy: ^1.1.0 2415 | scraper-instagram: ^1.0.14 2416 | sequelize: ^5.21.7 2417 | sqlite3: ^4.2.0 2418 | superagent: ^5.2.2 2419 | weather-js: ^2.0.0 2420 | yo-mamma: ^1.3.0 2421 | -------------------------------------------------------------------------------- /start.bat: -------------------------------------------------------------------------------- 1 | nodemon index.js 2 | PAUSE -------------------------------------------------------------------------------- /util/eventHandler.js: -------------------------------------------------------------------------------- 1 | const reqEvent = (event) => require(`../events/${event}`) 2 | 3 | module.exports = bot => { 4 | bot.on("ready", function() {reqEvent("ready") (bot)}); 5 | bot.on("reconnecting", () => reqEvent("reconnecting") (bot)) 6 | bot.on("disconnect", () => reqEvent("disconnect") (bot)) 7 | bot.on("warn", reqEvent("warn")) 8 | bot.on("error", reqEvent("error")) 9 | } --------------------------------------------------------------------------------