├── ComandosSlash ├── Economia │ ├── atm.js │ ├── casar.js │ ├── daily.js │ ├── depositar.js │ ├── divorciar.js │ ├── empregos.js │ ├── pay.js │ ├── perfil.js │ ├── rank.js │ ├── retirar.js │ ├── sobremim.js │ └── work.js └── Outros │ ├── help.js │ └── ping.js ├── Config.json ├── Database └── user.js ├── Eventos ├── client │ ├── menção.js │ └── ready.js └── guild │ └── interactionCreate.js ├── Font.otf ├── Handler └── index.js ├── README.md └── index.js /ComandosSlash/Economia/atm.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "atm", 5 | description: "ver a sua atm ou a de alguém", 6 | type: 'CHAT_INPUT', 7 | options: [ 8 | { 9 | name: "user", 10 | description: "usuário que você quer ver a atm.", 11 | type: 6, 12 | required: false 13 | }, 14 | ], 15 | run: async (client, interaction) => { 16 | 17 | const user = interaction.options.getUser("user") || interaction.user 18 | 19 | const userdb = await client.userdb.findOne({ 20 | userID: user.id 21 | }) || { economia: { banco: 0, money: 0}} 22 | 23 | interaction.reply({embeds: [new Discord.MessageEmbed() 24 | .setAuthor({ name: `${user.id == interaction.user.id ? `Sua atm.` : `Atm de ${user.username}`}`, iconURL: user.avatarURL() }) 25 | .setColor("a5d7ff") 26 | .setDescription(`> 💸 Dinheiro: ${userdb.economia.money} 27 | > 🏦 Dinheiro no banco: ${userdb.economia.banco} 28 | > 💱 Dinheiro total: ${userdb.economia.money + userdb.economia.banco}`) 29 | ]}) 30 | 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /ComandosSlash/Economia/casar.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "casar", 5 | description: "casar com alguem.", 6 | type: 'CHAT_INPUT', 7 | options: [ 8 | { 9 | name: "user", 10 | description: "usuário que você quer casar.", 11 | type: 6, 12 | required: true 13 | }, 14 | ], 15 | run: async (client, interaction) => { 16 | 17 | const user = interaction.options.getUser("user") 18 | 19 | let userdb = await client.userdb.findOne({ 20 | userID: interaction.user.id 21 | }) 22 | 23 | if(!userdb){ 24 | const newuser = new client.userdb({ userID: interaction.user.id }) 25 | await newuser.save(); 26 | 27 | userdb = await client.userdb.findOne({ userID: interaction.user.id }) 28 | } 29 | 30 | let userdb2 = await client.userdb.findOne({ 31 | userID: user.id 32 | }) 33 | 34 | if(!userdb2){ 35 | const newuser = new client.userdb({ userID: user.id }) 36 | await newuser.save(); 37 | 38 | userdb2 = await client.userdb.findOne({ userID: user.id }) 39 | } 40 | 41 | if(interaction.user.id == user.id) return interaction.reply({embeds: [new Discord.MessageEmbed() 42 | .setTitle(`✋ Dá não filhão...`) 43 | .setColor("a5d7ff") 44 | .setDescription(`**Calma!** Você pode se casar consigo mesmo.`) 45 | ], ephemeral: true}) 46 | 47 | if(userdb.economia.marry.casado) return interaction.reply({embeds: [new Discord.MessageEmbed() 48 | .setTitle(`✋ Dá não filhão...`) 49 | .setColor("a5d7ff") 50 | .setDescription(`**Calma!** Você já está casado com alguém.`) 51 | ], ephemeral: true}) 52 | 53 | if(userdb2.economia.marry.casado) return interaction.reply({embeds: [new Discord.MessageEmbed() 54 | .setTitle(`✋ Dá não filhão...`) 55 | .setColor("a5d7ff") 56 | .setDescription(`**Calma!** ${user} já está casado com alguém.`) 57 | ], ephemeral: true}) 58 | 59 | const butao = new Discord.MessageActionRow() 60 | .addComponents( 61 | new Discord.MessageButton() 62 | .setCustomId(`aceitar`) 63 | .setLabel('Aceitar') 64 | .setStyle('SECONDARY'), 65 | new Discord.MessageButton() 66 | .setCustomId(`recusar`) 67 | .setLabel('Recusar') 68 | .setStyle('SECONDARY'), 69 | ); 70 | 71 | interaction.reply({embeds: [new Discord.MessageEmbed() 72 | .setTitle(`💒 Casamentos 💍`) 73 | .setColor("a5d7ff") 74 | .setDescription(`Ei ${user}. ${interaction.user} quer se casar com você, aceitas?`) 75 | ], components: [butao], fetchReply: true}).then(msg =>{ 76 | 77 | const collector = msg.createMessageComponentCollector({ idle: 1000 * 60 * 10 }); 78 | 79 | collector.on('collect', async i => { 80 | 81 | if(i.user.id !=user.id) return i.reply({embeds: [new Discord.MessageEmbed() 82 | .setTitle(`👨 Calma ae...`) 83 | .setColor("a5d7ff") 84 | .setDescription(`Só quem recebeu o pedido de casamento pode usar o botão.`) 85 | ], ephemeral: true}) 86 | 87 | collector.stop() 88 | 89 | if(i.customId == "aceitar"){ 90 | 91 | await client.userdb.updateOne({ 92 | userID: interaction.user.id 93 | }, { $set:{ 94 | "economia.marry.casado": true, 95 | "economia.marry.com": user.id 96 | } 97 | }) 98 | 99 | await client.userdb.updateOne({ 100 | userID: user.id 101 | }, { $set:{ 102 | "economia.marry.casado": true, 103 | "economia.marry.com": interaction.user.id 104 | } 105 | }) 106 | 107 | 108 | interaction.editReply({embeds: [new Discord.MessageEmbed() 109 | .setTitle(`😶✋ Ganhamo fml!`) 110 | .setColor("a5d7ff") 111 | .setDescription(`${user} aceitou o pedido de casamento de ${interaction.user}! 🎉🎉🎉🎉🎉`) 112 | ], components: []}) 113 | } 114 | 115 | if(i.customId == "recusar"){ 116 | interaction.editReply({embeds: [new Discord.MessageEmbed() 117 | .setTitle(`😢 Perdemo fml...`) 118 | .setColor("a5d7ff") 119 | .setDescription(`${user} recusou o pedido de casamento de ${interaction.user}.`) 120 | ], components: []}) 121 | 122 | } 123 | 124 | }) 125 | 126 | }) 127 | 128 | } 129 | }; 130 | -------------------------------------------------------------------------------- /ComandosSlash/Economia/daily.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "daily", 5 | description: "pegar o daily", 6 | type: 'CHAT_INPUT', 7 | run: async (client, interaction) => { 8 | 9 | let userdb = await client.userdb.findOne({ 10 | userID: interaction.user.id 11 | }) 12 | 13 | if(!userdb){ 14 | const newuser = new client.userdb({ userID: interaction.user.id }) 15 | await newuser.save(); 16 | 17 | userdb = await client.userdb.findOne({ userID: interaction.user.id }) 18 | } 19 | 20 | if(Date.now() < userdb.cooldowns.daily){ 21 | const calc = userdb.cooldowns.daily - Date.now() 22 | 23 | return interaction.reply({embeds: [new Discord.MessageEmbed() 24 | .setTitle(`🤔 Calma ae amigo...`) 25 | .setColor("a5d7ff") 26 | .setDescription(`Ainda falta ${ms(calc).hours}h ${ms(calc).minutes}m ${ms(calc).seconds}s para você pegar o daily novamente.`) 27 | ], ephemeral: true}) 28 | } 29 | 30 | const dinheiro = Math.floor(Math.random() * 5000) + 5000 31 | 32 | await client.userdb.updateOne({ 33 | userID: interaction.user.id 34 | }, { $set: { 35 | "economia.money": userdb.economia.money + dinheiro, 36 | "cooldowns.daily": Date.now() + 86400000 37 | } 38 | }) 39 | 40 | interaction.reply({embeds: [new Discord.MessageEmbed() 41 | .setTitle(`💸 Daily pego! `) 42 | .setColor("a5d7ff") 43 | .setDescription(`**Ta na mão chefia!** Você pegou seu prêmio diario e ganhou 🤑 ${dinheiro} dinheiros.`) 44 | ]}) 45 | } 46 | }; 47 | 48 | function ms(ms) { 49 | const seconds = ~~(ms/1000) 50 | const minutes = ~~(seconds/60) 51 | const hours = ~~(minutes/60) 52 | const days = ~~(hours/24) 53 | 54 | return { days, hours: hours%24, minutes: minutes%60, seconds: seconds%60 } 55 | } 56 | -------------------------------------------------------------------------------- /ComandosSlash/Economia/depositar.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "depositar", 5 | description: "depositar seu dinheiro no banco", 6 | type: 'CHAT_INPUT', 7 | options: [ 8 | { 9 | name: "quantia", 10 | description: "digite uma quantia para depositar, ou digite [tudo]", 11 | type: 3, 12 | required: true 13 | }, 14 | ], 15 | run: async (client, interaction) => { 16 | 17 | let quantia = interaction.options.getString("quantia") 18 | 19 | if(quantia < 1 || isNaN(quantia) && quantia.toLowerCase() != "tudo"){ 20 | return interaction.reply({embeds: [new Discord.MessageEmbed() 21 | .setTitle(`👨 Calma ae...`) 22 | .setColor("a5d7ff") 23 | .setDescription(`Você deve especificar uma quantia válida acima de 0 para depositar, ou digitar \`tudo\` para depositar tudo que você tem na carteira.`) 24 | ], ephemeral: true}) 25 | } 26 | 27 | let userdb = await client.userdb.findOne({ 28 | userID: interaction.user.id 29 | }) 30 | 31 | if(!userdb || userdb.economia.money == 0){ 32 | return interaction.reply({embeds: [new Discord.MessageEmbed() 33 | .setTitle(`😢 Então amigo...`) 34 | .setColor("a5d7ff") 35 | .setDescription("Você atualmente não tem dinheiro nenhum em conta. Use `/daily` para pegar seu prêmio diário, ou pegue um emprego em `/empregos` e use `/work` para trabalhar.") 36 | ], ephemeral: true}) 37 | } 38 | 39 | const usermoney = userdb.economia.money 40 | 41 | let dinero; 42 | 43 | if(quantia.toLowerCase() == "tudo"){ 44 | 45 | dinero = usermoney 46 | 47 | } else { 48 | 49 | quantia = ~~quantia 50 | 51 | if(usermoney < quantia) 52 | return interaction.reply({embeds: [new Discord.MessageEmbed() 53 | .setTitle(`😢 Então amigo...`) 54 | .setColor("a5d7ff") 55 | .setDescription(`Você não tem toda essa quantia para depositar no momento, atualmente você só tem ${usermoney} dinheiros.`) 56 | ], ephemeral: true}) 57 | 58 | dinero = quantia 59 | 60 | } 61 | 62 | await client.userdb.updateOne({ 63 | userID: interaction.user.id 64 | },{ $set: { 65 | "economia.money": usermoney - dinero, 66 | "economia.banco": userdb.economia.banco + dinero 67 | } 68 | }) 69 | 70 | interaction.reply({embeds: [new Discord.MessageEmbed() 71 | .setTitle(`💸 Ta ná mão my friendo!`) 72 | .setColor("a5d7ff") 73 | .setDescription(`Você acaba de transferir 🤑 \`${dinero}\` dinheiros para sua conta do banco!`) 74 | ]}) 75 | 76 | } 77 | }; 78 | -------------------------------------------------------------------------------- /ComandosSlash/Economia/divorciar.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "divorciar", 5 | description: "se divorciar de alguem.", 6 | type: 'CHAT_INPUT', 7 | run: async (client, interaction) => { 8 | 9 | const userdb = await client.userdb.findOne({ 10 | userID: interaction.user.id 11 | }) 12 | 13 | if(!userdb || !userdb.economia.marry.casado){ 14 | return interaction.reply({embeds: [new Discord.MessageEmbed() 15 | .setTitle(`✋ Calma ae filhão...`) 16 | .setColor("a5d7ff") 17 | .setDescription(`Você não está casado com ninguém.`) 18 | ], ephemeral: true}) 19 | } 20 | 21 | const butao = new Discord.MessageActionRow() 22 | .addComponents( 23 | new Discord.MessageButton() 24 | .setCustomId(`sim`) 25 | .setLabel('Sim') 26 | .setStyle('SECONDARY'), 27 | new Discord.MessageButton() 28 | .setCustomId(`nao`) 29 | .setLabel('Não') 30 | .setStyle('SECONDARY'), 31 | ); 32 | 33 | const casado = await client.users.fetch(userdb.economia.marry.com) 34 | 35 | interaction.reply({embeds: [new Discord.MessageEmbed() 36 | .setTitle(`Divórcio 💔`) 37 | .setColor("a5d7ff") 38 | .setDescription(`${interaction.user}, tem certeza que deseja se divorciar de ${casado.username}?`) 39 | ], components: [butao], fetchReply: true}).then(msg =>{ 40 | 41 | const collector = msg.createMessageComponentCollector({ idle: 1000 * 60 * 10 }); 42 | 43 | collector.on('collect', async i => { 44 | 45 | if(i.user.id != interaction.user.id) return i.reply({embeds: [new Discord.MessageEmbed() 46 | .setTitle(`👨 Calma ae...`) 47 | .setColor("a5d7ff") 48 | .setDescription(`Só quem solicitou o comando pode usar o botão.`) 49 | ], ephemeral: true}) 50 | 51 | collector.stop() 52 | 53 | if(i.customId == "sim"){ 54 | 55 | await client.userdb.updateOne({ 56 | userID: interaction.user.id 57 | }, { $set:{ 58 | "economia.marry.casado": false, 59 | "economia.marry.com": 0 60 | } 61 | }) 62 | 63 | await client.userdb.updateOne({ 64 | userID: casado.id 65 | }, { $set:{ 66 | "economia.marry.casado": false, 67 | "economia.marry.com": 0 68 | } 69 | }) 70 | 71 | 72 | interaction.editReply({embeds: [new Discord.MessageEmbed() 73 | .setTitle(`💔 Pelo visto o amor acabou...`) 74 | .setColor("a5d7ff") 75 | .setDescription(`Você acaba de se divorciar de ${casado.username}.`) 76 | ], components: []}) 77 | } 78 | 79 | if(i.customId == "nao"){ 80 | interaction.editReply({embeds: [new Discord.MessageEmbed() 81 | .setTitle(`😶 A vida continua...`) 82 | .setColor("a5d7ff") 83 | .setDescription(`O divórcio foi cancelado.`) 84 | ], components: []}) 85 | 86 | } 87 | 88 | }) 89 | 90 | }) 91 | 92 | } 93 | }; 94 | -------------------------------------------------------------------------------- /ComandosSlash/Economia/empregos.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | module.exports = { 3 | name: "empregos", 4 | description: "pegar um emprego", 5 | type: "CHAT_INPUT", 6 | run: async(client, interaction) =>{ 7 | 8 | let userdb = await client.userdb.findOne({ 9 | userID: interaction.user.id 10 | }) 11 | 12 | if(!userdb){ 13 | const newuser = new client.userdb({ userID: interaction.user.id }) 14 | await newuser.save(); 15 | 16 | userdb = await client.userdb.findOne({ userID: interaction.user.id }) 17 | } 18 | 19 | const embed = new Discord.MessageEmbed() 20 | .setTitle('🤑 Escolha o melhor trabalho pra você!') 21 | .setColor("a5d7ff") 22 | .setDescription('Selecione um emprego para ver informações e pega-lo\nCada Emprego tem um cooldown e quantia de dinheiro ganha diferentes, quanto maior o dinheiro ganho, mais tempo de cooldown vai existir.') 23 | 24 | const row = new Discord.MessageActionRow() 25 | .addComponents( 26 | new Discord.MessageSelectMenu() 27 | .setCustomId('menu') 28 | .setPlaceholder('selecione algum emprego') 29 | .addOptions([ 30 | { 31 | label: 'lixeiro', 32 | emoji: '🗑️', 33 | value: 'lixeiro', 34 | }, 35 | { 36 | label: 'entregador de pizza', 37 | emoji: '🍕', 38 | value: 'pizza', 39 | }, 40 | { 41 | label: 'frentista', 42 | emoji: '⛽', 43 | value: 'frentista', 44 | }, 45 | { 46 | label: 'caminheiro', 47 | emoji: '🚛', 48 | value: 'caminhao', 49 | }, 50 | { 51 | label: 'sedex', 52 | emoji: '📦', 53 | value: 'sedex', 54 | }, 55 | { 56 | label: 'pescador', 57 | emoji: '🎣', 58 | value: 'peixe', 59 | }, 60 | { 61 | label: 'TI', 62 | emoji: '💻', 63 | value: 'ti', 64 | } 65 | ]), 66 | ); 67 | 68 | interaction.reply({embeds: [embed], components: [row], fetchReply: true}).then(msg => { 69 | 70 | const collector = msg.createMessageComponentCollector({ idle: 1000 * 60 * 10 }); 71 | 72 | collector.on('collect', async i => { 73 | 74 | if(i.user.id != interaction.user.id) return i.reply({embeds: [new Discord.MessageEmbed() 75 | .setTitle(`👨 Calma ae...`) 76 | .setColor("a5d7ff") 77 | .setDescription(`Só quem solicitou o menu pode usá-lo.`) 78 | ], ephemeral: true}) 79 | 80 | i.deferUpdate() 81 | 82 | if(i.componentType == 'BUTTON') { 83 | 84 | if(Date.now() < userdb.cooldowns.trabalho){ 85 | const calc = userdb.cooldowns.trabalho - Date.now() 86 | return interaction.followUp({embeds: [new Discord.MessageEmbed() 87 | .setTitle(`😶 Calma...`) 88 | .setColor("a5d7ff") 89 | .setDescription(`**Espera ae!** Você só pode trocar de emprego 1 vez por semana. 90 | > *Ainda falta **__${ms(calc).days}d ${ms(calc).hours}h ${ms(calc).minutes}m__** para você poder trocar novamente.*`) 91 | ], ephemeral: true}) 92 | } 93 | const button = i.customId.split("_")[1] 94 | 95 | if(button == userdb.economia.trabalho .trampo) return interaction.followUp({embeds: [new Discord.MessageEmbed() 96 | .setTitle(`✋ Dá não filhão...`) 97 | .setColor("a5d7ff") 98 | .setDescription(`**Calma!** Você já está com este emprego.`) 99 | ], ephemeral: true}) 100 | 101 | let trabalho, 102 | cooldown, 103 | maxmoney; 104 | 105 | switch (button) { 106 | 107 | case "lixeiro": 108 | trabalho = "lixeiro" 109 | cooldown = 1000 * 60 * 45 110 | maxmoney = 1000 111 | break; 112 | 113 | case "pizza": 114 | trabalho = "pizza" 115 | cooldown = 1000 * 60 * 90 116 | maxmoney = 1500 117 | break; 118 | 119 | case "frentista": 120 | trabalho = "frentista" 121 | cooldown = 1000 * 60 * 180 122 | maxmoney = 2500 123 | break; 124 | 125 | case "cominhao": 126 | trabalho = "caminhoneiro" 127 | cooldown = 1000 * 60 * 300 128 | maxmoney = 3500 129 | break; 130 | 131 | case "sedex": 132 | trabalho = "sedex" 133 | cooldown = 1000 * 60 * 420 134 | maxmoney = 6000 135 | break; 136 | 137 | case "pescador": 138 | trabalho = "pescador" 139 | cooldown = 1000 * 60 * 540 140 | maxmoney = 8500 141 | break; 142 | 143 | case "ti": 144 | trabalho = "ti" 145 | cooldown = 1000 * 60 * 600 146 | maxmoney = 10000 147 | break; 148 | } 149 | 150 | interaction.editReply({embeds: [new Discord.MessageEmbed() 151 | .setTitle(`☑️ Você entrou em um novo emprego!`) 152 | .setColor("a5d7ff") 153 | .setDescription(`**Certo!** Você pegou um novo emprego.`) 154 | ], components: []}) 155 | 156 | await client.userdb.updateOne({ 157 | userID: interaction.user.id 158 | },{ $set: { 159 | "cooldowns.trabalho": Date.now() + 604800000, 160 | "economia.trabalho":{ 161 | maxmoney: maxmoney, 162 | trampo: trabalho, 163 | cooldown: cooldown 164 | } 165 | } 166 | } 167 | ) 168 | } 169 | 170 | if(i.componentType == 'SELECT_MENU') { 171 | const select = i.values[0] 172 | 173 | if(select == 'lixeiro'){ 174 | 175 | interaction.editReply({embeds: [msgembed("🗑️", "lixeiro", "45m", 1)], components: [row, button("lixeiro")]}) 176 | 177 | } 178 | 179 | if(select == 'pizza'){ 180 | 181 | interaction.editReply({embeds: [msgembed("🍕", "entregador de pizza", "1h", 1.5)], components: [row, button("pizza")]}) 182 | } 183 | 184 | if(select == 'frentista'){ 185 | 186 | interaction.editReply({embeds: [msgembed("⛽", "frentista", "3h", 2.5)], components: [row, button("frentista")]}) 187 | 188 | } 189 | 190 | if(select == 'caminhao'){ 191 | 192 | interaction.editReply({embeds: [msgembed("🚛", "caminhoneiro", "5h", 3.5)], components: [row, button("cominhao")]}) 193 | 194 | } 195 | 196 | if(select == 'sedex'){ 197 | 198 | interaction.editReply({embeds: [msgembed("📦", "entregador de sedex", "7h", 6)], components: [row, button("sedex")]}) 199 | } 200 | 201 | if(select == 'peixe'){ 202 | 203 | interaction.editReply({embeds: [msgembed("🎣", "pescador", "9h", 8.5)], components: [row, button("pescador")]}) 204 | 205 | } 206 | 207 | if(select == 'ti'){ 208 | 209 | interaction.editReply({embeds: [msgembed("💻", "chefe de ti", "10h", 10)], components: [row, button("ti")]}) 210 | 211 | } 212 | 213 | }//if menus 214 | 215 | })//collector 216 | 217 | })//.then 218 | 219 | } 220 | } 221 | 222 | function msgembed(emoji, emprego, cooldown, ganhos){ 223 | return new Discord.MessageEmbed() 224 | .setTitle(`${emoji} Emprego de ${emprego}.`) 225 | .setColor("a5d7ff") 226 | .setDescription(`🕑 Cooldown no comando de work: ${cooldown} \n💸 Ganhos máximo: ${ganhos}k`) 227 | } 228 | 229 | function button(String){ 230 | return new Discord.MessageActionRow() 231 | .addComponents( 232 | new Discord.MessageButton() 233 | .setCustomId(`aceitar_${String}`) 234 | .setLabel('Pegar emprego') 235 | .setStyle('SECONDARY'), 236 | ); 237 | } 238 | 239 | function ms(ms) { 240 | const seconds = ~~(ms/1000) 241 | const minutes = ~~(seconds/60) 242 | const hours = ~~(minutes/60) 243 | const days = ~~(hours/24) 244 | 245 | return { days, hours: hours%24, minutes: minutes%60, seconds: seconds%60 } 246 | } 247 | -------------------------------------------------------------------------------- /ComandosSlash/Economia/pay.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "pay", 5 | description: "transferir algum valor para algum usuário.", 6 | type: 'CHAT_INPUT', 7 | options: [ 8 | { 9 | name: "user", 10 | description: "usuário que você quer mandar o dinheiro", 11 | type: 6, 12 | required: true 13 | }, 14 | { 15 | name: "quantia", 16 | description: "a quantia de dinheiro de que você quer enviar", 17 | type: 10, 18 | required: true 19 | } 20 | ], 21 | run: async (client, interaction) => { 22 | 23 | const user = interaction.options.getUser("user") 24 | 25 | const quantia = ~~interaction.options.getNumber("quantia") 26 | 27 | if(user.id == interaction.user.id){ 28 | return interaction.reply({embeds: [new Discord.MessageEmbed() 29 | .setTitle(`😢 Calma lá patrão...`) 30 | .setColor("a5d7ff") 31 | .setDescription("Você não pode transferir dinheiro para si mesmo.") 32 | ], ephemeral: true}) 33 | } 34 | 35 | const userdb = await client.userdb.findOne({ 36 | userID: interaction.user.id 37 | }) 38 | 39 | if(!userdb || userdb.economia.money == 0){ 40 | return interaction.reply({embeds: [new Discord.MessageEmbed() 41 | .setTitle(`😢 Então amigo...`) 42 | .setColor("a5d7ff") 43 | .setDescription("Você atualmente não tem dinheiro nenhum em mãos. Caso tiver dinheiro no banco, retire-o de lá antes de tentar fazer a transferência.") 44 | ], ephemeral: true}) 45 | } 46 | 47 | if(userdb.economia.money < quantia){ 48 | return interaction.reply({embeds: [new Discord.MessageEmbed() 49 | .setTitle(`😢 Então amigo...`) 50 | .setColor("a5d7ff") 51 | .setDescription("Você atualmente não tem todo esse dinheiro em mãos. Caso tiver dinheiro no banco, retire-o de lá antes de tentar fazer a transferência.") 52 | ], ephemeral: true}) 53 | } 54 | 55 | if(quantia < 1){ 56 | return interaction.reply({embeds: [new Discord.MessageEmbed() 57 | .setTitle(`👨 Calma ae...`) 58 | .setColor("a5d7ff") 59 | .setDescription(`Você deve especificar uma quantia válida acima de 0 para tranferir para outro usuário.`) 60 | ], ephemeral: true}) 61 | } 62 | 63 | let userdb2 = await client.userdb.findOne({ 64 | userID: user.id 65 | }) 66 | 67 | if(!userdb2){ 68 | const newuser = new client.userdb({ userID: user.id }) 69 | await newuser.save(); 70 | 71 | userdb2 = await client.userdb.findOne({ userID: user.id }) 72 | } 73 | 74 | interaction.reply({embeds: [new Discord.MessageEmbed() 75 | .setTitle(`💸 Dinheiro rolando!`) 76 | .setColor("a5d7ff") 77 | .setDescription(`**Hey** ${user}! ${interaction.user} quer lhe tranferir 💰 \`${quantia}\` dinheiros para você. 78 | > *Para concluir a transação os 2 usuários devem clicar na reação.*`) 79 | ], fetchReply: true}).then(msg =>{ 80 | 81 | msg.react("💸") 82 | 83 | const filter = (reaction, usuário) => { 84 | return reaction.emoji.name === '💸' && ([interaction.user.id, user.id]).includes(usuário.id) 85 | }; 86 | 87 | const collector = msg.createReactionCollector({ filter: filter, time: 1000 * 60 * 10 }); 88 | 89 | collector.on('collect', (reaction) => { 90 | 91 | const users = reaction.users.cache.map(a => a.id) 92 | 93 | if(users.includes(interaction.user.id) && users.includes(user.id)){ 94 | 95 | collector.stop() 96 | 97 | if(userdb.economia.money < quantia){ 98 | 99 | return interaction.channel.send({embeds: [new Discord.MessageEmbed() 100 | .setTitle(`💸 Dinero acabou...`) 101 | .setColor("a5d7ff") 102 | .setDescription(`Infelizmente ${interaction.user} não tem mais essa quantia de dinheiro para lhe pagar...`) 103 | ]}) 104 | } 105 | 106 | userdb.economia.money = userdb.economia.money - quantia; userdb.save(); 107 | 108 | userdb2.economia.money = userdb2.economia.money + quantia; userdb2.save(); 109 | 110 | interaction.channel.send({embeds: [new Discord.MessageEmbed() 111 | .setTitle(`💸 Dinheiro rolou!`) 112 | .setColor("a5d7ff") 113 | .setDescription(`A transição de ${quantia} dinheiros de ${interaction.user} para ${user} foi feita com sucesso!`) 114 | ]}) 115 | 116 | } 117 | }); 118 | 119 | }) 120 | 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ComandosSlash/Economia/perfil.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | const Canvas = require('canvas') 3 | 4 | const { registerFont } = require('canvas') 5 | registerFont('././Font.otf', { family: 'Uniform' }) 6 | 7 | module.exports = { 8 | name: "perfil", 9 | description: "ver a sua atm ou a de alguém", 10 | type: 'CHAT_INPUT', 11 | options: [ 12 | { 13 | name: "user", 14 | description: "usuário que você quer ver a atm.", 15 | type: 6, 16 | required: false 17 | }, 18 | ], 19 | run: async (client, interaction) => { 20 | 21 | const user = interaction.options.getUser("user") || interaction.user 22 | 23 | const userdb = await client.userdb.findOne({ 24 | userID: user.id 25 | }) || { economia: { marry: { casado: false }, banco: 0, money: 0, sobremim: "Use /sobremim para alterar este texto."}} 26 | 27 | const canvas = Canvas.createCanvas(850, 550) 28 | const ctx = canvas.getContext("2d") 29 | 30 | const background = await Canvas.loadImage("https://i.imgur.com/vFqyhnK.png") 31 | ctx.drawImage(background, 0, 0, canvas.width, canvas.height) 32 | 33 | const layout = await Canvas.loadImage("https://i.imgur.com/NPR3ALW.png") 34 | ctx.drawImage(layout, 0, 0, canvas.width, canvas.height) 35 | 36 | ctx.font = '30px Uniform'; 37 | ctx.fillStyle = '#F8F8F8'; 38 | ctx.fillText(`${user.username}`, 149 - user.username.length * 7, 37) 39 | 40 | ctx.font = '22px Uniform'; 41 | ctx.fillStyle = '#F8F8F8'; 42 | ctx.fillText(`${userdb.economia.sobremim.slice(0,64)}\n${userdb.economia.sobremim.slice(64,128)}\n${userdb.economia.sobremim.slice(128,192)}`, 60, 495) 43 | 44 | ctx.font = '23px Uniform'; 45 | ctx.fillStyle = '#F8F8F8'; 46 | ctx.fillText(`${abreviar(userdb.economia.money)}`, 717, 229) 47 | ctx.fillText(`${abreviar(userdb.economia.banco)}`, 690, 268) 48 | ctx.fillText(`${abreviar(userdb.economia.banco + userdb.economia.money)}`, 672, 312) 49 | 50 | ctx.save() 51 | 52 | if(userdb.economia.marry.casado){ 53 | const img = await Canvas.loadImage("https://i.imgur.com/JI5SfCN.png") 54 | ctx.drawImage(img, 0, 0, canvas.width, canvas.height) 55 | 56 | const marryUser = await client.users.fetch(userdb.economia.marry.com) 57 | 58 | ctx.font = '20px Uniform'; 59 | ctx.fillStyle = '#F8F8F8'; 60 | ctx.fillText(`${marryUser.username}`, 690 - marryUser.username.length * 7.4, 74) 61 | 62 | const avatarUser = marryUser.avatarURL({ dynamic: true, format: "png", size: 1024 }); 63 | 64 | ctx.beginPath(); 65 | ctx.arc(688, 111, 33, 0, Math.PI * 2, true); 66 | ctx.closePath(); 67 | ctx.clip(); 68 | 69 | const marryAvatar = await Canvas.loadImage(`${avatarUser}`) 70 | ctx.drawImage(marryAvatar, 656, 79, 65, 65) 71 | 72 | } 73 | 74 | ctx.restore() 75 | 76 | ctx.beginPath(); 77 | ctx.arc(206, 100, 53, 4.7, Math.PI * 0); 78 | ctx.arc(206, 205, 53, 6.35, Math.PI * 0.52); 79 | ctx.arc(101, 205, 53, 1.65, Math.PI * 1); 80 | ctx.arc(101, 100, 53, 3.3, Math.PI * 1.5); 81 | ctx.closePath(); 82 | ctx.clip(); 83 | 84 | const avatar = user.avatarURL({ dynamic: true, format: "png", size: 1024 }); 85 | 86 | const userAvatar = await Canvas.loadImage(`${avatar}`) 87 | ctx.drawImage(userAvatar, 45, 45, 218, 218) 88 | 89 | const attachment = new Discord.MessageAttachment(canvas.toBuffer(), 'perfil.png') 90 | interaction.reply({ files: [attachment] }) 91 | 92 | } 93 | } 94 | 95 | function abreviar(number, precision=2) { 96 | return number.toLocaleString('en-US', { notation: 'compact', maximumFractionDigits: precision }) 97 | } 98 | -------------------------------------------------------------------------------- /ComandosSlash/Economia/rank.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "rank", 5 | description: "rank dos maiores dinheiros", 6 | type: 'CHAT_INPUT', 7 | run: async (client, interaction) => { 8 | 9 | let userdb = await client.userdb.find({}) 10 | userdb.sort((a,b) => (b.economia.money + b.economia.banco) - (a.economia.money + a.economia.banco)) 11 | 12 | userdb = userdb.slice(0,10) 13 | 14 | interaction.reply({embeds: [new Discord.MessageEmbed() 15 | .setTitle(`📊 • Rank dos mais ricos da Economia!`) 16 | .setColor("a5d7ff") 17 | .setDescription(`> ${userdb.map((user, i) => `#${i+1} | 👥**${client.users.cache.get(user.userID).tag || `sumido#0000`}** (💸${abreviar(user.economia.money + user.economia.banco)})`).join("\n> ") }`) 18 | ]}) 19 | 20 | } 21 | } 22 | 23 | function abreviar(number, precision=2) { 24 | return number.toLocaleString('en-US', { notation: 'compact', maximumFractionDigits: precision }) 25 | } 26 | -------------------------------------------------------------------------------- /ComandosSlash/Economia/retirar.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "retirar", 5 | description: "retirar seu dinheiro no banco", 6 | type: 'CHAT_INPUT', 7 | options: [ 8 | { 9 | name: "quantia", 10 | description: "digite uma quantia para retirar, ou digite [tudo]", 11 | type: 3, 12 | required: true 13 | }, 14 | ], 15 | run: async (client, interaction) => { 16 | 17 | let quantia = interaction.options.getString("quantia") 18 | 19 | if(quantia < 1 || isNaN(quantia) && quantia.toLowerCase() != "tudo"){ 20 | return interaction.reply({embeds: [new Discord.MessageEmbed() 21 | .setTitle(`👨 Calma ae...`) 22 | .setColor("a5d7ff") 23 | .setDescription(`Você deve especificar uma quantia válida acima de 0 para retirar, ou digitar \`tudo\` para retirar tudo que você tem na carteira.`) 24 | ], ephemeral: true}) 25 | } 26 | 27 | let userdb = await client.userdb.findOne({ 28 | userID: interaction.user.id 29 | }) 30 | 31 | const usermoney = userdb.economia.banco 32 | 33 | if(!userdb || usermoney == 0){ 34 | return interaction.reply({embeds: [new Discord.MessageEmbed() 35 | .setTitle(`😢 Então amigo...`) 36 | .setColor("a5d7ff") 37 | .setDescription("Você atualmente não tem dinheiro algum na sua conta do banco para retirada.") 38 | ], ephemeral: true}) 39 | } 40 | 41 | let dinero; 42 | 43 | if(quantia.toLowerCase() == "tudo"){ 44 | 45 | dinero = usermoney 46 | 47 | } else { 48 | 49 | quantia = ~~quantia 50 | 51 | if(usermoney < quantia) 52 | return interaction.reply({embeds: [new Discord.MessageEmbed() 53 | .setTitle(`😢 Então amigo...`) 54 | .setColor("a5d7ff") 55 | .setDescription(`Você não tem toda essa quantia para retirar no momento, no seu banco atualmente só tem ${usermoney} dinheiros.`) 56 | ], ephemeral: true}) 57 | 58 | dinero = quantia 59 | 60 | } 61 | 62 | await client.userdb.updateOne({ 63 | userID: interaction.user.id 64 | },{ $set: { 65 | "economia.money": userdb.economia.money + dinero, 66 | "economia.banco": usermoney - dinero 67 | } 68 | }) 69 | 70 | interaction.reply({embeds: [new Discord.MessageEmbed() 71 | .setTitle(`💸 Ta ná mão my friendo!`) 72 | .setColor("a5d7ff") 73 | .setDescription(`Você acaba de retirar 🤑 \`${dinero}\` dinheiros da sua conta do banco!`) 74 | ]}) 75 | 76 | } 77 | }; 78 | -------------------------------------------------------------------------------- /ComandosSlash/Economia/sobremim.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "sobremim", 5 | description: "alterar o sobremim do seu perfil", 6 | type: 'CHAT_INPUT', 7 | options: [ 8 | { 9 | name: "sobremim", 10 | description: "digite o conteúdo so seu sobremim", 11 | type: 3, 12 | required: true 13 | }, 14 | ], 15 | run: async (client, interaction) => { 16 | 17 | const sobremim = interaction.options.getString("sobremim") 18 | 19 | let userdb = await client.userdb.findOne({ 20 | userID: interaction.user.id 21 | }) 22 | 23 | if(!userdb){ 24 | const newuser = new client.userdb({ userID: interaction.user.id }) 25 | await newuser.save(); 26 | 27 | userdb = await client.userdb.findOne({ userID: interaction.user.id }) 28 | } 29 | 30 | userdb.economia.sobremim = sobremim; userdb.save() 31 | 32 | interaction.reply({embeds: [new Discord.MessageEmbed() 33 | .setTitle(`😉 Ta na mão chefe!`) 34 | .setColor("a5d7ff") 35 | .setDescription(`> Seu sobremim foi alterado para: \`${sobremim}\``) 36 | ]}) 37 | 38 | } 39 | }; 40 | -------------------------------------------------------------------------------- /ComandosSlash/Economia/work.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "work", 5 | description: "trabalhar", 6 | type: 'CHAT_INPUT', 7 | run: async (client, interaction) => { 8 | 9 | let userdb = await client.userdb.findOne({ 10 | userID: interaction.user.id 11 | }) 12 | 13 | if(!userdb || !userdb.economia.trabalho.trampo){ 14 | return interaction.reply({embeds: [new Discord.MessageEmbed() 15 | .setTitle(`✋ Dá não filhão...`) 16 | .setColor("a5d7ff") 17 | .setDescription(`**Calma!** Você ainda não tem um emprego, digite /empregos para ver a lista de empregos e escolher algum.`) 18 | ], ephemeral: true}) 19 | } 20 | 21 | if(Date.now() < userdb.cooldowns.work){ 22 | const calc = userdb.cooldowns.work - Date.now() 23 | 24 | return interaction.reply({embeds: [new Discord.MessageEmbed() 25 | .setTitle(`🤔 Calma ae amigo...`) 26 | .setColor("a5d7ff") 27 | .setDescription(`Ainda falta ${ms(calc).hours}h ${ms(calc).minutes}m ${ms(calc).seconds}s para você trabalhar novamente.`) 28 | ], ephemeral: true}) 29 | } 30 | 31 | let frase, 32 | emprego; 33 | 34 | switch (userdb.economia.trabalho .trampo){ 35 | 36 | case "lixeiro": 37 | emprego = "🗑️ lixeiro" 38 | frase = ["juntou 20 sacos lixos", "dirigiu o caminhão de lixo por 2 horas"] 39 | break; 40 | 41 | case "pizza": 42 | emprego = "🍕 entregador de pizza" 43 | frase = ["entregou 8 pizzas", "trabalhou por 3 horas"] 44 | break; 45 | 46 | case "frentista": 47 | emprego = "⛽ frentista" 48 | frase = ["abasteceu 28 carros", "trocou o óleo de 8 caminhões"] 49 | break; 50 | 51 | case "caminhoneiro": 52 | emprego = "🚛 caminhoneiro" 53 | frase = ["uma carga de Rondônia levou até Porto velho", "fez 2 entregas em 1 dia"] 54 | break; 55 | 56 | case "sedex": 57 | emprego = "📦 entregador do sedex" 58 | frase = ["entegou 20 pacotes"] 59 | break; 60 | 61 | case "pescador": 62 | emprego = "🎣 pescador" 63 | frase = ["pescou 20 bagres", "pescou um peixe lendário no laguinho do seu Zé"] 64 | break; 65 | 66 | case "ti": 67 | emprego = "💻 técnico de ti" 68 | frase = ["arrumou 7 computadores de pessoas que clicaram em mães solteias", "desenvolveu um software para poder abrir links porno na sua empresa."] 69 | break; 70 | } 71 | 72 | const mxmn = userdb.economia.trabalho.maxmoney / 2 73 | 74 | const dinheiro = Math.floor(Math.random() * mxmn) + mxmn 75 | 76 | await client.userdb.updateOne({ 77 | userID: interaction.user.id 78 | }, { $set: { 79 | "economia.money": userdb.economia.money + dinheiro, 80 | "cooldowns.work": Date.now() + userdb.economia.trabalho.cooldown 81 | } 82 | }) 83 | 84 | frase = frase[Math.floor(Math.random() * frase.length)] 85 | 86 | interaction.reply({embeds: [new Discord.MessageEmbed() 87 | .setTitle(`💸 Trabalho feito! `) 88 | .setColor("a5d7ff") 89 | .setDescription(`**Ta na mão chefia!** Você ${frase} como ${emprego} e ganhou 🤑 ${dinheiro} dinheiros.`) 90 | ]}) 91 | } 92 | }; 93 | 94 | function ms(ms) { 95 | const seconds = ~~(ms/1000) 96 | const minutes = ~~(seconds/60) 97 | const hours = ~~(minutes/60) 98 | const days = ~~(hours/24) 99 | 100 | return { days, hours: hours%24, minutes: minutes%60, seconds: seconds%60 } 101 | } 102 | -------------------------------------------------------------------------------- /ComandosSlash/Outros/help.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | module.exports = { 3 | name: "help", 4 | description: "Ver a lista de comandos do bot", 5 | type: "CHAT_INPUT", 6 | run: async(client, interaction) =>{ 7 | 8 | const embed = new Discord.MessageEmbed() 9 | .setTitle('🤖 Ver todos os comandos do bot!') 10 | .setColor("a5d7ff") 11 | .setDescription('Selecione uma categoria de comandos para ver.') 12 | 13 | const row = new Discord.MessageActionRow() 14 | .addComponents( 15 | new Discord.MessageSelectMenu() 16 | .setCustomId('menu') 17 | .setPlaceholder('selecione uma categoria de comandos.') 18 | .addOptions([ 19 | { 20 | label: 'Economia', 21 | emoji: '🤑', 22 | value: 'economia', 23 | }, 24 | { 25 | label: 'Outros', 26 | emoji: '🌐', 27 | value: 'outros', 28 | }, 29 | ]), 30 | ); 31 | 32 | interaction.reply({embeds: [embed], components: [row], fetchReply: true}).then(msg => { 33 | 34 | const collector = msg.createMessageComponentCollector({ idle: 1000 * 60 * 10 }); 35 | 36 | collector.on('collect', async i => { 37 | 38 | if(i.user.id != interaction.user.id) return i.reply({embeds: [new Discord.MessageEmbed() 39 | .setTitle(`👨 Calma ae...`) 40 | .setColor("a5d7ff") 41 | .setDescription(`Só quem solicitou o menu pode usá-lo.`) 42 | ], ephemeral: true}) 43 | 44 | i.deferUpdate() 45 | 46 | if(i.values[0] == "economia"){ 47 | interaction.editReply({embeds: [new Discord.MessageEmbed() 48 | .setTitle('🤑 Comandos de Economia:') 49 | .setColor("a5d7ff") 50 | .addFields( 51 | { name: '__Atm__', value: 'Ver quanto dinheiro você, ou outro usuário tem.' }, 52 | { name: '__Casar__', value: 'Casar com o amor da sua vida! Ou não...' }, 53 | { name: '__Daily__', value: 'Pegar seu prêmio diário de dinheiros.' }, 54 | { name: '__Depositar__', value: 'Depositar o dinheiro que você tem na mão no banco' }, 55 | { name: '__Divorciar__', value: 'Se divorciar no corno que te chifrou.' }, 56 | { name: '__Empregos__', value: 'Ver os empregos disponíveis e pega-los' }, 57 | { name: '__Pay__', value: 'Transferir alguma quantia para alguém.' }, 58 | { name: '__Perfil__', value: 'Ver o seu perfil ou de algum outro usuário.' }, 59 | { name: '__Rank__', value: 'Ver as pessoas mais ricas da economia do bot.' }, 60 | { name: '__Retirar__', value: 'Retirar o dinheiro do banco para as mãos.' }, 61 | { name: '__Sobremim__', value: 'Alterar o conteúdo do seu sobremim do perfil.' }, 62 | { name: '__Work__', value: 'Trabalhar no seu emprego pego no /Empregos.' }, 63 | ) 64 | ]}) 65 | } 66 | if(i.values[0] == "outros"){ 67 | interaction.editReply({embeds: [new Discord.MessageEmbed() 68 | .setTitle('🌐 Outros comandos:') 69 | .setColor("a5d7ff") 70 | .addFields( 71 | { name: '__Ping__', value: 'Ver o ping do bot e da Database.' }, 72 | { name: '__Help__', value: 'Ver uma lista de todos os comandos.' }, 73 | ) 74 | ]}) 75 | } 76 | 77 | })//collector 78 | 79 | })//.then 80 | 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /ComandosSlash/Outros/ping.js: -------------------------------------------------------------------------------- 1 | const { Client, CommandInteraction, MessageEmbed } = require("discord.js"); 2 | 3 | module.exports = { 4 | name: "ping", 5 | description: "Veja o atual ping do bot.", 6 | type: 'CHAT_INPUT', 7 | run: async (client, interaction) => { 8 | 9 | const st = process.hrtime() 10 | await client.userdb.findOne({ 11 | userid: interaction.member.id, 12 | }); 13 | const sto = process.hrtime(st) 14 | 15 | const pingDB = Math.round((sto[0] * 1e9 + sto[1]) / 1e6); 16 | 17 | const embed = new MessageEmbed() 18 | .setColor("a5d7ff") 19 | .setTitle("🎾 ****»**** **PONG!**") 20 | .setDescription(`> **ping do bot** \`${client.ws.ping}\`**ms!** 21 | > **Mongodb:** \`${pingDB}\` **ms!**`) 22 | interaction.reply({embeds: [embed]}); 23 | }, 24 | }; 25 | 26 | -------------------------------------------------------------------------------- /Config.json: -------------------------------------------------------------------------------- 1 | { 2 | "BotToken": "O token do seu bot aqui.", 3 | "MongoURL": "String de conexão do MongoDB aqui." 4 | } 5 | -------------------------------------------------------------------------------- /Database/user.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const userset = new Schema({ 4 | userID: { type: String }, 5 | economia: { 6 | trabalho: { 7 | maxmoney: { type: Number }, 8 | trampo: { type: String }, 9 | cooldown: { type: Number } 10 | }, 11 | marry:{ 12 | casado: { type: Boolean, default: false }, 13 | com: { type: String } 14 | }, 15 | banco: { type: Number, default: 0 }, 16 | money: { type: Number, default: 0 }, 17 | sobremim: { type: String, default: "Use /sobremim para alterar este texto."} 18 | }, 19 | cooldowns: { 20 | trabalho: { type: String, default: 0 }, 21 | work: { type: String, default: 0 }, 22 | daily: { type: String, default: 0 }, 23 | }, 24 | }); 25 | 26 | module.exports = model("Usuários", userset); 27 | -------------------------------------------------------------------------------- /Eventos/client/menção.js: -------------------------------------------------------------------------------- 1 | const client = require("../../index"); 2 | const Discord = require("discord.js") 3 | 4 | client.on("messageCreate", message => { 5 | 6 | if(message.author.bot) return; 7 | if(!message.guild) return; 8 | 9 | if(message.content == `<@${client.user.id}>` || message.content == `<@!${client.user.id}>`){ 10 | 11 | const embed = new Discord.MessageEmbed() 12 | .setTitle(`${client.user.username}`) 13 | .setColor(`a5d7ff`) 14 | .setThumbnail(client.user.avatarURL()) 15 | .setDescription(`> **Opa! Bão?** Me chamo \`${client.user.username}\`, se precisar de ajuda use /help`) 16 | 17 | message.reply({embeds: [embed]}) 18 | } 19 | }); 20 | -------------------------------------------------------------------------------- /Eventos/client/ready.js: -------------------------------------------------------------------------------- 1 | const client = require("../../index"); 2 | const mongo = require("mongoose") 3 | client.on("ready", () =>{ 4 | 5 | let status = [ 6 | `Transando em ${client.guilds.cache.size} servidores.`, 7 | `Chupando ${client.users.cache.size} usuários.`, 8 | `Essa budega foi criado pela Aubrey, não se esqueça disso.` 9 | ], 10 | i = 0 11 | setInterval(() =>{ 12 | client.user.setActivity(`${status[i++ % status.length]}`, { 13 | type: `WATCHING` 14 | }) 15 | }, 1000 * 30); 16 | 17 | client.user.setStatus('online') 18 | 19 | mongo.connection.on('connected', () =>{ 20 | console.log('🍃 MongoDB on') 21 | }) 22 | client.MongoConnect() 23 | 24 | console.log(`🤖 Bot on em ${client.user.tag} `) 25 | 26 | }) 27 | -------------------------------------------------------------------------------- /Eventos/guild/interactionCreate.js: -------------------------------------------------------------------------------- 1 | const client = require("../../index"); 2 | const Discord = require("discord.js") 3 | client.on("interactionCreate", async (interaction) => { 4 | 5 | if (interaction.isCommand()) { 6 | 7 | const cmd = client.slashCommands.get(interaction.commandName); 8 | 9 | if (!cmd) return interaction.reply(`Ocorreu algum erro amigo.`); 10 | 11 | interaction["member"] = interaction.guild.members.cache.get(interaction.user.id); 12 | 13 | cmd.run(client, interaction) 14 | 15 | } 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /Font.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AubreyFBG/Bot-para-Discord-com-MongoDB/20982bb4150228652f2d95269341a751993352df/Font.otf -------------------------------------------------------------------------------- /Handler/index.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs") 2 | 3 | module.exports = async (client) => { 4 | 5 | //====Handler das Slahs====\\ 6 | 7 | const SlashsArray = [] 8 | 9 | fs.readdir(`././ComandosSlash/`, (erro, pasta) => { 10 | 11 | pasta.forEach(subpasta => { 12 | 13 | 14 | 15 | fs.readdir(`././ComandosSlash/${subpasta}/`, (erro, arquivos) => { 16 | 17 | arquivos.forEach(arquivo => { 18 | 19 | 20 | 21 | if(!arquivo?.endsWith('.js')) return; 22 | 23 | 24 | 25 | arquivo = require(`../ComandosSlash/${subpasta}/${arquivo}`); 26 | 27 | 28 | 29 | if(!arquivo?.name) return; 30 | 31 | 32 | 33 | client.slashCommands.set(arquivo?.name, arquivo); 34 | 35 | 36 | 37 | SlashsArray.push(arquivo) 38 | 39 | }); 40 | 41 | }); 42 | 43 | }); 44 | 45 | }); 46 | 47 | client.on("ready", async () => { 48 | 49 | //Este código serve pra registrar as slashs em 1 só servidor específico. 50 | 51 | const guild = client.guilds.cache.get("885941977953210429") 52 | 53 | 54 | 55 | if(!guild) { 56 | 57 | console.log("O servidor específicado para registrar as slashs é inválido.", "Desligando...") 58 | 59 | process.exit(); 60 | 61 | } 62 | 63 | 64 | 65 | guild.commands.set(SlashsArray); 66 | 67 | //Caso quiser registrar as slashs no cache global, substitua o código acima por esse: 68 | 69 | //client.application.commands.set(SlashsArray); 70 | 71 | // Mas lembre-se! Registrar as slashs no cache global demora entre 1 e 3 horas, já em algum servidor específico é instantâneo. Eu aconcelho fazer todos os comandos em um servidor e depois que tudo estiver pronto passa-los para o global. 72 | 73 | }); 74 | 75 | //====Handler dos eventin====\\ 76 | 77 | fs.readdir(`././Eventos/`, (erro, pasta) =>{ 78 | 79 | pasta.forEach(subpasta =>{ 80 | 81 | fs.readdir(`././Eventos/${subpasta}/`, (erro, arquivos) =>{ 82 | 83 | arquivos.forEach(arquivo =>{ 84 | 85 | 86 | 87 | if(!arquivo.endsWith('.js')) return; 88 | 89 | 90 | 91 | require(`../Eventos/${subpasta}/${arquivo}`); 92 | 93 | 94 | 95 | }); 96 | 97 | }); 98 | 99 | }); 100 | 101 | }); 102 | 103 | }; 104 | 105 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | ## 🍭・Bot em Discord.js v13 em SlashCommands com conexão ao banco de dados MongoDB. 3 | 4 | O projeto contém 14 comandos ao total. 5 | ### Economia: 6 | - Atm 7 | - Casar 8 | - Daily 9 | - Depositar 10 | - Divorciar 11 | - Empregos 12 | - Pay 13 | - Perfil 14 | - Rank 15 | - Retirar 16 | - Sobremim 17 | - Work 18 | ### Outros: 19 | - Ping 20 | - Help 21 | 22 | ## 🍙・Packages usadas: 23 | - [Discord.js@13.6.0](https://www.npmjs.com/package/discord.js) 24 | - [Canvas@2.9.0](https://www.npmjs.com/package/canvas) 25 | - [Mongoose@6.2.1](https://www.npmjs.com/package/mongoose) 26 | 27 | ## 🍬・Atenção! 28 | No arquivo Config.json, você deve colocar o token do seu bot, e a String de conexão do MongoDB. 29 | ```json 30 | { 31 | "BotToken": "Seu Token Aqui", 32 | "MongoURL": "A String de conexão do MongoDB aqui." 33 | } 34 | ``` 35 | ***(Caso você não saiba pegar a A String de conexão do MongoDB, [veja este video](https://youtu.be/6hYXX4A1cyY) até mais ou menos o minuto 3 que ele ensina como pega-la e configurar as opções lá no site do MongoDB.)*** 36 | 37 | ## 🍣・Botão para dar Fork no projeto direto na replit: 38 | [![Ver o projeto na Replit](https://img.shields.io/badge/Ver--o--projeto--na--replit-000000?style=for-the-badge&logo=replit&logoColor=white)](https://replit.com/@AubreyFBG/Discord-bot-v13-com-MongoDB) 39 | [![Dar Fork na Replit](https://img.shields.io/badge/dar--fork--na--replit-000000?style=for-the-badge&logo=replit&logoColor=white)](https://repl.it/github/AubreyFBG/Bot-para-Discord-com-MongoDB) 40 | 41 | ## 🍡・Pré-view de alguns comandos: 42 | 43 | 44 | 45 | 46 | ## 🍨・Bot feito por: misss_aubrey 47 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js"); 2 | 3 | const config = require("./Config.json") 4 | 5 | const mongo = require("mongoose"); 6 | 7 | const client = new Discord.Client({ intents: 32767 }); 8 | 9 | module.exports = client; 10 | 11 | client.userdb = require("./Database/user.js") 12 | 13 | client.slashCommands = new Discord.Collection(); 14 | 15 | require("./Handler")(client); 16 | 17 | client.MongoConnect = () => mongo.connect(config.MongoURL) 18 | 19 | client.login(config.BotToken); 20 | --------------------------------------------------------------------------------