├── 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 | [](https://replit.com/@AubreyFBG/Discord-bot-v13-com-MongoDB)
39 | [](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 |
--------------------------------------------------------------------------------