From 3f44fd1f0529ddd03149fc75c7cae4774af378a7 Mon Sep 17 00:00:00 2001 From: ADG Date: Wed, 25 May 2022 13:26:49 -0300 Subject: [PATCH] adicionar afk, nnsei --- archive/BotDashboard.js | 337 +++++++++++++++++++++++ archive/pt-BR.js | 446 +++++++++++++++++++++++++++++++ src/Commands/Utils/AFKCommand.js | 142 ++++++++++ src/Events/guildMemberAdd.js | 23 +- src/Events/messageCreate.js | 33 +++ src/Locales/en-US.js | 5 + src/Locales/fr-FR.js | 5 + src/Locales/pt-BR.js | 5 + src/zuly.js | 2 +- 9 files changed, 984 insertions(+), 14 deletions(-) create mode 100644 archive/BotDashboard.js create mode 100644 archive/pt-BR.js create mode 100644 src/Commands/Utils/AFKCommand.js diff --git a/archive/BotDashboard.js b/archive/BotDashboard.js new file mode 100644 index 00000000..a02d3cce --- /dev/null +++ b/archive/BotDashboard.js @@ -0,0 +1,337 @@ +/* eslint-disable */ +module.exports = class DashboardCommand { + constructor () { + return { + permissoes: { + membro: ['MANAGE_GUILD'], + bot: [] + }, + pt: { + nome: 'dashboard', + categoria: '⚙️ » Configuração', + desc: 'Configure o pelo conforto do seu servidor!' + }, + en: { + nome: 'dashboard', + categoria: '⚙️ » Configuration', + desc: 'Set it up from the comfort of your server!' + }, + fr: { + nome: 'dashboard', + categoria: '⚙️ » Configuration', + desc: 'Configurez-le depuis le confort de votre serveur!' + }, + /* + SUB_COMMAND 1 = SubCommand + SUB_COMMAND_GROUP: 2 = SubCommandGroup + STRING: 3 = String + INTEGER: 4 = Any integer between -2^53 and 2^53 + BOOLEAN: 5 = True or False + USER: 6 = User Mention + CHANNEL: 7 = Includes all channel types + categories + ROLE: 8 = Role Mention + MENTIONABLE: 9 = Includes users and roles + NUMBER: 10 = Any double between -2^53 and 2^53 + */ + options: [], + aliases: [], + run: this.run + }; + } + async run (ctx) { + const { + MessageActionRow, + MessageButton + } = require('discord.js'); + const firstRow = new MessageActionRow() + .addComponents( + new MessageButton() + .setCustomId('geral') + .setEmoji('979025660834119690') + .setLabel(ctx.idioma.discboard.labels.config) + .setStyle('PRIMARY'), + new MessageButton() + .setCustomId('logs') + .setEmoji('📋') + .setLabel(ctx.idioma.discboard.labels.logs) + .setStyle('PRIMARY'), + ); + const embed = new ctx.embed(); + embed.setTitle(ctx.idioma.discboard.title.replace('{{bot}}', global.zuly.user.username)); + embed.setDescription(ctx.idioma.discboard.description); + embed.setColor('#ffcbdb'); + embed.setThumbnail(global.zuly.user.displayAvatarURL({ + dynamic: true, + format: 'png', + size: 4096 + })); + embed.setFooter('⤷ zulybot.xyz', global.zuly.user.displayAvatarURL({ + dynamic: true, + format: 'png', + size: 4096 + })); + ctx.message.channel.slashReply({ + content: ctx.message.author.mention, + embeds: [embed.get()], + components: [firstRow] + }).then(async () => { + const geralFilter = i => i.customId === 'geral' && i.user.id === ctx.message.author.id; + const geralCollector = ctx.message.channel.createMessageComponentCollector({ + geralFilter, + time: 180000 + }); + + const logsFilter = i => i.customId === 'geral' && i.user.id === ctx.message.author.id; + const logsCollector = ctx.message.channel.createMessageComponentCollector({ + geralFilter, + time: 180000 + }); + + geralCollector.on('collect', async (i) => { + geralCollector.stop(); + const secondRow = new MessageActionRow() + .addComponents( + new MessageButton() + .setCustomId('autorole') + .setEmoji('933096931197071380') + .setLabel(ctx.idioma.discboard.geral.fields.autorole.label) + .setStyle('DANGER'), + new MessageButton() + .setCustomId('idioma') + .setEmoji('🌎') + .setLabel(ctx.idioma.discboard.geral.fields.idioma.label) + .setStyle('DANGER'), + new MessageButton() + .setCustomId('automod') + .setEmoji('885193463111483412') + .setLabel(ctx.idioma.discboard.geral.fields.automod.label) + .setStyle('DANGER'), + new MessageButton() + .setCustomId('nqn') + .setEmoji('885919779205029898') + .setLabel(ctx.idioma.discboard.geral.fields.notquitenitro.label) + .setStyle('DANGER'), + ); + const embed = new ctx.embed(); + embed.setTitle(ctx.idioma.discboard.title.replace('{{bot}}', global.zuly.user.username)); + embed.setDescription(ctx.idioma.discboard.description); + embed.setColor('#ffcbdb'); + embed.addField('<:zu_staffdc:933096931197071380> ' + ctx.idioma.discboard.geral.fields.autorole.label, ctx.idioma.discboard.geral.fields.autorole.description, true); + embed.addField('🌎 ' + ctx.idioma.discboard.geral.fields.idioma.label, ctx.idioma.discboard.geral.fields.idioma.description, true); + embed.addField('_ _', '_ _', true); + embed.addField('<:zu_certifiedmod:885193463111483412> ' + ctx.idioma.discboard.geral.fields.automod.label, ctx.idioma.discboard.geral.fields.automod.description, true); + embed.addField('<:zu_nitro:885919779205029898> ' + ctx.idioma.discboard.geral.fields.notquitenitro.label, ctx.idioma.discboard.geral.fields.notquitenitro.description, true); + embed.setThumbnail(global.zuly.user.displayAvatarURL({ + dynamic: true, + format: 'png', + size: 4096 + })); + embed.setFooter('⤷ zulybot.xyz', global.zuly.user.displayAvatarURL({ + dynamic: true, + format: 'png', + size: 4096 + })); + i.update({ + content: ctx.message.author.mention, + embeds: [embed.get()], + components: [secondRow] + }).then(async () => { + const autoroleFilter = i => i.customId === 'autorole' && i.user.id === ctx.message.author.id; + const autoroleCollector = ctx.message.channel.createMessageComponentCollector({ + autoroleFilter, + time: 180000 + }); + + const idiomaFilter = i => i.customId === 'idioma' && i.user.id === ctx.message.author.id; + const idiomaCollector = ctx.message.channel.createMessageComponentCollector({ + idiomaFilter, + time: 180000 + }); + + const automodFilter = i => i.customId === 'automod' && i.user.id === ctx.message.author.id; + const automodCollector = ctx.message.channel.createMessageComponentCollector({ + automodFilter, + time: 180000 + }); + + const nqnFilter = i => i.customId === 'nqn' && i.user.id === ctx.message.author.id; + const nqnCollector = ctx.message.channel.createMessageComponentCollector({ + nqnFilter, + time: 180000 + }); + + autoroleCollector.on('collect', async (i) => { + autoroleCollector.stop(); + const thirdRow = new MessageActionRow() + .addComponents( + new MessageButton() + .setCustomId('autorole_bot') + .setEmoji('979034461939318804') + .setLabel(ctx.idioma.discboard.geral.fields.autorolebot.label) + .setStyle('DANGER'), + new MessageButton() + .setCustomId('autorole_user') + .setEmoji('936975701322633256') + .setLabel(ctx.idioma.discboard.geral.fields.autoroleuser.label) + .setStyle('DANGER'), + new MessageButton() + .setCustomId('autoroledelete') + .setEmoji('🗑️') + .setLabel(ctx.idioma.discboard.geral.fields.autoroledelete.label) + .setStyle('DANGER') + ); + const embed = new ctx.embed(); + embed.setTitle(ctx.idioma.discboard.title.replace('{{bot}}', global.zuly.user.username)); + embed.setDescription(ctx.idioma.discboard.geral.fields.autorole.description); + embed.setColor('#ffcbdb'); + embed.setThumbnail(global.zuly.user.displayAvatarURL({ + dynamic: true, + format: 'png', + size: 4096 + })); + embed.setFooter('⤷ zulybot.xyz', global.zuly.user.displayAvatarURL({ + dynamic: true, + format: 'png', + size: 4096 + })); + i.update({ + content: ctx.message.author.mention, + embeds: [embed.get()], + components: [thirdRow] + }).then(async () => { + const autorolebotFilter = i => i.customId === 'autorole_bot' && i.user.id === ctx.message.author.id; + const autorolebotCollector = await ctx.message.channel.createMessageComponentCollector({ + autorolebotFilter, + time: 180000 + }); + + const autoroleuserFilter = i => i.customId === 'autorole_user' && i.user.id === ctx.message.author.id; + const autoroleuserCollector = await ctx.message.channel.createMessageComponentCollector({ + autoroleuserFilter, + time: 180000 + }); + + autorolebotCollector.on('collect', async (i) => { + autorolebotCollector.stop(); + const embed = new ctx.embed(); + embed.setTitle(ctx.idioma.discboard.title.replace('{{bot}}', global.zuly.user.username)); + embed.setDescription(ctx.idioma.discboard.geral.fields.autorolebot.collector); + embed.setColor('#ffcbdb'); + embed.setThumbnail(global.zuly.user.displayAvatarURL({ + dynamic: true, + format: 'png', + size: 4096 + })); + embed.setFooter('⤷ zulybot.xyz', global.zuly.user.displayAvatarURL({ + dynamic: true, + format: 'png', + size: 4096 + })); + await i.update({ + content: ctx.message.author.mention, + embeds: [embed.get()], + components: [] + }).then(async () => { + const filter = m => m.author.id === ctx.message.author.id; + const messageCollector = ctx.message.channel.createMessageCollector({ + filter, + time: 180000 + }); + messageCollector.on('collect', async (message) => { + messageCollector.stop(); + message.delete(); + const botRoles = []; + message.mentions.roles.forEach(async (role) => { + botRoles.push(role.id); + }); + const embed = new ctx.embed(); + embed.setTitle(ctx.idioma.discboard.title.replace('{{bot}}', global.zuly.user.username)); + embed.setDescription(ctx.idioma.discboard.geral.fields.autorolebot.set.replace('{{roles}}', botRoles.map(i => `<@&${i}>`).join(', '))); + embed.setColor('#ffcbdb'); + embed.setThumbnail(global.zuly.user.displayAvatarURL({ + dynamic: true, + format: 'png', + size: 4096 + })); + embed.setFooter('⤷ zulybot.xyz', global.zuly.user.displayAvatarURL({ + dynamic: true, + format: 'png', + size: 4096 + })); + await ctx.message.channel.slashReply({ + content: ctx.message.author.mention, + embeds: [embed.get()], + components: [] + }).then(async (msg) => { + await global.zuly.db.set(`autorolebot-${ctx.message.guild.id}`, botRoles); + msg.react('✅'); + }); + }); + }); + }); + + autoroleuserCollector.on('collect', async (i) => { + autoroleuserCollector.stop(); + const embed = new ctx.embed(); + embed.setTitle(ctx.idioma.discboard.title.replace('{{bot}}', global.zuly.user.username)); + embed.setDescription(ctx.idioma.discboard.geral.fields.autoroleuser.collector); + embed.setColor('#ffcbdb'); + embed.setThumbnail(global.zuly.user.displayAvatarURL({ + dynamic: true, + format: 'png', + size: 4096 + })); + embed.setFooter('⤷ zulybot.xyz', global.zuly.user.displayAvatarURL({ + dynamic: true, + format: 'png', + size: 4096 + })); + await i.update({ + content: ctx.message.author.mention, + embeds: [embed.get()], + components: [] + }).then(async () => { + const filter = m => m.author.id === ctx.message.author.id; + const messageCollector = ctx.message.channel.createMessageCollector({ + filter, + time: 180000 + }); + messageCollector.on('collect', async (message) => { + messageCollector.stop(); + message.delete(); + const botRoles = []; + message.mentions.roles.forEach(async (role) => { + botRoles.push(role.id); + }); + const embed = new ctx.embed(); + embed.setTitle(ctx.idioma.discboard.title.replace('{{bot}}', global.zuly.user.username)); + embed.setDescription(ctx.idioma.discboard.geral.fields.autoroleuser.set.replace('{{roles}}', botRoles.map(i => `<@&${i}>`).join(', '))); + embed.setColor('#ffcbdb'); + embed.setThumbnail(global.zuly.user.displayAvatarURL({ + dynamic: true, + format: 'png', + size: 4096 + })); + embed.setFooter('⤷ zulybot.xyz', global.zuly.user.displayAvatarURL({ + dynamic: true, + format: 'png', + size: 4096 + })); + await ctx.message.channel.slashReply({ + content: ctx.message.author.mention, + embeds: [embed.get()], + components: [] + }).then(async (msg) => { + await global.zuly.db.set(`autoroleuser-${ctx.message.guild.id}`, botRoles); + msg.react('✅'); + }); + }); + }); + }); + }); + }); + }); + }); + }); + } +}; \ No newline at end of file diff --git a/archive/pt-BR.js b/archive/pt-BR.js new file mode 100644 index 00000000..7bf7aabf --- /dev/null +++ b/archive/pt-BR.js @@ -0,0 +1,446 @@ +module.exports = { + lang: 'pt', + discboard: { + title: 'Painel de Controle | {{bot}}', + description: 'Faça configurações gerais do seu servidor entre outras coisas por aqui!', + geral: { + description: 'Configurações gerais do seu servidor.', + fields: { + autoroledelete: { + label: 'Deletar', + description: 'Deleta as configurações de autorole.' + }, + autorolebot: { + label: 'AutoRole Bot', + collector: 'Envie as menções dos cargos que você deseja que o bot adicione automaticamente. [Bots]', + description: 'Adicione cargo aos bots.', + set: 'O(s) cargos {{roles}} foram adicionados ao autorole de bots.' + }, + autoroleuser: { + label: 'AutoRole User', + collector: 'Envie as menções dos cargos que você deseja que o bot adicione automaticamente. [Usuários]', + description: 'Adicione cargo aos usuários.', + set: 'O(s) cargos {{roles}} foram adicionados ao autorole de usuários.' + }, + autorole: { + label: 'AutoRole', + description: 'Configure o AutoRole do seu servidor.', + }, + idioma: { + label: 'Idioma', + description: 'Configure o idioma do seu servidor.', + }, + automod: { + label: 'AutoMod', + description: 'Configure o AutoMod do seu servidor.', + }, + notquitenitro: { + label: 'NotQuiteNitro', + description: 'Configure o NotQuiteNitro (nqn) do seu servidor.', + } + } + }, + labels: { + config: '» Configurações Gerais.', + logs: '» Logs (Comandos, Mensagens, etc).' + } + }, + afk: { + set: ':zzz: {{user}} **|** Você está afk, motivo: `{{status}}`.', + remove: ':zzz: {{user}} **|** Você não está mais afk.', + mention: ':zzz: {{user}} **|** Está afk [{{time}}], motivo: `{{status}}`.', + }, + image: { + editando: '✍️ %u **|** editando', + args: '✍️ %u **|** Eu preciso que você me dê algum argumento para que eu possa editar', + long: '✍️ %u **|** Sua mensagem é muito longa, tente reduzir para 300 caracteres', + achivment: 'Progresso Feito!' + }, + actions: { + kiss: { + description: '%u1 deu um beijo em %u2.', + labels: { + rt: 'Retribuir' + } + }, + slap: { + description: '%u1 deu um soco em %u2.', + labels: { + rt: 'Retribuir' + } + }, + hug: { + description: '%u1 deu um abraço em %u2.', + labels: { + rt: 'Retribuir' + } + }, + pat: { + description: '%u1 deu um cafuné em %u2.', + labels: { + rt: 'Retribuir' + } + } + }, + unbanall: { + title: 'Unbanall', + description: 'Deseja mesmo desbanir todos os membros de seu servidor? Essa ação irá durar muito tempo, porém pode ser desfeita com o comando `/desunbanall`.', + confirm: 'Sim, desbanir todos.', + done: 'Todos os membros foram desbanidos, tempo gasto: `%t`.', + }, + desunban: { + title: 'Desunban', + description: 'Deseja mesmo banir todos os membros que foram desbanidos de seu servidor? Essa ação irá durar muito tempo, porém pode ser desfeita com o comando `/unbanall`.', + confirm: 'Sim, banir todos.', + done: 'Todos os membros foram banidos, tempo gasto: `%t`.', + }, + report: { + p1: 'Está querendo denunciar algumas pessoas? Vieste ao lugar certo! Para realizar o report basta clicar no formulário!', + id: 'ID do Formulário:', + dm: 'Veja suas mensagens diretas!' + }, + daily: { + coletado: 'Você coletou **%m** diárias, volte amanhã e colete novamente.', + coletou: 'Você já coletou sua recompensa diária, colete-a novamente em **%time**' + }, + premium: 'Você descobriu uma funcionalidade premium, para ser um usuário premium entre em meu [servidor de suporte]()!', + bola: { + title: '🎱 Bola Mágica', + field1: '**Pergunta:**', + field2: '**Resposta:**', + }, + ship: { + nou: 'Mencione algum usuário para shippar', + d1: 'Vocês não são compatíveis, são muito diferentes um do outro 😔', + d2: 'Vocês podem ser amigos, mas não vejo um futuro melhor entre vocês, vocês são parecidos um com o outro 🤝', + d3: 'Vocês podem ser um casal, os gostos são quase os mesmos e vocês se conhecem muito 👀', + d4: 'São perfeitos, feitos um para o outro, vai em frente, vocês tem tudo para dar certo ❤️' + }, + dashboard: 'A Configuração do bot foi migrada para o dashboard, acesse por esse link: https://zulybot.xyz/dashboard/%g', + backup: { + create: { + success: 'Backup criado com sucesso!\n⤷ ID: `%id`, tempo gasto para criar: `%t`', + }, + list: { + noBackups: 'Você não possui backups.', + backupList: 'Lista de backups:', + backupID: 'ID: %id', + }, + load: { + success: 'Backup carregado com sucesso!', + error: 'Backup não encontrado.', + confirm: 'Você deseja carregar o backup? Saiba que todas as suas configurações serão substituidas pelo backup, não será recuperado **mensagens, cargos & canais** depois desse processo.\n> Para carregar clique no **botão** abaixo.', + } + }, + clusters: { + desc: '> Esse servidor está no cluster `%id`\n- Nome: `%name`\n- Ping: `%ping`', + field: 'Info Clusters:', + fielDesc: '- Cluster %id\n- Ping: %p\n- PingDB: %pd\n- Consumo: %ram' + }, + gender: { + title: 'Gênero', + desc: 'Olá, %u, eu gostaria de te conhecer melhor, o que você é? Menino? Menina? Ou nenhum dos dois? Eu preciso saber para que eu possa me adequar mais em minhas respostas!\n>>> - 🚹 Menino\n- 🚺 Menina\n- 🚻 Nenhum dos dois', + change: 'Gênero alterado para `%g` com sucesso!', + male: 'menino', + female: 'menina' + }, + anagramWords: ['andar', 'apreciar', 'reconhecer', 'ter', 'anúncio', 'televisão', 'buraco', 'acadêmico', 'pacote', + 'residente', 'puxar', 'tragédia', 'olhar', 'compacto', 'má', 'faca', 'perseguição', 'bomba', 'biscoito', 'leilão', 'tratar', + 'atrair', 'empregar', 'naufrágio', 'incerteza', 'rumor', 'formal', 'nobre', 'brincadeira', 'original', 'cover', 'ballet', 'cheiro', + 'ligação', 'refletir', 'barulhento', 'ignorante', 'pão', 'fraco', 'vidro', 'quarto', 'desordem', 'hall', 'manhã', 'conexão', + 'inocente', 'condenado', 'sugerir', 'filme', 'mínimo', 'curso', 'favorável', 'slot', 'registro', 'tocha', 'menor', 'laticínios', + 'obrigado', 'caneta', 'alocação', 'qualificado', 'irmã', 'torre', 'espírito', 'proteção', 'ver', 'transação', 'harmonia', + 'precedente'], + botban: { + title: 'Você está banido!', + description: '↳ Você foi banido de utilizar a `%z` por: `%r`\n> <:zu_info:911303533859590144> Você pode pedir uma apelação em nosso [servidor de suporte](https://discord.gg/pyyyJpw5QW).', + }, + customCommand: 'Comando criado com sucesso, use `/%n` para executar.', + alreadyExists: 'O comando já existe.', + ticket: { + sus: 'Sucesso!', + already: 'Desculpa, você já tem um ticket.', + await: 'Aguarde até que um dos atendentes te responda.', + created: 'Seu ticket foi criado.', + delete: 'Seu ticket foi encerrado e será apagado em 10 segundos.', + create: 'Para criar um ticket clique no botão abaixo.', + labels: { + delete: 'Fechar', + create: 'Abrir Ticket' + } + }, + logs: { + bulkDelete: 'Foram deletadas %n mensagens em #%c (%id).', + oldMessage: 'Mensagem Antiga:', + newMessage: 'Mensagem Nova:', + deleted: 'Mensagem Deletada:', + channel: 'Canal:', + url: 'Link:', + message: { + title: 'Logs de Mensagem' + }, + bans: { + title: 'Logs de Bans', + }, + user: 'Usuário:', + reason: 'Motivo:', + mod: 'Moderador:', + bani: 'Banido', + desbani: 'Desbanido', + jump: 'Ir para mensagem', + set: 'Canal setado para `%c`' + }, + aki: { + reg: 'pt', + q: 'Pergunta:', + r: 'Respostas:', + i: 'Iniciando o Akinator', + is: 'Esse é seu personagem?', + win: 'Ótimo! Acertei mais uma vez.', + nowin: 'Uh, você ganhou', + yay: 'Amei brincar com você!', + res: '[sim (**s**) / não (**n**)]' + }, + labels: { + recalc: 'Recalcular', + unban: 'Desbanir', + buy: 'Comprar', + load: 'Carregar' + }, + guess: { + start: 'O Jogo irá começar em **5 segundos** com um número entre `%min` e `%max`.', + started: 'Valendo!', + number: 'O Número escolhido foi `%num`, os usuários devem adivinhar ele para poder ganhar o evento.', + win: 'Você Acertou! O Número escolhido foi `%num`!' + }, + lockdown: { + pass: 'Para iniciar o lockdown envie `lock` no chat.\n> ⚠️ Caso queira cancelar envie qualquer outra coisa no chat.', + cancel: 'O Lockdown foi cancelado com sucesso.', + sucess: 'O Lockdown foi executado com sucesso.', + locking: 'O Lockdown está em andamento.', + noCanal: 'Nenhum canal foi fechado.' + }, + print: { + site: 'Print do website:' + }, + mention: { + hello: 'Olá %user!', + about: 'Sou uma bot multifuncional para o discord!', + help: 'Para saber meus comandos, digite **/help**.', + labels: { + support: 'Servidor de Suporte', + invite: 'Convite', + website: 'Website' + } + }, + reactionRole: { + invalidMessage: 'Não consegui encontrar mensagem com o id `%id%`', + sucess: 'ReactionRole criado com sucesso!' + }, + eventLog: { + fields: { + deletedMessage: 'Mensagem Deletada:', + oldMessage: 'Mensagem Antiga:', + newMessage: 'Mensagem Nova:' + }, + channel: 'Canal:' + }, + docs: { + args: 'Diga o que será pesquisado na documentação.' + }, + fnshop: { + args: 'Inclua o ID do canal que será enviado a loja do fortnite.', + channel: 'Não tenho permissão para enviar mensagens no canal citado.', + sucess: 'Canal setado com sucesso!' + }, + message: { + mod: 'Esse comando só pode ser usado por meus moderadores!', + P: 'Olá, humano!', + view: 'Eu não tenho permissão de ler o histórico de mensagens!', + the: 'O Comando', + unk: 'não existe ou não pode ser executado no momento!', + user: 'Você não tem todas as permissões necessárias para usar este comando!\nPermissões necessárias:', + bot: 'Eu não tenho todas as permissões necessárias para executar este comando! \n Permissões necessárias:', + dev: 'Apenas meus desenvolvedores podem usar este comando!', + c: 'Aguarde %t segundos para usar outro comando.', + e: 'Ops, ocorreu um erro!', + e2: 'Reporte este erro!', + e3: 'Provavelmente minha equipe ja sabe sobre este erro, mas que tal você ajudar? Você pode abrir um [issue](https://github.com/zulybot/zuly/issues) no [github](https://github.com/zulybot/zuly) ou então reportar em meu [servidor de suporte](https://discord.gg/pyyyJpw5QW), vamos fazer o discord um lugar melhor, juntos 🤝', + nsfw: 'Esse comando só pode ser usado em canais nsfw' + }, + host: { + db: 'Eu utilizo [MongoDB](https://mongodb.com) para meu banco de dados, hospedados em maquinas da <:zu_azure:880536844473880617> [Azure](https://azure.microsoft.com).', + vps: 'Eu sou hospedada na VPS, utilizando maquinas da [OVH](https://ovh.com), com sistema operacional <:zu_ubuntu:880496793740255253> Ubuntu.' + }, + giveaway: { + sec: 'segundos', + min: 'minutos', + hrs: 'horas', + day: 'dias', + term: 'Terminou ás', + host: 'Sorteio de: {user}', + win: 'ganhador(es)', + wins: 'Parabéns, {winners}! Você ganhou **{this.prize}**!\n{this.messageURL}', + react: 'Reaja com 🎁 para participar!', + restante: 'Tempo Restante:', + no: 'Sorteio cancelado, sem participações válidas', + give: 'SORTEIO', + giveend: 'SORTEIO ENCERRADO', + start: 'Você não usou o comando corretamente, utilize: `%pgiveaway-start [tempo(10s, 10m)] [ganhadores(1, 1w)] [prêmio(fotos de gatinhos)]`, não inclua **[]** ou **()**.', + end: 'Você não usou o comando corretamente, utilize: `%pgiveaway-end [id da mensagem]`', + reroll: 'Você não usou o comando corretamente, utilize: `%pgiveaway-reroll [id da mensagem]`', + novo: 'Novo ganhador(es): {winners}! Parabéns, vocês ganharam **{this.prize}**\n{this.messageURL}', + err: 'Sem participações válidas, nenhum(s) novo(s) vencedor(es) escolhidos!' + }, + help: { + title: 'Lista de Comandos • ', + creators: 'Eu fui desenvolvida por ', + description: '> Meu prefixo atual é: `%p`\n> Caso tenha alguma dúvida entre em meu servidor de suporte: [Clique Aqui](https://discord.gg/pyyyJpw5QW)\n> Me adicione clicando [aqui](https://discord.com/oauth2/authorize?client_id=880173509077266483&scope=bot&permissions=805432446)', + nsfw: 'Você precisa estar em um canal NSFW para ver os comandos nsfw. ' + }, + calc: { + ex: 'Estão faltando argumentos, utilize, `%pcalc `', + inv: 'Expressão invalida.', + res: 'Resultado' + }, + botinfo: { + texto: 'Olá, sou a **%bot**, um bot com funcionalidades únicas, que todo servidor precisa! Atualmente conheço **%u pessoas** diferentes que utilizam de minhas funcionalidades e estou em **%g servidores** diferentes.\n\nSou desenvolvida por `%devs` utilizando [Eris](https://abal.moe/Eris/) utilizando [Javascript](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript) & [NodeJS](https://nodejs.org/en/)', + recursos: 'Recursos:', + mem: 'esse servidor está usando %m da minha memória.', + }, + messages: { + tem: 'tem', + msg: 'mensagens', + title: 'Mensagens' + }, + together: { + channel: 'Você precisa estar em um canal de voz para executar este comando.', + done: 'Basta clicar no link e você será redirecionado para a atividade:', + done2: '**(só funciona no computador)**' + }, + erela: { + np: 'Tocando agora', + end: 'A música acabou, estou saindo', + skip: 'A música foi pulada com sucesso.', + not: 'Não estou tocando nada no servidor.', + voice: 'Fiquei sozinha no canal de voz, estou saindo!', + duration: 'Duração:', + loop: { + ativado: 'O Loop da música atual foi ativado.', + desativado: 'O Loop da música atual foi desativado.' + } + }, + play: { + nada: 'Estão faltando argumentos, utilize `%pplay `', + add: 'Adicionado a fila', + can: 'Você precisa estar em um canal de voz para ouvir música.' + }, + waifu: { + casar: 'Reaja com 💖 para se casar', + casou: 'Você se casou com %w', + dono: 'Dono', + utl: 'Utilize: %pwaifu-info [ID]', + casado: 'Você já casou recentemente, você pode casar a cada 2 horas', + noharem: 'Você não tem waifus, use `%pwaifu roll` para adicionar um.', + battle: 'Batalha de Waifus', + battleDesc: '**%u** está procurando um parceiro para um duelo de waifus, quem vai encarar?', + label: 'Eu!', + yms: 'Você não pode batalhar com você mesmo.', + bat: '%u, você irá batalhar com %2u, vocês tem 30 segundos para escolher uma waifu (jogador encontrado em `%t`).', + select: 'Nada Selecionado.' + }, + tradutor: { + lang: 'Você precisa especificar a linguagem, examplo: %translator **en** Oi', + text: 'Você precisa especificar o texto, examplo: %translator en **Oi** ' + }, + invite: { + add: 'Me Adicione ao seu servidor!', + desc: 'Yay, gostou de meus comandos? Ou de minhas funcionalidades? Me [adicione](https://discord.com/oauth2/authorize?client_id=%id&scope=bot%20applications.commands&permissions=805432446)\n\nPrecisa de ajuda ou algo do tipo? Entre em meu [servidor de suporte](https://discord.gg/pyyyJpw5QW), yay' + }, + ban: { + noarg: '**Mencione** algum usuário ou dê o **ID** do mesmo.', + vc: 'Você deseja mesmo punir', + r: '✅', + r2: '✅', + mot: 'Não Definido', + mot2: 'Punido por:', + mot3: 'Motivo:', + the: 'O Usuário', + foi: 'foi punido com sucesso.', + dev: 'Você não pode punir o desenvolvedor do bot.' + }, + clear: { + msg: 'mensagens** limpas com sucesso', + no: 'Insira a quantidade de mensagens a serem limpas', + p: 'Procurando mensagens, isso pode levar 30 segundos...', + num: 'Eu só consigo limpar entre 2 a 100 mensagens' + }, + baninfo: { + user: 'Usuário:', + reason: 'Motivo:', + noreason: 'Nenhum motivo definido.', + desban: 'Para desbanir reaja com 🐹.' + }, + multiLang: { + unknownLanguage: 'Idioma desconhecido.\n<:zu_info:880812942713573396> Idiomas disponíveis: %langs', + insertLang: 'Você não específicou um idioma. Para alterar o idioma do bot, utilize `%pidioma %langs`' + }, + autorole: { + insertRole: 'Você não especificou um cargo, utilize: `%pautorole <@cargo | cargo id | desativar>.`', + success: 'Certo, agora membros que entrarem no servidor terão o cargo `%cargo` adicionado automaticamente.', + disabled: 'Autorole foi desativado com sucesso.', + noset: 'Não Setado', + bot: 'Mencione o cargo que será dado quando algum BOT entrar no servidor.', + botset: 'O Autorole de bots foi setado para os cargos:', + user: 'Mencione o cargo que será dado quando algum usuário entrar no servidor.', + userset: 'O Autorole de usuários foi setado para os cargos:', + mem: 'Membros', + del: 'Desativar', + del2: 'Reaja com ❌ para desativar/deletar' + }, + userinfo: { + inf: 'Informações de:', + tag: 'Tag de:', + badges: 'Emblemas de:', + id: 'ID de:', + create: 'Conta criada dia:' + }, + slash: 'devido a alguns problemas de compatibilidade, mudei completamente para **Comandos Slash**, se os comandos não aparecerem, adicione-me novamente clicando aqui: [adicionar](https://zulybot.xyz/add), não é necessário remover o bot, caso os comandos ainda não foram atualizados em seu servidor, pode levar até uma hora para que sejam atualizados em todos os servidores, devido ao discord.', + avatar: { + title: 'Avatar de:', + download: 'Link para download:', + hex: 'Hex para usar em seu perfil:', + click: 'Clique Aqui' + }, + perfil: { + ngm: 'NINGUÉM', + desc: 'A Zuly é minha amiga, sabia que você pode alterar isso usando "%psobremim"?', + comp: 'Clique no **botão** para comprar', + succ: 'Background comprado com sucesso', + sep: 'Background setado com sucesso', + no: 'Você não tem dinheiro suficiente para comprar este background' + }, + filters: { + ativado: 'O Filtro %f foi ativado com sucesso.', + desativado: 'O Filtro %f foi desativado com sucesso.' + }, + economy: { + carteira: 'Carteira:', + banco: 'Banco:', + jacoletou: 'Você já coletou sua recompensa diária hoje! Tente novamente em:', + recebeu: 'Você recebeu:', + noarg: 'Estão faltando argumentos, utilize: `%presgatar .`', + resgatado: 'Você já resgatou esse código.', + nocode: 'Esse código não existe.', + sucesso: 'Você resgatou o promocode **%p** e ganhou **%v ryos** 🥳' + }, + sobre: { + nada: 'Preciso de algum argumento, utilize: `%psobremim `', + alt: 'Sobre alterado para: `%t`' + }, + nsfw: { + ativado: 'Sistema ativado com sucesso!', + desativado: 'Sistema desativado com sucesso!', + nonsfw: 'Não envie conteúdo NSFW fora de canais NSFW.' + } +}; diff --git a/src/Commands/Utils/AFKCommand.js b/src/Commands/Utils/AFKCommand.js new file mode 100644 index 00000000..f9801a29 --- /dev/null +++ b/src/Commands/Utils/AFKCommand.js @@ -0,0 +1,142 @@ +module.exports = class CalcCommand { + constructor () { + return { + permissoes: { + membro: [], + bot: ['EMBED_LINKS'], + dono: false + }, + pt: { + nome: 'afk', + categoria: '🕰️ » Utilidades', + desc: 'Veja o avatar de algum usuário.' + }, + en: { + nome: 'afk', + categoria: '🕰️ » Utility', + desc: 'See a user\'s avatar.' + }, + fr: { + nome: 'afk', + categoria: '🕰️ » Utilitaires', + desc: 'Voir l\'avatar d\'un utilisateur.' + }, + /* + SUB_COMMAND 1 = SubCommand + SUB_COMMAND_GROUP: 2 = SubCommandGroup + STRING: 3 = String + INTEGER: 4 = Any integer between -2^53 and 2^53 + BOOLEAN: 5 = True or False + USER: 6 = User Mention + CHANNEL: 7 = Includes all channel types + categories + ROLE: 8 = Role Mention + MENTIONABLE: 9 = Includes users and roles + NUMBER: 10 = Any double between -2^53 and 2^53 + */ + options: [ + { + type: 1, + name: 'set', + description: 'Set your AFK status.', + required: false, + name_localizations: { + 'pt-BR': 'set', + 'en-US': 'set', + 'fr': 'set' + }, + description_localizations: { + 'pt-BR': 'Set your AFK status.', + 'en-US': 'Set your AFK status.', + 'fr': 'Set your AFK status.' + }, + options: [ + { + type: 3, + name: 'status', + description: 'The status you want to set.', + required: true, + name_localizations: { + 'pt-BR': 'status', + 'en-US': 'status', + 'fr': 'status' + }, + description_localizations: { + 'pt-BR': 'The status you want to set.', + 'en-US': 'The status you want to set.', + 'fr': 'The status you want to set.' + } + } + ] + }, + { + type: 1, + name: 'remove', + description: 'Remove your AFK status.', + required: false, + name_localizations: { + 'pt-BR': 'remove', + 'en-US': 'remove', + 'fr': 'remove' + }, + description_localizations: { + 'pt-BR': 'Remove your AFK status.', + 'en-US': 'Remove your AFK status.', + 'fr': 'Remove your AFK status.' + }, + } + ], + aliases: ['av', 'user-avatar', 'ua', 'memberavatar', 'profileavatar'], + run: this.run + }; + } + + async run (ctx) { + if (ctx.args[0] === 'set') { + const afk = await global.zuly.db.get(`afk-${ctx.message.author.id}`); + if (afk) { + return ctx.message.channel.slashReply(ctx.idioma.afk.set.replace( + '{{user}}', + ctx.message.author.mention + ).replace( + '{{status}}', + afk.status + )); + } + else { + await global.zuly.db.set(`afk-${ctx.message.author.id}`, { + status: ctx.args[1], + time: parseInt(Date.now() / 1000) + }); + return ctx.message.channel.slashReply(ctx.idioma.afk.set.replace( + '{{user}}', + ctx.message.author.mention + ).replace( + '{{status}}', + ctx.args[1].replace(/`/g, '') + )); + } + } + else { + const afk = await global.zuly.db.get(`afk-${ctx.message.author.id}`); + if (afk) { + await global.zuly.db.delete(`afk-${ctx.message.author.id}`); + return ctx.message.channel.slashReply(ctx.idioma.afk.remove.replace( + '{{user}}', + ctx.message.author.mention + ).replace( + '{{status}}', + afk.status.replace(/`/g, '') + )); + } + else { + ctx.message.channel.slashReply(ctx.idioma.afk.remove.replace( + '{{user}}', + ctx.message.author.mention + ).replace( + '{{status}}', + afk.replace(/`/g, '') + )); + } + } + } +}; diff --git a/src/Events/guildMemberAdd.js b/src/Events/guildMemberAdd.js index ec29cc85..0c0be678 100644 --- a/src/Events/guildMemberAdd.js +++ b/src/Events/guildMemberAdd.js @@ -5,20 +5,17 @@ module.exports = class GuildMemberAddEvent { run: this.run }; } - async run (guild, member) { + async run (member) { try { - const autorolebot = await global.zuly.db.get(`autorolebot-${guild.id}`); - const autoroleuser = await global.zuly.db.get(`autoroleuser-${guild.id}`); - // dê os cargos aos membros - if (autorolebot) { - autorolebot.map((id) => { - member.addRole(id); - }); - } - else { - autoroleuser.map((id) => { - member.addRole(id); - }); + const autorolebot = await global.zuly.db.get(`autorolebot-${member.guild.id}`); + const autoroleuser = await global.zuly.db.get(`autoroleuser-${member.guild.id}`); + if (autorolebot || autoroleuser) { + if (member.user.bot) { + await member.roles.add(autorolebot, 'AutoRole [Bot] - Zuly'); + } + if (!member.user.bot) { + await member.roles.add(autoroleuser, 'AutoRole [User] - Zuly'); + } } } catch (e) { diff --git a/src/Events/messageCreate.js b/src/Events/messageCreate.js index e22a52a7..a4094946 100644 --- a/src/Events/messageCreate.js +++ b/src/Events/messageCreate.js @@ -21,6 +21,39 @@ module.exports = class MessageCreateEvent { lang = lang.replace(/-/g, '_'); idioma = idioma[lang]; + const wait = require('node:timers/promises').setTimeout; + + if (message.mentions.members.size) { + message.mentions.members.forEach(async (m) => { + const afk = await global.zuly.db.get(`afk-${m.id}`); + if (afk) { + return message.channel.send(idioma.afk.mention.replace( + '{{user}}', '**' + m.user.username + '**', + ).replace( + '{{time}}', + `` + ).replace( + '{{status}}', + afk.status + )).then(async (m) => { + await wait(3000); + m.delete(); + }); + } + }); + } + + const userAFK = await global.zuly.db.get(`afk-${message.author.id}`); + if (userAFK) { + return message.channel.send(idioma.afk.remove.replace( + '{{user}}', '**' + message.author.username + '**', + )).then(async (m) => { + await global.zuly.db.delete(`afk-${message.author.id}`); + await wait(3000); + m.delete(); + }); + } + const { get } = require('axios'); diff --git a/src/Locales/en-US.js b/src/Locales/en-US.js index 4e71478b..702e7be6 100644 --- a/src/Locales/en-US.js +++ b/src/Locales/en-US.js @@ -1,5 +1,10 @@ module.exports = { lang: 'en', + afk: { + set: ':zzz: {{user}} **|** You are afk, reason: `{{status}}', + remove: ':zzz: {{user}} **|** You are no longer afk', + mention: ':zzz: {{user}} **|** Went afk [{{time}}], reason: `{{status}}`.' + }, image: { editing: '✍️ %u **|** editing', args: '✍️ %u **|** I need you to give me some argument so I can edit', diff --git a/src/Locales/fr-FR.js b/src/Locales/fr-FR.js index 11edf595..9eb1bb7e 100644 --- a/src/Locales/fr-FR.js +++ b/src/Locales/fr-FR.js @@ -1,5 +1,10 @@ module.exports = { lang: 'fr', + afk: { + set: ':zzz : {{user}} **|** Vous êtes afk, raison : `{{status}}`', + remove: ':zzz : {{user}} **|** Vous n\'êtes plus afk.', + mention: ':zzz : {{utilisateur}}. **|** Vous êtes afk [{{time}}], raison : `{{status}}' + }, image: { editando: '✍️ %u **|** édition', args: '✍️ %u **|** J\'ai besoin que vous me donniez des arguments pour que je puisse éditer', diff --git a/src/Locales/pt-BR.js b/src/Locales/pt-BR.js index 55b31dda..33be033a 100644 --- a/src/Locales/pt-BR.js +++ b/src/Locales/pt-BR.js @@ -1,5 +1,10 @@ module.exports = { lang: 'pt', + afk: { + set: ':zzz: {{user}} **|** Você está afk, motivo: `{{status}}`.', + remove: ':zzz: {{user}} **|** Você não está mais afk.', + mention: ':zzz: {{user}} **|** Está afk [{{time}}], motivo: `{{status}}`.', + }, image: { editando: '✍️ %u **|** editando', args: '✍️ %u **|** Eu preciso que você me dê algum argumento para que eu possa editar', diff --git a/src/zuly.js b/src/zuly.js index c03a5e66..8741b2b1 100644 --- a/src/zuly.js +++ b/src/zuly.js @@ -9,7 +9,7 @@ const SnakeGame = require('./Helpers/SnakeGame'); // Creating the client const client = new Client({ restTimeOffset: 1, - shardCount: 2, + shardCount: 1, intents: [ 'GUILDS', 'GUILD_BANS',