diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index b36abb2..c64b0d6 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -31,6 +31,83 @@ A voz ecoou seu último suspiro. ## Sumário de Atualizações +
+ 1.1.3 - 31/03/2024 🍓 [STRAWBERRY RELEASE] + + +### Mural +- Atualização parcial, ou seja, haverá uma parte 2. +- Agora as atualizações da Íris, a menos que sejam imensas, serão postadas em partes, isso é devido a minha falta de tempo e colaboração quanto ao código. Infelizmente, não serei capaz de prover uma atualização completa mensalmente como feito na 1.1.1 e anteriores, mas ei, uma atualização ainda é melhor que nenhuma! + +### Novidades +1. **Bank** + - Finalmente a atualização que esperavamos, o banco, local onde seus ganhos estão protegidos de ladrões idiotas ~ por enquanto, eheheh! + - Há um cooldown de 30 minutos para cada ação, então cuidado ao usar! + +2. **Cheats** + - Agora você pode realizar cheats no PV com base na adição de valores a sua conta do banco! + +3. **Spy** + - Saiba quem tirou seu administrador, permitiu a entrada de membros no grupo ou deu administrador para alguém ao ativar esse sistema! + +4. **Ping** + - Remodelado e velocidade de leitura melhorada, agora o seu calculo é ainda mais exato e sua leitura de mensagens foi aprimorada ao extremo! + +5. **Events** + - Adiciona um sistema para eventos super rápidos que rodarão no inicio da Construct, ou seja, enquanto a Íris processa os dados, ela também estará na busca de eventos como os da melhoria 3 acima. + +6. **Status** + - Agora seus comandos também são identificados se você ativar a função e os enviar apartir dos Status, a pergunta é: Por que isso? + +7. **Messages** + - Adicionado um sistema avançado de localização de dados para tratamento correto das mensagens, adeus Baileys e suas mensagens bizarras! + +8. **Debug** + - A função de debug "/debugping" agora executa de forma isolada dos outros contéudos, sua velocidade aumentará, pois agora calcula do começo da construct e não do inicio de envio da mensagem. + +9. **Markdown** + - Algumas mensagens foram estilizadas com o novo sistema de markdown do WhatsApp! + +10. **Banner** + - Calma, não é do JoJo, mas é minha primeira tentativa de trazer um Banner, espero que eu melhore nisso com as próximas tentativas! + - Teremos Banners do JoJo ainda, mas tanto ele quanto eu estamos mais e mais ocupados a cada dia! + +11. **Locate** + - A função de localizar uma Object dentro de outras agora tem um sistema de filtro para ignorar nomes de Keys que você enviar. + - Suporte a achar Array's e Object's! + +12. **Tutoriais** + - Adicionado algumas informações para ajudar a saber sobre os requisitos minímos. + +### Correções +1. **Cheats** + - Agora a mensagem de cheats aparece na ordem correta quando usada por um dono no PV. + - Corrigido erro da mensagem de ajuda do cheats estar como 'N/A' em vez do termo correto. + +2. **Giveaway** + - Corrigido erro que fazia a compra de tickets do Giveaway estar ilimitada. + - Se você foi afetado severamente por isso, é recomendado que você delete o arquivo 'users.db', apague usando a Indexer com as funções SQL da Íris, limpe manualmente o SQL ou espere que uma função de limpeza seja construida. + +3. **Documentação** + - Corrigido alguns erros da envInfo. + - Também atualizado o node dos guias de Linux para a versão 20. + +4. **Ping** + - Alguns sistemas de cálculo de ping estavam com medições incertas. + +5. **Pairing Code** + - Percebi recentemente que o Baileys fez uma commit que corrigia a conexão por PIN a algum tempo, como a Íris usava um navegador customizado para conseguir isso, essa improvisação minha pode ter afetado e barrado a conexão de vocês desde essa correção do Baileys, me desculpem se for o caso. + +6. **Verifier** + - Ao fazer a checagem por SPAM, se retornado que houve, a checagem por URLs não aconteceria, o que liberava malfeitores de fazerem porcaria livremente durante esse periodo. + +7. **Outros** + - Perdão, mas perdi as notas novamente, não sei se houveram outras melhorias e correções, pois fiz tudo em cima da hora. + - Não foi por preguiça, o único momento livre que tive para programar foi essa semana ao ficar levemente doente e conseguir um atestado de descanso. + - Cuidados com a sáude são prioridade, no entanto, sempre que for possivel, estarei programando melhorias e postando no WhatsApp, Discord ou Telegram. + +
+
1.1.2 - 11/02/2024 + 26/02/2024 👾 [CADOU RELEASE] diff --git a/lib/Commands/Bank/.games jogos dono b/lib/Commands/Bank/.games jogos dono new file mode 100644 index 0000000..e69de29 diff --git a/lib/Commands/Bank/index.js b/lib/Commands/Bank/index.js new file mode 100644 index 0000000..62b9288 --- /dev/null +++ b/lib/Commands/Bank/index.js @@ -0,0 +1,385 @@ +/* Requires */ +const fs = require('fs'); +const path = require('path'); + +/* Importa módulos, ajuste o local conforme onde usar esse sistema */ +const Indexer = require('../../index'); +const language = require('../../Dialogues/index'); + +/* JSON's | Utilidades */ +let envInfo = JSON.parse(fs.readFileSync(`${__dirname}/utils.json`)); +const timeouts = { + bank: {}, + pay: {}, +}; + +/* Realiza funções de pós finalização */ +function postResults(response) { + /* Verifica se pode resetar a envInfo */ + if ( + envInfo.settings.finish.value === true + || (envInfo.settings.ender.value === true && envInfo.results.success === false) + ) { + /* setTimeout para poder retornar */ + setTimeout(() => { + /* Reseta a envInfo */ + envInfo.functions.revert.value(); + + /* Reseta conforme o tempo */ + }, envInfo.settings.wait.value); + } + + /* Retorna o resultado de uma função */ + return response; +} + +/* Insere o erro na envInfo */ +function echoError(error) { + /* Determina o erro */ + const myError = !(error instanceof Error) ? new Error(`Received a instance of "${typeof error}" in function 'messedup', expected an instance of "Error".`) : error; + + /* Determina o sucesso */ + envInfo.results.success = false; + + /* Determina a falha */ + envInfo.parameters.code.value = myError.code ?? '0'; + + /* Determina a mensagem de erro */ + envInfo.parameters.message.value = myError.message ?? 'The operation cannot be completed because an unexpected error occurred.'; + + /* Define se pode printar erros */ + if (envInfo.settings.error.value === true) { + /* Define se vai printar inteiro */ + const showError = config?.fullError?.value || true; + + /* Se pode printar o erro inteiro */ + if (showError) { + /* Só joga o erro na tela */ + console.error(error); + + /* Se não, formata e printa */ + } else console.log('\x1b[31m', `[${path.basename(__dirname)} #${envInfo.parameters.code.value || 0}] →`, `\x1b[33m${envInfo.parameters.message.value}`); + } + + /* Retorna o erro */ + return envInfo.results; +} + +/* Função que retorna todo o arquivo */ +function ambientDetails() { + /* Retorna a envInfo */ + return envInfo; +} + +/* Cria a função de comando */ +async function notSafeBank( + kill = envInfo.functions.exec.arguments.kill.value, + env = envInfo.functions.exec.arguments.env.value, +) { + /* Define um resultado padrão */ + envInfo.results.value = false; + + /* Define o sucesso */ + envInfo.results.success = false; + + /* Try-Catch para casos de erro */ + try { + /* Se recebeu tudo corretamente, se der ruim, não fará nada */ + if (typeof kill === 'object' && typeof env === 'object') { + /* Define os dados necessarios */ + const { + quoteThis, + chatId, + command, + isOwner, + prefix, + argl, + body, + leveling, + args, + bank, + isGroupMsg, + userFormated, + user, + mentionedJidList, + arks, + } = env.value; + + /* Define o alias na envInfo */ + envInfo.alias = env.value.alias; + + /* Se for dono, mas não grupo */ + if (!isGroupMsg) { + /* Manda a mensagem só de grupos */ + envInfo.results.value = await kill.sendMessage(chatId, { text: language(region, 'Extras', 'OnlyGroups', true, true, envInfo) }, { quoted: quoteThis }); + + /* Define o menu de ajuda */ + } else if (arks.includes('--help-dev') && isOwner === true) { + /* Manda a mensagem de ajuda de dev */ + envInfo.results.value = await kill.sendMessage(chatId, { text: language(region, 'Helper', 'Developer', true, true, envInfo) }, { quoted: quoteThis }); + + /* Menu de ajuda normal */ + } else if (arks.includes('--help') || args.length === 0) { + /* Manda a mensagem de ajuda normal */ + envInfo.results.value = await kill.sendMessage(chatId, { text: language(region, 'Helper', 'User', true, true, envInfo) }, { quoted: quoteThis }); + + /* Se for uso normal */ + } else { + /* Define o lugar da função */ + const cooldownAct = ['doar', 'pay', 'donate', 'payment'].includes(command) ? 'pay' : 'bank'; + + /* Define o chat atual na giveaway */ + timeouts[cooldownAct][user] = timeouts[cooldownAct][user] || 0; + + /* Verifica se já fez a ação, padrão de cooldown de 30 minutos */ + if (Date.now() >= timeouts[cooldownAct][user]) { + /* Define o local dos valores (eslint: max-len) */ + const payAllowed = envInfo.parameters.payAllowed.value; + const payLimit = envInfo.parameters.payLimit.value; + + /* Define a quem vai aplicar */ + let mentionPeople = mentionedJidList || []; + mentionPeople = mentionPeople[0] || user; + let mentionFormatted = mentionPeople.replace(/@s.whatsapp.net/gi, ''); + + /* Define quais vai adicionar apartir de usar reduce numa array de elementos */ + const newValues = payAllowed.reduce((accumulator, element) => { + /* Define uma RegExp para obter os valores na frente */ + const regex = new RegExp(`${element}\\s*(-?\\d+)`); + + /* Faz um match dos valores */ + const match = body.match(regex); + + /* Se encontrou algo */ + if (match) { + /* Define o valor inicial como o encontrado ou zero */ + const numericValue = parseInt(match[1], 10) || 0; + + /* Define as condições */ + const conditions = ( + /* Tirar do banco e tem valores lá pra isso */ + (!['doar', 'pay', 'donate', 'payment'].includes(command) + && numericValue <= bank[element.substring(1)] + && arks.includes('-get') + ) + + /* Pagar os outros ou por no banco, tem valor pra isso */ + || (numericValue <= leveling[element.substring(1)]) + ); + + /* Só obtém o que possuir */ + if (conditions) { + /* Se o valor for abaixo do limite, adiciona */ + if (numericValue >= -payLimit && numericValue <= payLimit) { + /* Adiciona na object do acumulador dos resultados */ + accumulator[element.substring(1)] = Math.abs(numericValue); + + /* Se não, adiciona o valor positivo máximo */ + } else accumulator[element.substring(1)] = Math.abs(payLimit); + + /* Se não possui, define como adicionar/tirar zero */ + } else accumulator[element.substring(1)] = 0; + } + + /* Retorna o resultado até terminar */ + return accumulator; + + /* Define a object do acumulador para retornar no reduce */ + }, {}); + + /* Define a Object de valores negativos para remoção eventual */ + const remValue = {}; + Object.keys(newValues).forEach((key) => { + /* Transforma os valores positivos em negativos inteiros */ + remValue[key] = -Math.abs(newValues[key]); + }); + + /* Verifica se tem algo para inserir, caso não tiver */ + if (Object.keys(newValues).length === 0) { + /* Envia uma mensagem de falha */ + envInfo.results.value = await kill.sendMessage(chatId, { text: language(region, 'Cases', 'Stranded', true, true, env.value) }, { quoted: quoteThis }); + + /* Verifica se todos os valores são zeros */ + } else if (Object.values(newValues).every((v) => v === 0)) { + /* Envia uma mensagem de valor insuficiente */ + envInfo.results.value = await kill.sendMessage(chatId, { + text: `${language(region, 'Typings', 'Need', true, true, { + item: Object.keys(newValues)[0], + need: '1 ~ 10000', + have: '0', + amount: '1 ~ 10000', + })}\n\n💡 Tip: ${prefix}Level`, + }, { quoted: quoteThis }); + + /* Caso sim e for donates */ + } else { + /* Define o tipo da mensagem */ + const functionType = ['doar', 'pay', 'donate', 'payment'].includes(command) ? 'PAYMENT RECEIPT' : 'BANK TRANSFER'; + + /* Define qual função fará */ + const functionName = functionType === 'PAYMENT RECEIPT' ? 'leveling' : 'bank'; + mentionPeople = functionName === 'bank' ? user : mentionPeople; + mentionFormatted = functionName === 'bank' ? userFormated : mentionFormatted; + + /* Se for uma ação de tirar do banco */ + if (arks.includes('-get') && functionName === 'bank') { + /* Adiciona os valores para quem está pagando */ + Indexer('sql').update('leveling', user, chatId, false, newValues); + + /* Remove os valores de quem pagou */ + Indexer('sql').update('bank', user, chatId, false, remValue); + + /* Se for outras funcoes, como por no banco ou pagar alguém */ + } else { + /* Adiciona os valores para quem está pagando */ + Indexer('sql').update(functionName, mentionPeople, chatId, false, newValues); + + /* Remove os valores de quem pagou */ + Indexer('sql').update('leveling', user, chatId, false, remValue); + } + + /* Define uma mensagem com os novos valores */ + let textData = `🔎 @${mentionFormatted} 🕵️\n\n︵‿︵‿୨♡୧‿︵‿︵\n\n➖ *${functionType}* ➕\n`; + + /* Faz a adicão automaticamente da mensagem */ + Object.keys(newValues).forEach((key) => { + /* Se o emoji existir apenas */ + if (envInfo.parameters.emojiData.value[key]) { + /* Adiciona a parte do valor */ + textData += `\n${envInfo.parameters.emojiData.value[key]} ${Indexer('strings').upperland(key, false).value}: ${newValues[key] > 0 ? '+' : '-'}${newValues[key]}`; + } + }); + + /* Parte final */ + textData += '\n\n︵‿︵‿୨♡୧‿︵‿︵'; + + /* Envia a mensagem */ + envInfo.results.value = await kill.sendMessage(chatId, { + text: textData, mentions: [user, mentionPeople], + }, { quoted: quoteThis }); + + /* Define um cooldown */ + timeouts[cooldownAct][user] = ( + Date.now() + Number(envInfo.parameters.waitTime.value) + ); + } + + /* Se for para checar quanto tempo resta para usar novamente */ + } else if (argl[0] === '-time' && timeouts[cooldownAct][user] !== 0) { + /* Envia a mensagem com o tempo restante */ + envInfo.results.value = await kill.sendMessage(chatId, { text: Indexer('number').format(timeouts[cooldownAct][user] - Date.now()).overall }, { quoted: quoteThis }); + + /* Se já fez a ação do momento */ + } else { + /* Envia a mensagem de espera com o tempo restante para poder usar */ + envInfo.results.value = await kill.sendMessage(chatId, { + text: language(region, 'Typings', 'Wait', true, true, { + resttime: Indexer('number').format(timeouts[cooldownAct][user] - Date.now()).overall, + }), + }, { quoted: quoteThis }); + } + } + } + + /* + Define o sucesso, se seu comando der erro isso jamais será chamado + Então o success automaticamente será false em falhas + */ + envInfo.results.success = true; + + /* Caso de algum erro */ + } catch (error) { + /* Insere tudo na envInfo */ + echoError(error); + + /* Avisa que deu erro, manda o erro e data ao sistema S.E.R (Send/Special Error Report) */ + await kill.sendMessage(env.value.chatId, { + text: language(region, 'S.E.R', error, true, true, { + command: 'BANK', + time: (new Date()).toLocaleString(), + }), + }, { quoted: env.value.quoteThis }); + } + + /* Retorna os resultados */ + return postResults(envInfo.results); +} + +/* Função que reseta tudo */ +function resetAmbient( + changeKey = {}, +) { + /* Reseta a Success */ + envInfo.results.success = false; + + /* Define o valor padrão */ + let exporting = { + reset: resetAmbient, + }; + + /* Try-Catch para casos de erro */ + try { + /* Define a envInfo padrão */ + envInfo = JSON.parse(fs.readFileSync(`${__dirname}/utils.json`)); + + /* Define se algum valor deve ser salvo */ + if (Object.keys(changeKey).length !== 0) { + /* Faz a listagem de keys */ + Object.keys(changeKey).forEach((key) => { + /* Edita se a key existir */ + if (Object.keys(envInfo).includes(key) && key !== 'developer') { + /* Edita a key customizada */ + envInfo[key] = changeKey[key]; + } + }); + } + + /* Insere a postResults na envInfo */ + envInfo.functions.poswork.value = postResults; + + /* Insere a ambient na envInfo */ + envInfo.functions.ambient.value = ambientDetails; + + /* Insere a error na envInfo */ + envInfo.functions.messedup.value = echoError; + + /* Insere a revert na envInfo */ + envInfo.functions.revert.value = resetAmbient; + + /* Insere a notSafeBank na envInfo */ + envInfo.functions.exec.value = notSafeBank; + + /* Define o local completo na envInfo para usar o reload novamente */ + envInfo.parameters.location.value = __filename; + + /* Gera a module exports */ + module.exports = { + [envInfo.name]: { + [envInfo.exports.env]: envInfo.functions.ambient.value, + [envInfo.exports.messedup]: envInfo.functions.messedup.value, + [envInfo.exports.poswork]: envInfo.functions.poswork.value, + [envInfo.exports.reset]: envInfo.functions.revert.value, + [envInfo.exports.exec]: envInfo.functions.exec.value, + }, + Developer: 'KillovSky', + Projects: 'https://github.com/KillovSky', + }; + + /* Determina sucesso */ + envInfo.results.success = true; + + /* Define o valor retornado */ + exporting = module.exports; + + /* Caso de algum erro */ + } catch (error) { + /* Insere tudo na envInfo */ + echoError(error); + } + + /* Retorna o exports */ + return exporting; +} + +/* Constrói a envInfo */ +resetAmbient(); diff --git a/lib/Commands/Bank/utils.json b/lib/Commands/Bank/utils.json new file mode 100644 index 0000000..6336868 --- /dev/null +++ b/lib/Commands/Bank/utils.json @@ -0,0 +1,189 @@ +{ + "name": "saves", + "description": "Realizar operações financeiras como bank, pagamentos e doações.", + "usage": { + "general": "[Prefix][Alias] [@user|-time] [-coin/-diamond/-gold/-iron/-rubi/-stone/-wood] [value]", + "examples": [ + "/Doar --help", + "/Pay @user -coin 1000 -wood -999", + "/Bank -get -coin 1000", + "/Save -wood 50", + "saves.execute('kill', 'params')", + "saves.env()", + "saves.reset()", + "saves.env().functions.execute.value('kill', 'params')" + ] + }, + "license": "MIT", + "helps": [ + "Caso a contagem de tempo se torne negativa, ou seja, você demore muito tempo para usar novamente, o uso do '-time' poderá estar incorreto, sendo que na verdade, seu uso já estará liberado.", + "Se você não marcar algúem enquanto estiver usando a função doar, ela será automaticamente transferida para a execução de uma transferência para sua própria conta bancária, tome cuidado.", + "Há um limite padrão de 10.000 (ou -10000) de doação, pagamentos ou operações de banco por uso, pois inserir valores maiores (ou menores negativos) pode causar problemas quando você possui valores elevados (ou absurdamente negativos) com você.", + "Apenas a primeira pessoa mencionada ganhará os valores doados ou pagos, outras pessoas serão ignoradas se mencionadas.", + "Você pode definir multiplos valores para o comando, como coin e wood, assim não precisa usar em um a um.", + "Note que ao chegar em determinado valor de level ou XP, você será reinicializado para o começo, pois conseguiu 'completar' o jogo." + ], + "exports": { + "env": "env", + "messedup": "messedup", + "exec": "execute", + "reset": "reset", + "poswork": "finish" + }, + "developer": "KillovSky", + "files": { + "index.js": "Sistema que faz a coleta das informações e envio.", + "utils.json": "Dados de fábrica da envInfo." + }, + "modules": { + "fs": "Leitura de diretórios e arquivos.", + "path": "Para inserção do local na envInfo.", + "../../Dialogues/index": "Funções que retornam os diálogos necessários.", + "../../index'": "Para rodar funções de outros arquivos." + }, + "functions": { + "ambient": { + "arguments": false, + "description": "Retorna as variáveis e sistemas do arquivo.", + "type": "Boolean / Function", + "value": false + }, + "messedup": { + "arguments": { + "error": { + "description": "Instância de erro para formatação.", + "type": "Boolean / Error", + "value": false + } + }, + "description": "Ajusta os valores de erro.", + "type": "Boolean / Function", + "value": false + }, + "exec": { + "arguments": { + "kill": { + "description": "Funções de controle raiz da Íris.", + "type": "Boolean / Object", + "value": false + }, + "env": { + "description": "Dados da mensagem recebida.", + "type": "Boolean / Object", + "value": false + } + }, + "description": "Executa o comando representado nesse arquivo.", + "type": "Boolean / Function", + "value": false + }, + "poswork": { + "arguments": { + "response": { + "description": "Resultados de uma função.", + "type": "Any", + "value": false + } + }, + "description": "Verifica se pode resetar a envInfo e retorna o resultado da função.", + "type": "Boolean / Function", + "value": false + }, + "revert": { + "arguments": { + "changeKey": { + "description": "Uma Object com valores que existem na envInfo, ela será usada para substituir o sistema em tempo real.", + "type": "Object value", + "anyValue": false + } + }, + "description": "Reseta a envInfo para a Object padrão.", + "type": "Boolean / Function", + "value": false + } + }, + "settings": { + "wait": { + "description": "Tempo em MS que deve esperar antes de resetar.", + "type": "Number", + "value": 5000 + }, + "error": { + "description": "Define se pode printar qualquer erro.", + "type": "Boolean", + "value": true + }, + "ender": { + "description": "Define se deve resetar a cada erro.", + "type": "Boolean", + "value": true + }, + "finish": { + "description": "Define se deve resetar a cada finalização.", + "type": "Boolean", + "value": true + } + }, + "parameters": { + "location": { + "description": "Local onde o módulo pode ser encontrado.", + "type": "Boolean / String", + "value": "./index" + }, + "code": { + "description": "Código do erro que obter.", + "type": "Boolean / String / Number", + "value": false + }, + "message": { + "description": "Armazena a mensagem do último erro recebido.", + "type": "Boolean / String", + "value": false + }, + "waitTime": { + "description": "Tempo que deve aguardar para poder usar novamente as funções, milissegundos.", + "type": "Number", + "value": 1800000 + }, + "emojiData": { + "description": "Define os emojis de cada valor possivel.", + "type": "Object", + "value": { + "coin": "💰", + "diamond": "💎", + "rubi": "🔴", + "stone": "🪨", + "gold": "🏆", + "iron": "🪙", + "wood": "🌲", + "xp": "📈", + "level": "🎚️", + "messages": "📬" + } + }, + "payLimit": { + "description": "Define o limite de doação ou bank das funções, note que valores muito altos podem levar a 'Infinity' ou 'Heap Out of Memory', cuidado.", + "type": "Number", + "value": 10000 + }, + "payAllowed": { + "description": "Define quais keys estão permitidas para doar, é necessário inserir '-' antes, pois isso é diretamente relacionado á variável 'body' no código.", + "type": "Array", + "value": [ + "-coin", + "-diamond", + "-gold", + "-iron", + "-rubi", + "-stone", + "-wood" + ] + } + }, + "results": { + "description": "Resultado final da função.", + "success": true, + "type": "String / Boolean", + "value": false + } +} \ No newline at end of file diff --git a/lib/Commands/Cheats/index.js b/lib/Commands/Cheats/index.js index ce685b0..6717da8 100644 --- a/lib/Commands/Cheats/index.js +++ b/lib/Commands/Cheats/index.js @@ -90,6 +90,7 @@ async function doNotCheat( body, isGroupMsg, user, + args, mentionedJidList, arks, } = env.value; @@ -97,23 +98,23 @@ async function doNotCheat( /* Define o alias na envInfo */ envInfo.alias = env.value.alias; - /* Se não for dono */ - if (!isOwner) { - /* Manda a mensagem de restrito */ - envInfo.results.value = await kill.sendMessage(chatId, { text: language(region, 'Helper', 'Unauthorized', true, true, envInfo) }, { quoted: quoteThis }); - - /* Se for dono, mas não grupo */ - } else if (!isGroupMsg) { + /* Se for dono, mas não grupo */ + if (!isGroupMsg && !arks.includes('--bank')) { /* Manda a mensagem só de grupos */ envInfo.results.value = await kill.sendMessage(chatId, { text: language(region, 'Extras', 'OnlyGroups', true, true, envInfo) }, { quoted: quoteThis }); + /* Se não for dono */ + } else if (!isOwner) { + /* Manda a mensagem de restrito */ + envInfo.results.value = await kill.sendMessage(chatId, { text: language(region, 'Helper', 'Unauthorized', true, true, envInfo) }, { quoted: quoteThis }); + /* Define o menu de ajuda */ } else if (arks.includes('--help-dev') && isOwner === true) { /* Manda a mensagem de ajuda de dev */ envInfo.results.value = await kill.sendMessage(chatId, { text: language(region, 'Helper', 'Developer', true, true, envInfo) }, { quoted: quoteThis }); /* Menu de ajuda normal */ - } else if (arks.includes('--help')) { + } else if (arks.includes('--help') || args.length === 0) { /* Manda a mensagem de ajuda normal */ envInfo.results.value = await kill.sendMessage(chatId, { text: language(region, 'Helper', 'User', true, true, envInfo) }, { quoted: quoteThis }); @@ -124,6 +125,7 @@ async function doNotCheat( const cheatLimit = envInfo.parameters.cheatLimit.value; let mentionPeople = mentionedJidList || []; let mentionFormatted = mentionPeople.map((fix) => fix.replace(/@s.whatsapp.net/gi, '')); + const placeDeposit = arks.includes('--bank') ? 'bank' : 'leveling'; /* Verifica se não contém apenas o user */ if (mentionPeople.length > 1 && !arks.includes('-me')) { @@ -171,14 +173,22 @@ async function doNotCheat( || Object.keys(newValues).length === 0 ) { /* Envia uma mensagem de falha */ - envInfo.results.value = await kill.sendMessage(chatId, { text: language(region, 'Cases', 'Stranded', true, true, envInfo) }, { quoted: quoteThis }); + envInfo.results.value = await kill.sendMessage(chatId, { text: language(region, 'Cases', 'Stranded', true, true, env.value) }, { quoted: quoteThis }); /* Caso sim */ } else { + /* Se for uma adição ao banco */ + if (placeDeposit === 'bank') { + /* Retira a key XP, level e messages para evitar bugs */ + delete newValues.xp; + delete newValues.level; + delete newValues.messages; + } + /* Faz a adição para todos os mencionados */ for (let i = 0; i < mentionPeople.length; i += 1) { /* Adiciona os valores */ - Indexer('sql').update('leveling', mentionPeople[i], chatId, false, newValues); + Indexer('sql').update(placeDeposit, mentionPeople[i], chatId, false, newValues); } /* Define uma mensagem com os novos valores */ diff --git a/lib/Commands/Cheats/utils.json b/lib/Commands/Cheats/utils.json index 775a232..ed67709 100644 --- a/lib/Commands/Cheats/utils.json +++ b/lib/Commands/Cheats/utils.json @@ -1,12 +1,13 @@ { "name": "tricks", - "description": "Realizar trapaças para jogadores na database", + "description": "Realizar trapaças para jogadores na database.", "usage": { - "general": "[Prefix][Alias] [-me, @user, @user2...] [-xp/-coin/-diamond/-gold/-iron/-rubi/-stone/-wood] [value/-value]", + "general": "[Prefix][Alias] [--bank] [-me, @user, @user2...] [-xp/-coin/-diamond/-gold/-iron/-rubi/-stone/-wood] [value/-value]", "examples": [ "/Cheats --help", "/Cheats @user -type value", "/Cheats @user @user2 -coin 1000 -xp 9999 -wood -999", + "/Cheats -me --bank -coin 1000 -wood -999", "tricks.execute('kill', 'params')", "tricks.env()", "tricks.reset()", diff --git a/lib/Commands/Convert/utils.json b/lib/Commands/Convert/utils.json index de02788..30d3c3d 100644 --- a/lib/Commands/Convert/utils.json +++ b/lib/Commands/Convert/utils.json @@ -1,6 +1,6 @@ { "name": "convert", - "description": "Realizar a conversão de arquivos webp para PNG, GIF ou MP4", + "description": "Realizar a conversão de arquivos webp para PNG, GIF ou MP4.", "usage": { "general": "[Prefix][Alias] [--metadata/--fps/--time] [valor]", "examples": [ diff --git a/lib/Commands/Default/Cache/Banner.png b/lib/Commands/Default/Cache/Banner.png index b0946e9..1f209aa 100644 Binary files a/lib/Commands/Default/Cache/Banner.png and b/lib/Commands/Default/Cache/Banner.png differ diff --git a/lib/Commands/Giveaway/index.js b/lib/Commands/Giveaway/index.js index 62efe69..e67945d 100644 --- a/lib/Commands/Giveaway/index.js +++ b/lib/Commands/Giveaway/index.js @@ -188,7 +188,7 @@ async function myFunction( /* Se existir na loteria já */ if (Object.keys(giveaways[chatId]).includes(user)) { /* Adiciona o valor dos tickets já existentes */ - ticketsCoins += giveaways[chatId][user].tickets; + ticketsCoins += giveaways[chatId][user].coins; } /* Verifica se tem o dinheiro */ diff --git a/lib/Commands/Handlers/index.js b/lib/Commands/Handlers/index.js index f4bd68a..c8b0dc2 100644 --- a/lib/Commands/Handlers/index.js +++ b/lib/Commands/Handlers/index.js @@ -234,7 +234,7 @@ async function functionsEditor( /* Se for String */ } else if (typeof theCode === 'string') { /* if para definir os diferentes tipos de comando */ - if (['vips', 'mods', 'blacklist', 'prefix', 'whitelist', 'antifake'].includes(type) && argl[0] !== '-text' && !['antilinks', 'level', 'nsfw', 'antispam'].includes(type)) { + if (['vips', 'mods', 'blacklist', 'prefix', 'whitelist', 'antifake'].includes(type) && argl[0] !== '-text' && !['antilinks', 'level', 'nsfw', 'antispam', 'spy'].includes(type)) { /* Define os novos valores */ const standardValues = type === 'prefix' ? [...new Set([argl[1]])] : [...new Set([argl[1], ...mentionedJidListFormated])].flat(5); let newCodeValues = [...new Set([...functions[type].values, ...standardValues])].flat(5); @@ -268,7 +268,7 @@ async function functionsEditor( } /* Sistemas de texto */ - } else if (['goodbye', 'promote', 'demote', 'welcome', 'blacklist', 'antifake', 'language'].includes(type) && argl[0] === '-text' && !['antilinks', 'level', 'nsfw', 'antispam'].includes(type)) { + } else if (['goodbye', 'promote', 'demote', 'welcome', 'blacklist', 'antifake', 'language'].includes(type) && argl[0] === '-text' && !['antilinks', 'level', 'nsfw', 'antispam', 'spy'].includes(type)) { /* Define uma RegExp */ const regExpCmd = [new RegExp(command, 'gi'), new RegExp(`${prefix}${command}`, 'gi')]; diff --git a/lib/Commands/Handlers/utils.json b/lib/Commands/Handlers/utils.json index 0fc82a3..5a82059 100644 --- a/lib/Commands/Handlers/utils.json +++ b/lib/Commands/Handlers/utils.json @@ -18,7 +18,7 @@ "/Goodbye -text -add {userm} saiu de {groupm}!", "/Antifake -add 55", "/Whitelist -add 551199876543210", - "/Language -add pt", + "/Language -text -add pt", "toggle.execute('kill', 'params')", "toggle.env()", "toggle.reset()", @@ -27,6 +27,8 @@ }, "license": "MIT", "helps": [ + "Alguns sistemas podem exigir que você insira tanto o '-text' como '-add', siga os exemplos atentamente, eventualmente você pegará o jeito!", + "O sistema spy permite saber quem demitiu um administrador ou qual administrador contratou outro administrador, evite sua ativação se planeja fazer demissões ou contratações em massa.", "O antispam deve conter o uso de '-set' para a configuração após ativar, o mesmo ocorre no antilinks.", "Se desejar inserir o nome do grupo, marcar o usuário nas mensagens ou enviar a descrição do grupo, basta inserir váriaveis, como '{userm}', '{groupm}' e '{desc}' nas suas mensagens customizadas.", "Existem diversas outras váriaveis, mas a maioria das funções é ultrasecreta, inútil ou somente o dono saberá como as usar, então elas se manterão em segredo, quem sabe você as descobre acidentalmente...", diff --git a/lib/Commands/Main/Construct/index.js b/lib/Commands/Main/Construct/index.js index ea2abef..f75288a 100644 --- a/lib/Commands/Main/Construct/index.js +++ b/lib/Commands/Main/Construct/index.js @@ -16,6 +16,7 @@ const commands = JSON.parse(fs.readFileSync('./lib/Databases/Configurations/defi const levelSettings = JSON.parse(fs.readFileSync('./lib/Databases/Configurations/leveling.json')); let arrayOfCommands = JSON.parse(Indexer('bash').bash(`bash "${irisPath}/lib/Scripts/Menu.sh" "array"`).value); const oldLanguage = region; +let conditions = false; /* Insere todos os comandos na arrayOfCommands */ arrayOfCommands = [...arrayOfCommands, Object.values(envInfo.parameters.alias.value).flat(5)].flat(5); @@ -93,6 +94,7 @@ async function dataCollect( /* Define a Object padrão */ let messageData = { actualMoment: Date.now(), + readDate: (message.currentTimeDate / 1000).toFixed(0), levelSettings, allCommands: arrayOfCommands, }; @@ -102,63 +104,47 @@ async function dataCollect( /* Determina se algum parâmetro veio errado */ if (typeof kill === 'object' && typeof message === 'object') { /* Define a mensagem a marcar */ - [messageData.quoteThis] = [message.messages[0]]; + [messageData.quoteThis] = [message?.messages[0] || {}]; - /* Impede de continuar se a mensagem estiver com problema */ - /* Para o lucas do futuro: Append será responsavel por fazer ter novas funções */ - if (!typeof messageData.quoteThis?.message === 'object' || messageData.quoteThis?.message == null || messageData.quoteThis == null || (message.type === 'append' && Object.keys(messageData.quoteThis.message).every((ms) => !ms.includes('Message')))) return postResults(envInfo.results); + /* Define as condições iniciais */ + conditions = ( + /* Se a mensagem não for uma Object (possivel evento) */ + !typeof messageData.quoteThis?.message === 'object' + + /* Se não tiver mensagem (possivel evento) */ + || messageData.quoteThis?.message == null + + /* Se for um evento e não tiver indicador de mensagem */ + || (message.type === 'append' && Object.keys(messageData.quoteThis.message).every((ms) => !ms.includes('Message'))) + ); + + /* Impede de continuar se a mensagem estiver com problema | Permite se for evento, impede se der problema no começo */ + if ((conditions && config.allowEvents.value === false) || messageData.quoteThis == null) return postResults(envInfo.results); + + /* Define uma Object de mensagem pra não matar o sistema */ + messageData.quoteThis.message = messageData?.quoteThis?.message || {}; /* Se tiver ephemeralMessage ou viewOnce */ if (Object.keys(messageData?.quoteThis?.message).includes('ephemeralMessage') || Object.keys(messageData?.quoteThis?.message).includes('viewOnceMessage') || Object.keys(messageData?.quoteThis?.message).includes('viewOnceMessageV2')) { /* Define um backup da mensagem para uso externo */ - messageData.quoteThis.backupMessage = message.messages[0].message; + messageData.quoteThis.backupMessage = message?.messages[0].message; /* Define a mensagem ephemeral na object message */ - messageData.quoteThis.message = messageData.quoteThis.message.ephemeralMessage?.message || messageData.quoteThis.message.viewOnceMessage?.message || messageData.quoteThis.message.viewOnceMessageV2?.message || messageData.quoteThis.message.viewOnceMessage?.message || messageData.quoteThis.message.viewOnceMessageV2 || messageData.quoteThis.message.ephemeralMessage; + messageData.quoteThis.message = messageData.quoteThis.message?.ephemeralMessage?.message || messageData.quoteThis.message?.viewOnceMessage?.message || messageData.quoteThis.message?.viewOnceMessageV2?.message || messageData.quoteThis.message?.viewOnceMessage?.message || messageData.quoteThis.message?.viewOnceMessageV2 || messageData.quoteThis.message?.ephemeralMessage; } /* Define a medição de tempo */ messageData.timestamp = messageData.quoteThis.messageTimestamp || Date.now(); /* Define o Ping avançado */ - messageData.pingTime = Indexer('number').format((messageData.actualMoment) - (messageData.timestamp * 1000)).overall; + messageData.pingTime = Indexer('number').format(messageData.readDate - messageData.timestamp).overall; /* Define o Ping */ - messageData.procTime = Math.abs(new Date().getTime() - new Date(messageData.timestamp * 1000).getTime()) / 1000; - - /* Caso o tempo esteja como apenas 0 */ - if (messageData.procTime < 0) { - /* Define a velocidade mais aceitável */ - messageData.procTime = '0.001-'; - } - /* Velocidade de recebimento pode ser bem menor do que 0.001, mas defini como 'aceitável', no mínimo */ - - /* Define a mensagem para tratar */ - let keysIndex = Object.keys(messageData.quoteThis.message).filter((f) => f !== 'senderKeyDistributionMessage' && f !== 'messageContextInfo'); - keysIndex[0] = keysIndex[0] || 'conversation'; - let recMessage = messageData.quoteThis.message[keysIndex[0]]; - - /* Reorganiza a recMessage se precisar */ - keysIndex = Object.keys(recMessage).filter((f) => f !== 'senderKeyDistributionMessage' && f !== 'messageContextInfo'); - keysIndex[0] = keysIndex[0] || 'conversation'; - - /* Geralmente seria message, mas inseri como index, caso tenha um tipo espefico em mãos */ - recMessage = recMessage?.message ? recMessage?.message[keysIndex[0]] : recMessage; - - /* Se for mensagem editada */ - messageData.quoteThis = recMessage?.editedMessage ? recMessage : messageData.quoteThis; + messageData.procTime = Indexer('number').format(messageData.readDate - messageData.timestamp).seconds; /* Define se é editada */ - const editedMessage = !!messageData.quoteThis?.editedMessage; - - /* Se for edição de mensagem */ - if (recMessage?.editedMessage) { - /* Ajusta a editedMessage para message apenas */ - recMessage.message = recMessage?.editedMessage; - - /* Se for só texto */ - recMessage = recMessage?.message.conversation ? recMessage?.message.conversation : recMessage; - } + messageData.editedMessageObj = Indexer('others').findkey(messageData.quoteThis, ['editedMessage'], ['object'], ['contextInfo', 'quotedMessage']).value; + messageData.editedMessage = !!messageData?.editedMessageObj; /* Define a key da mensagem */ const chatMessage = messageData.quoteThis.key; @@ -169,8 +155,32 @@ async function dataCollect( isViewOnce = isViewOnce ? isViewOnce[Object.keys(isViewOnce)[0]] : isViewOnce; messageData.isViewOnce = isViewOnce; - /* Define se deve ignorar as mensagens da Íris, editadas, broadcast e reações */ - if (((chatMessage?.fromMe && config.botCommands.value === false)) || editedMessage || (Object.keys(messageData.quoteThis?.message).includes('pollUpdate') && config.listenPolls.value === false) || (messageData.quoteThis.broadcast === true && config.listenBroadcasts.value === false) || (Object.keys(messageData.quoteThis?.message).includes('reactionMessage') && config.listenReactions.value === false)) { + /* Roda o sistema de eventos */ + const eventRunner = await Indexer('events').execute(kill, messageData.quoteThis); + + /* Define as condições */ + conditions = ( + /* Mensagem de si mesmo, mas não permitido pelo dono */ + (chatMessage?.fromMe && config.botCommands.value === false) + + /* Mensagens editadas */ + || messageData.editedMessage + + /* Atualizações de enquetes */ + || (Object.keys(messageData.quoteThis?.message).includes('pollUpdate') && config.listenPolls.value === false) + + /* Transmissões */ + || (messageData.quoteThis.broadcast === true && config.listenBroadcasts.value === false) + + /* Reações em mensagens */ + || (Object.keys(messageData.quoteThis?.message).includes('reactionMessage') && config.listenReactions.value === false) + + /* Se o evento mandar parar */ + || eventRunner.value === 'STOP' + ); + + /* Define se deve ignorar o processamento das mensagens da Íris, editadas, broadcast e reações como mensagens normais */ + if (conditions) { /* Define soft error */ envInfo.results.success = 'DONTRUNTHIS'; envInfo.results.value = {}; @@ -179,6 +189,17 @@ async function dataCollect( return envInfo.results; } + /* Busca avançada de object para localizar a perfeita, faz isso em 4 niveis de busca */ + const messageKeys = ['audioMessage', 'bcallMessage', 'botInvokeMessage', 'buttonsMessage', 'buttonsResponseMessage', 'contactMessage', 'conversation', 'contactsArrayMessage', 'documentMessage', 'documentWithCaptionMessage', 'editedMessage', 'ephemeralMessage', 'extendedTextMessage', 'groupInviteMessage', 'groupMentionedMessage', 'imageMessage', 'interactiveMessage', 'interactiveResponseMessage', 'invoiceMessage', 'listMessage', 'listResponseMessage', 'liveLocationMessage', 'locationMessage', 'lottieStickerMessage', 'messageHistoryBundle', 'newsletterAdminInviteMessage', 'orderMessage', 'pollCreationMessage', 'pollCreationMessageV2', 'pollCreationMessageV3', 'pollUpdateMessage', 'productMessage', 'protocolMessage', 'ptvMessage', 'reactionMessage', 'requestPaymentMessage', 'scheduledCallCreationMessage', 'scheduledCallEditMessage', 'sendPaymentMessage', 'senderKeyDistributionMessage', 'stickerMessage', 'templateButtonReplyMessage', 'templateMessage', 'videoMessage', 'viewOnceMessage', 'viewOnceMessageV2', 'viewOnceMessageV2Extension']; + let recMessage = messageData?.quoteThis; + recMessage = Indexer('others').findkey(recMessage, messageKeys, ['object', 'string'], ['contextInfo', 'quotedMessage']).value || recMessage; + recMessage = Indexer('others').findkey(recMessage, messageKeys, ['object', 'string'], ['contextInfo', 'quotedMessage']).value || recMessage; + recMessage = Indexer('others').findkey(recMessage, messageKeys, ['object', 'string'], ['contextInfo', 'quotedMessage']).value || recMessage; + recMessage = Indexer('others').findkey(recMessage, messageKeys, ['object', 'string'], ['contextInfo', 'quotedMessage']).value || recMessage; + + /* Se for mensagem editada */ + messageData.quoteThis = messageData.editedMessage ? recMessage : messageData.quoteThis; + /* Por mais que eu não goste disso, o try-catch aqui é essencial para lidar com mensagens bugadas que o Baileys envia, como a futureProofMessage (???) */ try { /* Define o peso se não tiver */ @@ -207,7 +228,7 @@ async function dataCollect( messageData.encryptMedia = recMessage; /* Define a marcação de mensagem */ - messageData.quotedMsg = recMessage?.contextInfo || {}; + messageData.quotedMsg = Indexer('others').findkey(recMessage, ['contextInfo'], ['object'], []).value || {}; messageData.isQuotedMsg = Object.keys(messageData.quotedMsg).length > 1; /* Define a marcação de mensagem com objeto e se é viewOnce */ @@ -234,8 +255,11 @@ async function dataCollect( /* Define o tempo formatado */ messageData.time = new Date(messageData.timestamp * 1000).toLocaleString(); + /* Define o tempo de execução de debug */ + messageData.debugExec = Indexer('number').format((Date.now() / 1000) - messageData.readDate).seconds; + /* Comando debug */ - if (recMessage?.caption === '/debugping' || recMessage === '/debugping' || recMessage?.text === '/debugping') return await kill.sendMessage(chatMessage.remoteJid, { text: `DEBUG: ${messageData.procTime} segundos` }, { quoted: messageData.quoteThis }); + if (recMessage?.caption === '/debugping' || recMessage === '/debugping' || recMessage?.text === '/debugping') return await kill.sendMessage((chatMessage?.remoteJid || chatMessage?.participant), { text: `Debug (Read): ${messageData.procTime}s\nDebug (Exec): ${messageData.debugExec.toFixed(6)}s` }, { quoted: messageData.quoteThis }); /* --------------------- Mensagem --------------------------- */ @@ -263,10 +287,14 @@ async function dataCollect( /* Determina a ID do Chat */ messageData.chatId = chatMessage?.remoteJid || messageData.user || ''; + messageData.chatId = messageData.chatId === 'status@broadcast' ? messageData.user : messageData.chatId; /* Determina se é um grupo */ messageData.isGroup = messageData.chatId.includes('@g.us') || false; + /* Redefine o nome do grupo se for PV */ + messageData.name = messageData.isGroup ? messageData.name : 'PV'; + /* Determina se é uma mensagem em grupo */ messageData.isGroupMsg = messageData.isGroup; @@ -362,8 +390,8 @@ async function dataCollect( /* --------------------- Body --------------------------- */ /* Determina o texto, a array esta organizada de forma a obter na ordem dela, se achar a caption não vai buscar text e outros */ - const bodyKeys = ['caption', 'conversation', 'text', 'selectedId', 'selectedRowId', 'selectedButtonId', 'matchedText', 'displayName', 'title', 'fileName']; - messageData.body = Indexer('others').findkey(recMessage, bodyKeys, ['string', 'number']).value || Indexer('others').findkey(messageData.quoteThis, bodyKeys, ['string', 'number']).value || Indexer('others').findkey(message?.messages[0], bodyKeys, ['string', 'number']).value || ''; + const bodyKeys = ['caption', 'conversation', 'text', 'selectedId', 'selectedRowId', 'selectedButtonId', 'matchedText', 'displayName', 'title', 'fileName', 'selectedDisplayText', 'note', 'body', 'description']; + messageData.body = Indexer('others').findkey(recMessage, bodyKeys, ['string', 'number'], ['contextInfo', 'quotedMessage']).value || Indexer('others').findkey(messageData.quoteThis, bodyKeys, ['string', 'number'], ['contextInfo', 'quotedMessage']).value || Indexer('others').findkey(message?.messages[0], bodyKeys, ['string', 'number'], ['contextInfo', 'quotedMessage']).value || ''; messageData.body = messageData.typeFormatted === 'sticker' || (messageData.isMedia && !recMessage?.caption) ? '' : messageData.body; messageData.body = (messageData.isCmd && messageData.isQuotedMsg) || !messageData.isQuotedMsg || !messageData.isCmd ? messageData.body : ''; @@ -447,10 +475,10 @@ async function dataCollect( /* --------------------- ADMS/Donos/Membros --------------------------- */ /* Faz a busca automatica por menções */ - const mentionFinder = Indexer('others').findkey(recMessage, ['mentionedJid'], ['array', 'object']); + const mentionFinder = Indexer('others').findkey(recMessage, ['mentionedJid'], ['array', 'object'], ['contextInfo', 'quotedMessage']); /* Define as menções */ - messageData.mentionedJidList = recMessage?.contextInfo?.mentionedJid || []; + messageData.mentionedJidList = Indexer('others').findkey(recMessage, ['mentionedJid'], ['object', 'array'], ['contextInfo', 'quotedMessage']).value || []; messageData.mentionedJidList.push(messageData.quotedMsg?.participant || messageData.user); /* Insere o autor da mensagem também */ @@ -649,16 +677,16 @@ async function dataCollect( /* Definições para os sistemas de segurança, já usadas acima em outras formas */ messageData.oldbody = message?.messages[0].message?.conversation || ''; - messageData.content = recMessage?.content || ''; - messageData.caption = recMessage?.caption || ''; - messageData.comment = recMessage?.comment || ''; - messageData.filename = recMessage?.filename || ''; - messageData.matchedText = recMessage?.matchedText || ''; + messageData.content = Indexer('others').findkey(recMessage, ['content'], ['string'], ['contextInfo', 'quotedMessage']).value || ''; + messageData.caption = Indexer('others').findkey(recMessage, ['caption'], ['string'], ['contextInfo', 'quotedMessage']).value || ''; + messageData.comment = Indexer('others').findkey(recMessage, ['comment'], ['string'], ['contextInfo', 'quotedMessage']).value || ''; + messageData.filename = Indexer('others').findkey(recMessage, ['filename'], ['string'], ['contextInfo', 'quotedMessage']).value || ''; + messageData.matchedText = Indexer('others').findkey(recMessage, ['matchedText'], ['string'], ['contextInfo', 'quotedMessage']).value || ''; + messageData.text = Indexer('others').findkey(recMessage, ['text'], ['string'], ['contextInfo', 'quotedMessage']).value || ''; + messageData.descriptionT = Indexer('others').findkey(recMessage, ['description'], ['string'], ['contextInfo', 'quotedMessage']).value || ''; + messageData.titleT = Indexer('others').findkey(recMessage, ['title'], ['string'], ['contextInfo', 'quotedMessage']).value || ''; messageData.pollName = messageData.quoteThis.message?.pollCreationMessage?.name; messageData.pollOptions = messageData.quoteThis.message?.pollCreationMessage?.options?.map((all) => all.optionName); - messageData.text = recMessage?.text || ''; - messageData.descriptionT = recMessage?.description || ''; - messageData.titleT = recMessage?.title || ''; messageData.recMessage = recMessage; /* Se for uma marcação de mídia */ @@ -722,7 +750,7 @@ async function dataCollect( messageData.isQuotedSticker = messageData.quotedTypeFormated === 'sticker'; /* Define se é animado */ - messageData.isAnimated = recMessage.isAnimated === true; + messageData.isAnimated = recMessage?.isAnimated === true; /* Define se é um sticker mencionado animado */ messageData.isQuotedAnimated = messageData.quotedMsgObj.isAnimated; diff --git a/lib/Commands/Main/Construct/utils.json b/lib/Commands/Main/Construct/utils.json index 32d8804..7ac347a 100644 --- a/lib/Commands/Main/Construct/utils.json +++ b/lib/Commands/Main/Construct/utils.json @@ -141,6 +141,17 @@ "description": "Local onde o módulo pode ser encontrado.", "type": "Object", "value": { + "Bank": [ + "bank", + "doar", + "pay", + "save", + "acc", + "donate", + "payment", + "banking", + "account" + ], "Images": [ "images", "randomimage", @@ -338,6 +349,7 @@ "blacklist", "prefix", "nsfw", + "spy", "language", "goodbye", "whitelist", diff --git a/lib/Commands/Main/Events/index.js b/lib/Commands/Main/Events/index.js new file mode 100644 index 0000000..6a4b492 --- /dev/null +++ b/lib/Commands/Main/Events/index.js @@ -0,0 +1,264 @@ +/* eslint-disable indent */ +/* eslint-disable default-case */ +/* eslint-disable max-len */ +/* Requires */ +const fs = require('fs'); +const path = require('path'); + +/* Importa módulos, ajuste o local conforme onde usar esse sistema */ +const Indexer = require('../../../index'); +const language = require('../../../Dialogues/index'); + +/* JSON's | Utilidades */ +let envInfo = JSON.parse(fs.readFileSync(`${__dirname}/utils.json`)); + +/* Realiza funções de pós finalização */ +function postResults(response) { + /* Verifica se pode resetar a envInfo */ + if ( + envInfo.settings.finish.value === true + || (envInfo.settings.ender.value === true && envInfo.results.success === false) + ) { + /* setTimeout para poder retornar */ + setTimeout(() => { + /* Reseta a envInfo */ + envInfo.functions.revert.value(); + + /* Reseta conforme o tempo */ + }, envInfo.settings.wait.value); + } + + /* Retorna o resultado de uma função */ + return response; +} + +/* Insere o erro na envInfo */ +function echoError(error) { + /* Determina o erro */ + const myError = !(error instanceof Error) ? new Error(`Received a instance of "${typeof error}" in function 'messedup', expected an instance of "Error".`) : error; + + /* Determina o sucesso */ + envInfo.results.success = false; + + /* Determina a falha */ + envInfo.parameters.code.value = myError.code ?? '0'; + + /* Determina a mensagem de erro */ + envInfo.parameters.message.value = myError.message ?? 'The operation cannot be completed because an unexpected error occurred.'; + + /* Define se pode printar erros */ + if (envInfo.settings.error.value === true) { + /* Define se vai printar inteiro */ + const showError = config?.fullError?.value || true; + + /* Se pode printar o erro inteiro */ + if (showError) { + /* Só joga o erro na tela */ + console.error(error); + + /* Se não, formata e printa */ + } else console.log('\x1b[31m', `[${path.basename(__dirname)} #${envInfo.parameters.code.value || 0}] →`, `\x1b[33m${envInfo.parameters.message.value}`); + } + + /* Retorna o erro */ + return envInfo.results; +} + +/* Função que retorna todo o arquivo */ +function ambientDetails() { + /* Retorna a envInfo */ + return envInfo; +} + +/* Cria a função de comando */ +async function eventRunner( + kill = envInfo.functions.exec.arguments.kill.value, + data = envInfo.functions.exec.arguments.data.value, +) { + /* Define um resultado padrão */ + envInfo.results.value = false; + + /* Define o sucesso */ + envInfo.results.success = false; + + /* Try-Catch para casos de erro */ + try { + /* Se recebeu tudo corretamente, se der ruim, não fará nada */ + if (typeof kill === 'object' && typeof data === 'object') { + /* Define o timestamp */ + const timestamp = typeof data.messageTimestamp === 'string' ? data.messageTimestamp : data.messageTimestamp?.low || data.messageTimestamp?.high || Date.now(); + + /* Define quem foi o alvo do evento */ + const participants = data?.messageStubParameters || []; + const formattedPP = participants.map((usr) => usr.replace(/@s.whatsapp.net/gi, '')); + + /* Define o chat do evento em ID */ + const chatId = data?.key?.remoteJid || data?.key?.participant || irisNumber || config.owner.value[0]; + + /* Define o participante pela key | "Causador do evento" */ + const user = data?.participant || data?.key?.participant || irisNumber; + const userFormatted = user.replace(/@s.whatsapp.net/gi, ''); + + /* Determina se é um grupo */ + const isGroup = chatId.includes('@g.us') || false; + + /* Define os dados de database do grupo e usuário */ + const groupDB = isGroup ? Indexer('sql').get('groups', user, chatId).value : 'PV'; + const personalDB = Indexer('sql').get('personal', user, chatId).value; + + /* Se tiver apenas um participante, puxa o nome dele na DB */ + const pName = participants.length === 1 ? Indexer('sql').get('personal', participants[0], chatId).value : 'N/A'; + + /* Define o StupType */ + const stubType = data?.messageStubType || 0; + + /* Faz um switch com os tipos de função stub */ + switch (stubType) { + /* Promote & Demote */ + case 'GROUP_PARTICIPANT_PROMOTE': + case 'GROUP_PARTICIPANT_DEMOTE': + case 29: + case 30: + /* Se permitido fazer essa função */ + if (groupDB?.spy?.enable === true) { + /* Define o tipo */ + const isDemote = stubType === 30 || stubType === 'GROUP_PARTICIPANT_DEMOTE'; + + /* Define o tipo de promote/demote na key */ + const keyTexts = isDemote ? 'demoteText' : 'promoteText'; + + /* Faz o aviso na tela */ + console.log(Indexer('color').echo(`[ ${isDemote ? 'DEMOTE' : 'PROMOTE'} ~ ${groupDB.name.text || 'GP'} ] →`, config.colorSet.value[0]).value, Indexer('color').echo(`'${formattedPP} (${pName.name.text})' ${envInfo.parameters.admins.value[keyTexts]} '${userFormatted} (${personalDB.name.text})' as ${new Date(timestamp * 1000).toLocaleString()}\n`, config.colorSet.value[1]).value); + + /* Avisa o grupo */ + await kill.sendMessage(chatId, { + text: language(region, 'Events', keyTexts, true, true, { + admin: `@${userFormatted}`, + user: `@${formattedPP.join(', @')}`, + }), + mentions: [user, ...participants], + }); + + /* Define que deve parar a execução */ + envInfo.results.value = 'STOP'; + } + break; + + /* Approval (Admin permitiu a entrada) */ + case 27: + case 'GROUP_PARTICIPANT_ADD': + /* Apenas se permitido fazer */ + if (groupDB?.spy?.enable === true) { + /* Faz o aviso na tela */ + console.log(Indexer('color').echo(`[ APPROVAL ~ ${groupDB.name.text || 'GP'} ] →`, config.colorSet.value[0]).value, Indexer('color').echo(`'${userFormatted} (${personalDB.name.text})' ${envInfo.parameters.admins.value.approvedText} '${formattedPP}' as ${new Date(timestamp * 1000).toLocaleString()}\n`, config.colorSet.value[1]).value); + + /* Avisa o grupo */ + await kill.sendMessage(chatId, { + text: language(region, 'Events', 'approvedText', true, true, { + admin: `@${userFormatted}`, + user: `@${formattedPP.join(', @')}`, + }), + mentions: [user, ...participants], + }); + + /* Define que deve parar a execução */ + envInfo.results.value = 'STOP'; + } + break; + } + } + + /* + Define o sucesso, se seu comando der erro isso jamais será chamado + Então o success automaticamente será false em falhas + */ + envInfo.results.success = true; + + /* Caso de algum erro */ + } catch (error) { + /* Insere tudo na envInfo */ + echoError(error); + } + + /* Retorna os resultados */ + return postResults(envInfo.results); +} + +/* Função que reseta tudo */ +function resetAmbient( + changeKey = {}, +) { + /* Reseta a Success */ + envInfo.results.success = false; + + /* Define o valor padrão */ + let exporting = { + reset: resetAmbient, + }; + + /* Try-Catch para casos de erro */ + try { + /* Define a envInfo padrão */ + envInfo = JSON.parse(fs.readFileSync(`${__dirname}/utils.json`)); + + /* Define se algum valor deve ser salvo */ + if (Object.keys(changeKey).length !== 0) { + /* Faz a listagem de keys */ + Object.keys(changeKey).forEach((key) => { + /* Edita se a key existir */ + if (Object.keys(envInfo).includes(key) && key !== 'developer') { + /* Edita a key customizada */ + envInfo[key] = changeKey[key]; + } + }); + } + + /* Insere a postResults na envInfo */ + envInfo.functions.poswork.value = postResults; + + /* Insere a ambient na envInfo */ + envInfo.functions.ambient.value = ambientDetails; + + /* Insere a error na envInfo */ + envInfo.functions.messedup.value = echoError; + + /* Insere a revert na envInfo */ + envInfo.functions.revert.value = resetAmbient; + + /* Insere a eventRunner na envInfo */ + envInfo.functions.exec.value = eventRunner; + + /* Define o local completo na envInfo para usar o reload novamente */ + envInfo.parameters.location.value = __filename; + + /* Gera a module exports */ + module.exports = { + [envInfo.name]: { + [envInfo.exports.env]: envInfo.functions.ambient.value, + [envInfo.exports.messedup]: envInfo.functions.messedup.value, + [envInfo.exports.poswork]: envInfo.functions.poswork.value, + [envInfo.exports.reset]: envInfo.functions.revert.value, + [envInfo.exports.exec]: envInfo.functions.exec.value, + }, + Developer: 'KillovSky', + Projects: 'https://github.com/KillovSky', + }; + + /* Determina sucesso */ + envInfo.results.success = true; + + /* Define o valor retornado */ + exporting = module.exports; + + /* Caso de algum erro */ + } catch (error) { + /* Insere tudo na envInfo */ + echoError(error); + } + + /* Retorna o exports */ + return exporting; +} + +/* Constrói a envInfo */ +resetAmbient(); diff --git a/lib/Commands/Main/Events/utils.json b/lib/Commands/Main/Events/utils.json new file mode 100644 index 0000000..fd8d167 --- /dev/null +++ b/lib/Commands/Main/Events/utils.json @@ -0,0 +1,155 @@ +{ + "name": "event", + "description": "Executar eventos no meio do processamento da mensagem.", + "usage": { + "general": "[RESTRITO] - Verifique o 'examples' para usos inseguros.", + "examples": [ + "event.env()", + "event.make()", + "event.env().functions.make.value()", + "event.env().functions.revert.value()" + ] + }, + "license": "MIT", + "helps": [ + "Você pode mudar os parâmetros da exports enviando o valor da Object que deseja editar ao resetar, por exemplo → event.reset({ name: 'Body'}) ← Isso mudaria o module de Tree para Body, o uso então passaria ser: → Body.funcão ← Isso também permite que você edita a função usando o mesmo método.", + "Você pode mudar o que os códigos rodam, em tempo real, basta usar a 'env', por exemplo → event.env().name = 'Body' ← Mas este método não atualizará o sistema, somente a Object, os sistemas permanecem intactos.", + "Você pode configurar o tempo de reset dos resultados ou se eles devem ser resetados usando a env, por exemplo → event.env().settings.wait = 10000 ← Isso mudaria o tempo de espera para 10 segundos, o tempo deve ser em milissegundos.", + "Alguém lê essas dicas? Se sim, torne-se um programador, ler os tutoriais é de suma importância e poucos desenvolvedores o fazem...", + "Existem infinitas formas de uso secretas, explore os códigos para descobrir os mistérios dos sistemas!", + "Todas as funções tem valores padrão, então você não sofrerá erros por esquecer de enviar um parâmetro ou similar." + ], + "exports": { + "env": "env", + "messedup": "messedup", + "exec": "execute", + "reset": "reset", + "poswork": "finish" + }, + "developer": "KillovSky", + "files": { + "index.js": "Sistema que faz a coleta das informações e envio.", + "utils.json": "Dados de fábrica da envInfo." + }, + "modules": { + "fs": "Leitura de diretórios e arquivos.", + "path": "Para inserção do local na envInfo.", + "../../Dialogues/index": "Funções que retornam os diálogos necessários.", + "../../index'": "Para rodar funções de outros arquivos." + }, + "functions": { + "ambient": { + "arguments": false, + "description": "Retorna as variáveis e sistemas do arquivo.", + "type": "Boolean / Function", + "value": false + }, + "messedup": { + "arguments": { + "error": { + "description": "Instância de erro para formatação.", + "type": "Boolean / Error", + "value": false + } + }, + "description": "Ajusta os valores de erro.", + "type": "Boolean / Function", + "value": false + }, + "exec": { + "arguments": { + "kill": { + "description": "Funções de controle raiz da Íris.", + "type": "Boolean / Object", + "value": false + }, + "data": { + "description": "Dados da mensagem recebida.", + "type": "Boolean / Object", + "value": false + } + }, + "description": "Executa o comando representado nesse arquivo.", + "type": "Boolean / Function", + "value": false + }, + "poswork": { + "arguments": { + "response": { + "description": "Resultados de uma função.", + "type": "Any", + "value": false + } + }, + "description": "Verifica se pode resetar a envInfo e retorna o resultado da função.", + "type": "Boolean / Function", + "value": false + }, + "revert": { + "arguments": { + "changeKey": { + "description": "Uma Object com valores que existem na envInfo, ela será usada para substituir o sistema em tempo real.", + "type": "Object value", + "anyValue": false + } + }, + "description": "Reseta a envInfo para a Object padrão.", + "type": "Boolean / Function", + "value": false + } + }, + "settings": { + "wait": { + "description": "Tempo em MS que deve esperar antes de resetar.", + "type": "Number", + "value": 5000 + }, + "error": { + "description": "Define se pode printar qualquer erro.", + "type": "Boolean", + "value": true + }, + "ender": { + "description": "Define se deve resetar a cada erro.", + "type": "Boolean", + "value": true + }, + "finish": { + "description": "Define se deve resetar a cada finalização.", + "type": "Boolean", + "value": true + } + }, + "parameters": { + "location": { + "description": "Local onde o módulo pode ser encontrado.", + "type": "Boolean / String", + "value": "./index" + }, + "code": { + "description": "Código do erro que obter.", + "type": "Boolean / String / Number", + "value": false + }, + "message": { + "description": "Armazena a mensagem do último erro recebido.", + "type": "Boolean / String", + "value": false + }, + "admins": { + "description": "Define as mensagens para demote e promote no terminal.", + "type": "Object", + "value": { + "promoteText": "foi promovido a administrador por", + "demoteText": "foi demitido do cargo de administrador por", + "approvedText": "permitiu a entrada dos novos usuários" + } + } + }, + "results": { + "description": "Resultado final da função.", + "success": true, + "type": "String / Boolean", + "value": false + } +} \ No newline at end of file diff --git a/lib/Commands/Main/index.js b/lib/Commands/Main/index.js index a2670cc..e8eb5b1 100644 --- a/lib/Commands/Main/index.js +++ b/lib/Commands/Main/index.js @@ -88,7 +88,7 @@ function endLogger(kill, dataSets, commandExecuter) { `${Indexer('color').echo(`> ${messageType}`, cmdColor).value}: ${Indexer('color').echo(previewText, msgColor).value}\n` + `${Indexer('color').echo('> DATA', config.colorSet.value[0]).value}: ${Indexer('color').echo(dataSets.value.time, config.colorSet.value[2]).value}\n` + `${Indexer('color').echo('> SYSTEM', config.colorSet.value[0]).value}: ${Indexer('color').echo(dataSets.value.userPlatform, Indexer('array').extract(config.colorSet.value).value).value}\n` - + `${Indexer('color').echo('> PING', config.colorSet.value[0]).value}: ${Indexer('color').echo(`${dataSets.value.procTime.toString()}s`, Indexer('array').extract(config.colorSet.value).value).value}\n` + + `${Indexer('color').echo('> READ PING', config.colorSet.value[0]).value}: ${Indexer('color').echo(`${dataSets.value.procTime.toString()}s`, Indexer('array').extract(config.colorSet.value).value).value}\n` + `${Indexer('color').echo('> USER', config.colorSet.value[0]).value}: ${Indexer('color').echo(dataSets.value.originalPushname || dataSets.value.originalName, Indexer('array').extract(config.colorSet.value).value).value}\n` + `${Indexer('color').echo('> NUMBER', config.colorSet.value[0]).value}: ${Indexer('color').echo(dataSets.value.userFormated, Indexer('array').extract(config.colorSet.value).value).value}\n` + `${Indexer('color').echo('> PATENTE', config.colorSet.value[0]).value}: ${Indexer('color').echo(dataSets.value.patente, Indexer('array').extract(config.colorSet.value).value).value}\n` @@ -118,9 +118,6 @@ async function redirectCommands( try { /* Verifica se recebeu parâmetros corretos */ if (typeof kill === 'object' && typeof message === 'object') { - /* Para lucas do futuro: Lembre-se de remover isso afim de construir sistemas novos! */ - if (message.type === 'append' && Object.keys(message?.messages[0]?.message).every((ms) => !ms.includes('Message'))) return postResults(envInfo.results); - /* Adquire os dados da mensagem */ const dataSets = await Indexer('construct').make(kill, message); diff --git a/lib/Databases/Configurations/config.json b/lib/Databases/Configurations/config.json index 813ae8d..3ab4ad8 100644 --- a/lib/Databases/Configurations/config.json +++ b/lib/Databases/Configurations/config.json @@ -3,6 +3,10 @@ "description": "Enables the feature to add participants from Íris. Note: This command is disabled by default for safety reasons due to the elevated risk of receiving a WhatsApp ban.", "value": false }, + "allowEvents": { + "description": "Enable detection of events, like promoting, demoting or gaming events like MMM (Minecraft Mining Mode).", + "value": true + }, "botCommands": { "description": "Specifies whether Íris should execute commands from her messages. Note: This feature may have serious bugs and is not 100% tested.", "value": false diff --git a/lib/Databases/Configurations/symlinks.json b/lib/Databases/Configurations/symlinks.json index 94a7720..5d1238d 100644 --- a/lib/Databases/Configurations/symlinks.json +++ b/lib/Databases/Configurations/symlinks.json @@ -82,7 +82,7 @@ ] }, "Events": { - "place": "./Functions/Works/Events/index", + "place": "./Commands/Main/Events/index", "alias": [ "events", "evento" diff --git a/lib/Dialogues/Cases/index.json b/lib/Dialogues/Cases/index.json index 035fa0e..6cbff7c 100644 --- a/lib/Dialogues/Cases/index.json +++ b/lib/Dialogues/Cases/index.json @@ -28,7 +28,7 @@ "Essas mensagens com letras maiúsculas realmente assustam, podem parar? Por favor..." ], "Test": [ - "_⚠️ → Ops, o comando_ *'{command}'* _não existe oficialmente ou no sistema de geração de comandos, se quiser, você pode criar ele com o comando_ *'{prefix}Custom {command} | Resposta'* _, também confira nossa lista de comandos atuais no_ *'{prefix}Menu'* _antes de continuar._\n\n_ℹ️ → Recomendação de comando para você:_ *'{suggestCMD}'*" + "_⚠️ → Ops, o comando_ `{command}` _não existe oficialmente ou no sistema de geração de comandos, se quiser, você pode criar ele com o comando_ `{prefix}Custom {command} | Resposta` _, também confira nossa lista de comandos atuais no_ `{prefix}Menu` _antes de continuar._\n\n_ℹ️ → Recomendação de comando para você:_ `{suggestCMD}`" ] }, "ar": { @@ -60,7 +60,7 @@ "هذه الرسائل بحروف كبيرة تخيف حقًا، هل يمكن أن تتوقفوا من فضلك؟" ], "Test": [ - "_⚠️ → للأسف, الأمر_ *'{command}'* _ليس موجود في قائمتي في الوقت الحالي, اذا تريد, يمكنك عمله في هذا الامر_ *'{prefix}Custom {command} | Answer'* _, أيضا افحص الأوامر الصحيحة في أمر_ *'{prefix}Menu'* _قبل ان تكمل._\n\n_ℹ️ → أمر مقترح لك:_ *'{suggestCMD}'*" + "_⚠️ → للأسف, الأمر_ `{command}` _ليس موجود في قائمتي في الوقت الحالي, اذا تريد, يمكنك عمله في هذا الامر_ `{prefix}Custom {command} | Answer` _, أيضا افحص الأوامر الصحيحة في أمر_ `{prefix}Menu` _قبل ان تكمل._\n\n_ℹ️ → أمر مقترح لك:_ `{suggestCMD}`" ] }, "jp": { @@ -92,7 +92,7 @@ "大文字のメッセージは本当に怖いです。やめてくれませんか?お願いします..." ], "Test": [ - "_⚠️ → おっと、コマンド_ *'{command}'* _は正式には存在しないか、コマンド生成システムにはありません。必要に応じて、コマンドで作成できます_ *'{prefix}Custom {command} | Answer'* _, また、続行する前に_ *'{prefix}Menu'* _で現在のコマンドのリストを確認してください._\n\n_ℹ️ → コマンドの推奨事項:_ *'{suggestCMD}'*" + "_⚠️ → おっと、コマンド_ `{command}` _は正式には存在しないか、コマンド生成システムにはありません。必要に応じて、コマンドで作成できます_ `{prefix}Custom {command} | Answer` _, また、続行する前に_ `{prefix}Menu` _で現在のコマンドのリストを確認してください._\n\n_ℹ️ → コマンドの推奨事項:_ `{suggestCMD}`" ] }, "en": { @@ -124,7 +124,7 @@ "These messages with capital letters are really scary, will you stop? Please..." ], "Test": [ - "_⚠️ → Oops, the command_ *'{command}'* _does not officially exist or in the command generation system, if you want, you can create it with the command_ *'{prefix}Custom {command} | Answer'* _, also check out our list of current commands in the_ *'{prefix}Menu'* _before continuing._\n\n_ℹ️ → Command recommendation for you:_ *'{suggestCMD}'*" + "_⚠️ → Oops, the command_ `{command}` _does not officially exist or in the command generation system, if you want, you can create it with the command_ `{prefix}Custom {command} | Answer` _, also check out our list of current commands in the_ `{prefix}Menu` _before continuing._\n\n_ℹ️ → Command recommendation for you:_ `{suggestCMD}`" ] }, "fr": { @@ -156,7 +156,7 @@ "Ces messages avec des majuscules font vraiment peur, tu vas arrêter? S'il te plait..." ], "Test": [ - "_⚠️ → Oups, la commande_ *'{command}'* _n'existe pas officiellement ou dans le système de génération de commandes, si vous le souhaitez, vous pouvez la créer avec la commande_ *'{prefix}Custom {command} | Answer'* _, consultez également notre liste de commandes actuelles dans le_ *'{prefix}Menu'* _avant de continuer._\n\n_ℹ️ → Recommandation de commande pour vous :_ *'{suggestCMD}'*" + "_⚠️ → Oups, la commande_ `{command}` _n'existe pas officiellement ou dans le système de génération de commandes, si vous le souhaitez, vous pouvez la créer avec la commande_ `{prefix}Custom {command} | Answer` _, consultez également notre liste de commandes actuelles dans le_ `{prefix}Menu` _avant de continuer._\n\n_ℹ️ → Recommandation de commande pour vous :_ `{suggestCMD}`" ] }, "es": { @@ -188,7 +188,7 @@ "Estos mensajes con mayúsculas dan mucho miedo, ¿quieres parar? Por favor..." ], "Test": [ - "_⚠️ → Ups, el comando_ *'{command}'* _no existe oficialmente ni en el sistema de generación de comandos, si quieres puedes crearlo con el comando_ *'{prefix}Custom {command} | Respuesta'* _, consulte también nuestra lista de comandos actuales en el_ *'{prefijo}Menu'* _antes de continuar._\n\n_ℹ️ → Comando recomendado para usted:_ *'{suggestCMD}'*" + "_⚠️ → Ups, el comando_ `{command}` _no existe oficialmente ni en el sistema de generación de comandos, si quieres puedes crearlo con el comando_ `{prefix}Custom {command} | Respuesta` _, consulte también nuestra lista de comandos actuales en el_ *'{prefijo}Menu'* _antes de continuar._\n\n_ℹ️ → Comando recomendado para usted:_ `{suggestCMD}`" ] }, "id": { @@ -220,7 +220,7 @@ "Pesan dengan huruf kapital ini benar-benar menakutkan, maukah kamu berhenti? Tolong ..." ], "Test": [ - "_⚠️ → Ups, command_ *'{command}'* _tidak resmi ada atau dalam sistem pembuatan perintah, jika mau, Anda dapat membuatnya dengan command_ *'{prefix}Custom {command} | Answer'* _, lihat juga daftar perintah saat ini di_ *'{prefix}Menu'* _sebelum melanjutkan._\n\n_ℹ️ → Rekomendasi perintah untuk Anda:_ *'{suggestCMD}'*" + "_⚠️ → Ups, command_ `{command}` _tidak resmi ada atau dalam sistem pembuatan perintah, jika mau, Anda dapat membuatnya dengan command_ `{prefix}Custom {command} | Answer` _, lihat juga daftar perintah saat ini di_ `{prefix}Menu` _sebelum melanjutkan._\n\n_ℹ️ → Rekomendasi perintah untuk Anda:_ `{suggestCMD}`" ] }, "ms": { @@ -252,7 +252,7 @@ "Mesej dengan huruf besar ini benar-benar menakutkan, bolehkah anda berhenti? Tolong..." ], "Test": [ - "_⚠️ → Oops, perintah_ *'{command}'* _tidak wujud secara rasmi atau dalam sistem penjanaan arahan, jika anda mahu, anda boleh menciptanya dengan arahan_ *'{prefix}Custom {command} | Answer'* _, lihat juga senarai arahan semasa kami dalam_ *'{prefix}Menu'* _sebelum meneruskan._\n\n_ℹ️ → Syor arahan untuk anda:_ *'{suggestCMD}'*" + "_⚠️ → Oops, perintah_ `{command}` _tidak wujud secara rasmi atau dalam sistem penjanaan arahan, jika anda mahu, anda boleh menciptanya dengan arahan_ `{prefix}Custom {command} | Answer` _, lihat juga senarai arahan semasa kami dalam_ `{prefix}Menu` _sebelum meneruskan._\n\n_ℹ️ → Syor arahan untuk anda:_ `{suggestCMD}`" ] }, "hi": { @@ -284,7 +284,7 @@ "बड़े अक्षरों वाले ये संदेश वाकई डरावने हैं, क्या आप रुकेंगे? कृपया..." ], "Test": [ - "_⚠️ → उफ़, कमांड_ *'{command}'* _आधिकारिक तौर पर या कमांड जेनरेशन सिस्टम में मौजूद नहीं है, अगर आप चाहें तो इसे कमांड से बना सकते हैं_ *'{prefix}Custom {command} | उत्तर'* _, जारी रखने से पहले_ *'{prefix}Menu'*_ में हमारे मौजूदा कमांड की सूची भी देखें।_\n\n_ℹ️ → आपके लिए कमांड की सिफारिश:_ *'{suggestCMD}'*" + "_⚠️ → उफ़, कमांड_ `{command}` _आधिकारिक तौर पर या कमांड जेनरेशन सिस्टम में मौजूद नहीं है, अगर आप चाहें तो इसे कमांड से बना सकते हैं_ `{prefix}Custom {command} | उत्तर` _, जारी रखने से पहले_ `{prefix}Menu`_ में हमारे मौजूदा कमांड की सूची भी देखें।_\n\n_ℹ️ → आपके लिए कमांड की सिफारिश:_ `{suggestCMD}`" ] }, "de": { @@ -316,7 +316,7 @@ "Diese Nachrichten mit Großbuchstaben sind wirklich beängstigend, hörst du auf? Bitte..." ], "Test": [ - "_⚠️ → Hoppla, der Befehl_ *'{command}'* _existiert weder offiziell noch im Befehlsgenerierungssystem, wenn Sie möchten, können Sie ihn mit dem Befehl_ *'{prefix}Custom {command} | Answer' erstellen* _, sehen Sie sich auch unsere Liste der aktuellen Befehle im_ *'{prefix}Menu'* an, _bevor Sie fortfahren._\n\n_ℹ️ → Befehlsempfehlung für Sie:_ *'{suggestCMD}'*" + "_⚠️ → Hoppla, der Befehl_ `{command}` _existiert weder offiziell noch im Befehlsgenerierungssystem, wenn Sie möchten, können Sie ihn mit dem Befehl_ `{prefix}Custom {command} | Answer` _, sehen Sie sich auch unsere Liste der aktuellen Befehle im_ `{prefix}Menu` an, _bevor Sie fortfahren._\n\n_ℹ️ → Befehlsempfehlung für Sie:_ `{suggestCMD}`" ] }, "it": { @@ -348,7 +348,7 @@ "Questi messaggi con le lettere maiuscole fanno davvero paura, vuoi smetterla? Per favore..." ], "Test": [ - "_⚠️ → Oops, il comando_ *'{command}'* _non esiste ufficialmente o nel sistema di generazione dei comandi, se vuoi puoi crearlo con il comando_ *'{prefix}Custom {command} | Answer'* _, controlla anche il nostro elenco di comandi correnti nel_ *'{prefix}Menu'* _prima di continuare._\n\n_ℹ️ → Consiglio di comando per te:_ *'{suggestCMD}'*" + "_⚠️ → Oops, il comando_ `{command}` _non esiste ufficialmente o nel sistema di generazione dei comandi, se vuoi puoi crearlo con il comando_ `{prefix}Custom {command} | Answer` _, controlla anche il nostro elenco di comandi correnti nel_ `{prefix}Menu` _prima di continuare._\n\n_ℹ️ → Consiglio di comando per te:_ `{suggestCMD}`" ] }, "ru": { @@ -380,7 +380,7 @@ "Эти сообщения с заглавными буквами действительно пугают, вы можете прекратить? Пожалуйста..." ], "Test": [ - "_⚠️ → Упс, команда_ *'{command}'* _не существует ни официально, ни в системе генерации команд, если хотите, можете создать ее командой_ *'{prefix}Custom {command} | Ответ'* _, также ознакомьтесь со списком текущих команд в_ *'{prefix}Menu'* _прежде чем продолжить._\n\n_ℹ️ → Рекомендации по командам для вас:_ *'{suggestCMD}'*" + "_⚠️ → Упс, команда_ `{command}` _не существует ни официально, ни в системе генерации команд, если хотите, можете создать ее командой_ *'{prefix}Custom {command} | Ответ'* _, также ознакомьтесь со списком текущих команд в_ `{prefix}Menu` _прежде чем продолжить._\n\n_ℹ️ → Рекомендации по командам для вас:_ `{suggestCMD}`" ] }, "lat": { @@ -412,7 +412,7 @@ "Haec epistulae cum litteris capitalibus vere formidulosus sunt, cessas? Rogo..." ], "Test": [ - "_⚠️ → Oops, mandatum_ *'{command}'* _non est publice neque in praecepto generationis, si vis, cum imperio creare potes_ *'{prefix}Custom {command} | Answer'* _, etiam indicem nostrum mandatorum currentium in the_ *'{prefix}Menu'* _antequam continuam._\n\n_ℹ️ → Mandatum tibi:_ *'{suggestCMD}'*" + "_⚠️ → Oops, mandatum_ `{command}` _non est publice neque in praecepto generationis, si vis, cum imperio creare potes_ `{prefix}Custom {command} | Answer` _, etiam indicem nostrum mandatorum currentium in the_ `{prefix}Menu` _antequam continuam._\n\n_ℹ️ → Mandatum tibi:_ `{suggestCMD}`" ] } } \ No newline at end of file diff --git a/lib/Dialogues/Errors/index.json b/lib/Dialogues/Errors/index.json index b9a9ca7..7ce69b7 100644 --- a/lib/Dialogues/Errors/index.json +++ b/lib/Dialogues/Errors/index.json @@ -1,7 +1,7 @@ { "pt": { "Fail": [ - "😵 _Ooops, algo de errado aconteceu comigo, agradeceria se você pudesse enviar os detalhes abaixo para meu/minha chefe via comando 'help' ou contatando os administradores._\n\n🤖 _Lembre-se, os erros podem ser referentes a um servidor, wa-automate, mensagens que não recebi ou tenho, ajustes incorretos das minhas configurações ou um tipo desconhecido de falha, nem sempre é um erro meu ou no meu código._\n\n#️⃣ _Comando →_ *'{command}'*\n\n📅 _Ocorreu em →_ *'{time}'*\n\n📁 _Na pasta →_ *'{path}'*\n\n🗋 _No arquivo →_ *'{file}'*\n\n🧶 _Na linha →_ *'#{line}'*\n\n🔍 _No caractere →_ *'#{character}'*\n\n🔭 _O erro é comigo? →_ *'{isMe}'*\n\n❓ _Tipo do erro →_ *'{typeerror}'*\n\n❌ _Mensagem do erro →_ *'{fullbo}'*\n\n💡 _Como corrigir →_ *'{suggestion}'*\n\n🐕 - Mesmo que o erro não seja comigo, se estiver sofrendo repetidos erros, você pode reportar isso no meu repositório na GitHub, procure por Projeto Íris, pois isso pode ser causado por uma atualização de módulo externo que precisa que seja corrigido pelos meus DEV's, mas geralmente isso é de responsabilidade do módulo que estiver dando problemas e não dos meus desenvolvedores." + "😵 _Ooops, algo de errado aconteceu comigo, agradeceria se você pudesse enviar os detalhes abaixo para meu/minha chefe via comando 'help' ou contatando os administradores._\n\n🤖 _Lembre-se, os erros podem ser referentes a um servidor, baileys, mensagens que não recebi ou tenho, ajustes incorretos das minhas configurações ou um tipo desconhecido de falha, nem sempre é um erro meu ou no meu código._\n\n#️⃣ _Comando →_ `{command}`\n\n📅 _Ocorreu em →_ `{time}`\n\n📁 _Na pasta →_ `{path}`\n\n🗋 _No arquivo →_ `{file}`\n\n🧶 _Na linha →_ `#{line}`\n\n🔍 _No caractere →_ `#{character}`\n\n🔭 _O erro é comigo? →_ {isMe}\n\n❓ _Tipo do erro →_ `{typeerror}`\n\n❌ _Mensagem do erro →_ `{fullbo}`\n\n💡 _Como corrigir →_ *'{suggestion}'*\n\n🐕 - Mesmo que o erro não seja comigo, se estiver sofrendo repetidos erros, você pode reportar isso no meu repositório na GitHub, procure por Projeto Íris, pois isso pode ser causado por uma atualização de módulo externo que precisa que seja corrigido pelos meus DEV's, mas geralmente isso é de responsabilidade do módulo que estiver dando problemas e não dos meus desenvolvedores." ], "RangeFix": [ "Definir um valor numérico não negativo, geralmente de 0 a 65536 em caso de portas, podendo ir além disso em outros tipos, o valor máximo suportado pode ser encontrado digitando 'Number.MAX_VALUE', no entanto, utilizar números grandes pode causar erros de memoria." @@ -18,7 +18,7 @@ }, "ar": { "Fail": [ - "😵 _عفوًا، حدث خطأ ما معي، سأكون ممتنًا إذا قمت بإرسال التفاصيل أدناه إلى مديري من خلال أمر 'help' أو التواصل مع المسؤولين._\n\n🤖 _تذكر، قد تكون الأخطاء تتعلق بخادم أو wa-automate أو رسائل لم أتلقاها أو أمتلكها، إعدادات غير صحيحة لتكويناتي أو نوع غير معروف من الفشل، ليس دائمًا خطأ من جانبي أو في كودي._\n\n#️⃣ _الأمر →_ *'{command}'*\n\n📅 _حدث في →_ *'{time}'*\n\n📁 _في المجلد →_ *'{path}'*\n\n🗋 _في الملف →_ *'{file}'*\n\n🧶 _في السطر →_ *'#{line}'*\n\n🔍 _في الحرف →_ *'#{character}'*\n\n🔭 _هل الخطأ من جانبي؟ →_ *'{isMe}'*\n\n❓ _نوع الخطأ →_ *'{typeerror}'*\n\n❌ _رسالة الخطأ →_ *'{fullbo}'*\n\n💡 _كيفية التصحيح →_ *'{suggestion}'*\n\n🐕 - حتى لو لم يكن الخطأ من جانبي، إذا كنت تواجه أخطاء متكررة، يمكنك الإبلاغ عن ذلك في مستودعي على GitHub، ابحث عن مشروع Iris، حيث قد يكون ذلك ناتجًا عن تحديث لوحدة خارجية يحتاج إلى إصلاح من قبل المطورين، ولكن هذا عادة مسؤولية الوحدة التي تسبب المشاكل وليس لمطوريّ._" + "😵 _عفوًا، حدث خطأ ما معي، سأكون ممتنًا إذا قمت بإرسال التفاصيل أدناه إلى مديري من خلال أمر 'help' أو التواصل مع المسؤولين._\n\n🤖 _تذكر، قد تكون الأخطاء تتعلق بخادم أو baileys أو رسائل لم أتلقاها أو أمتلكها، إعدادات غير صحيحة لتكويناتي أو نوع غير معروف من الفشل، ليس دائمًا خطأ من جانبي أو في كودي._\n\n#️⃣ _الأمر →_ `{command}`\n\n📅 _حدث في →_ `{time}`\n\n📁 _في المجلد →_ `{path}`\n\n🗋 _في الملف →_ `{file}`\n\n🧶 _في السطر →_ `#{line}`\n\n🔍 _في الحرف →_ `#{character}`\n\n🔭 _هل الخطأ من جانبي؟ →_ *'{isMe}'*\n\n❓ _نوع الخطأ →_ `{typeerror}`\n\n❌ _رسالة الخطأ →_ `{fullbo}`\n\n💡 _كيفية التصحيح →_ *'{suggestion}'*\n\n🐕 - حتى لو لم يكن الخطأ من جانبي، إذا كنت تواجه أخطاء متكررة، يمكنك الإبلاغ عن ذلك في مستودعي على GitHub، ابحث عن مشروع Iris، حيث قد يكون ذلك ناتجًا عن تحديث لوحدة خارجية يحتاج إلى إصلاح من قبل المطورين، ولكن هذا عادة مسؤولية الوحدة التي تسبب المشاكل وليس لمطوريّ._" ], "RangeFix": [ "تعيين قيمة رقمية غير سالبة، عادةً من 0 إلى 65536 في حالة البوابات، ويمكن أن تتجاوز ذلك في أنواع أخرى، يمكن العثور على القيمة القصوى المدعومة عند كتابة 'Number.MAX_VALUE'، ومع ذلك، يمكن أن يتسبب استخدام أرقام كبيرة في أخطاء ذاكرة." @@ -35,7 +35,7 @@ }, "jp": { "Fail": [ - "😵 _おっと、何か問題が発生しました。「ヘルプ」コマンドを使用するか、管理者に連絡して、以下の詳細を上司に送信していただければ幸いです._\n\n🤖 _覚えておいてください、エラーはサーバー、wa-automate、メッセージを受け取っていない、または持っていない、設定を誤って調整した、または不明なタイプの障害が発生した場合、それは必ずしも私のせいまたは私のコードであるとは限りません._\n\n#️⃣ _Command →_ *'{command}'*\n\n📅 _発生 →_ *'{time}'*\n\n📁 _フォルダ内 →_ *'{path}'*\n\n🗋 _ファイル内 →_ *'{file}'*\n\n🧶 _行に →_ *'#{line}'*\n\n🔍 _文字に →_ *'#{character}'*\n\n🔭 _私のミスですか? →_ *'{isMe}'*\n\n❓ _エラーの種類 →_ *'{typeerror}'*\n\n❌ _エラー メッセージ →_ *'{fullbo}'*\n\n💡 _修正方法→_ *'{suggestion}'*\n\n🐕 - エラーが私のものでなくても、繰り返しエラーが発生する場合は、GitHub の私のリポジトリでこれを報告し、プロジェクト Iris を検索してください。これが原因である可能性があります。 co である必要がある外部モジュールの更新によって 私のDEVによって修正されましたが、通常、それは私の開発者ではなく、問題を抱えているモジュールのせいです." + "😵 _おっと、何か問題が発生しました。「ヘルプ」コマンドを使用するか、管理者に連絡して、以下の詳細を上司に送信していただければ幸いです._\n\n🤖 _覚えておいてください、エラーはサーバー、baileys、メッセージを受け取っていない、または持っていない、設定を誤って調整した、または不明なタイプの障害が発生した場合、それは必ずしも私のせいまたは私のコードであるとは限りません._\n\n#️⃣ _Command →_ `{command}`\n\n📅 _発生 →_ `{time}`\n\n📁 _フォルダ内 →_ `{path}`\n\n🗋 _ファイル内 →_ `{file}`\n\n🧶 _行に →_ `#{line}`\n\n🔍 _文字に →_ `#{character}`\n\n🔭 _私のミスですか? →_ *'{isMe}'*\n\n❓ _エラーの種類 →_ `{typeerror}`\n\n❌ _エラー メッセージ →_ `{fullbo}`\n\n💡 _修正方法→_ *'{suggestion}'*\n\n🐕 - エラーが私のものでなくても、繰り返しエラーが発生する場合は、GitHub の私のリポジトリでこれを報告し、プロジェクト Iris を検索してください。これが原因である可能性があります。 co である必要がある外部モジュールの更新によって 私のDEVによって修正されましたが、通常、それは私の開発者ではなく、問題を抱えているモジュールのせいです." ], "RangeFix": [ "負でない数値を定義します。通常、ポートの場合は 0 から 65536 までです。他のタイプではそれを超えることができます。サポートされている最大値は、「Number.MAX_VALUE」と入力することで確認できますが、大きな数値を使用すると、メモリ エラーが発生する可能性があります。" @@ -52,7 +52,7 @@ }, "en": { "Fail": [ - "😵 _Ooops, something went wrong with me, I would appreciate it if you could send the details below to my/my boss via 'help' command or by contacting the administrators._\n\n🤖 _Remember, the errors may refer to a server, wa-automate, messages I didn't receive or have, incorrectly adjusted my settings, or an unknown type of failure, it's not always my fault or my code._\n\n#️⃣ _Command →_ *'{command}'*\n\n📅 _Occurred in →_ *'{time}'*\n\n📁 _In the folder →_ *'{path}'*\n\n🗋 _In the file →_ *'{file}'*\n\n🧶 _On the line →_ *'#{line}'*\n\n🔍 _On the character →_ *'#{character}'*\n\n🔭 _Is it my mistake? →_ *'{isMe}'*\n\n❓ _Error type →_ *'{typeerror}'*\n\n❌ _Error message →_ *'{fullbo}'*\n\n💡 _How to fix →_ *'{suggestion}'*\n\n🐕 - Even if the error is not mine, if you are experiencing repeated errors, you can report this in my repository on GitHub, search for Project Iris, as this could be caused by a module update external that needs to be co fixed by my DEV's, but usually that's the fault of the module that's having problems and not my developers." + "😵 _Ooops, something went wrong with me, I would appreciate it if you could send the details below to my/my boss via 'help' command or by contacting the administrators._\n\n🤖 _Remember, the errors may refer to a server, baileys, messages I didn't receive or have, incorrectly adjusted my settings, or an unknown type of failure, it's not always my fault or my code._\n\n#️⃣ _Command →_ `{command}`\n\n📅 _Occurred in →_ `{time}`\n\n📁 _In the folder →_ `{path}`\n\n🗋 _In the file →_ `{file}`\n\n🧶 _On the line →_ `#{line}`\n\n🔍 _On the character →_ `#{character}`\n\n🔭 _Is it my mistake? →_ *'{isMe}'*\n\n❓ _Error type →_ `{typeerror}`\n\n❌ _Error message →_ `{fullbo}`\n\n💡 _How to fix →_ *'{suggestion}'*\n\n🐕 - Even if the error is not mine, if you are experiencing repeated errors, you can report this in my repository on GitHub, search for Project Iris, as this could be caused by a module update external that needs to be co fixed by my DEV's, but usually that's the fault of the module that's having problems and not my developers." ], "RangeFix": [ "Define a non-negative numerical value, usually from 0 to 65536 in case of ports, it can go beyond that in other types, the maximum supported value can be found by typing 'Number.MAX_VALUE', however, use numbers large can cause memory errors." @@ -69,7 +69,7 @@ }, "fr": { "Fail": [ - "😵 _Ooops, quelque chose s'est mal passé avec moi, j'apprécierais si vous pouviez envoyer les détails ci-dessous à mon/mon patron via la commande 'aide' ou en contactant les administrateurs._\n\n🤖 _N'oubliez pas que les erreurs peuvent se référer à un serveur, wa-automate, des messages que je n'ai pas reçus ou que j'ai, mes paramètres mal réglés, ou un type de panne inconnu, ce n'est pas toujours ma faute ou mon code._\n\n#️⃣ _Commande →_ *'{command}'*\n\n📅 _S'est produite dans →_ *'{time}'*\n\n📁 _Dans le dossier →_ *'{path}'*\n\n🗋 _Dans le fichier →_ *'{file}'*\n\n🧶 _Sur la ligne →_ *'#{line}'*\n\n🔍 _Sur le caractère →_ *'#{character}'*\n\n🔭 _Est-ce mon erreur ? →_ *'{isMe}'*\n\n❓ _Type d'erreur →_ *'{typeerror}'*\n\n❌ _Message d'erreur →_ *'{fullbo}'*\n\n💡 _Comment réparer →_ *'{suggestion}'*\n\n🐕 - Même si l'erreur n'est pas de moi, si vous rencontrez des erreurs répétées, vous pouvez le signaler dans mon référentiel sur GitHub, recherchez Project Iris, car cela pourrait être causé par un module externe de mise à jour qui doit être co corrigé par mes DEV, mais c'est généralement la faute du module qui a des problèmes et non mes développeurs." + "😵 _Ooops, quelque chose s'est mal passé avec moi, j'apprécierais si vous pouviez envoyer les détails ci-dessous à mon/mon patron via la commande 'aide' ou en contactant les administrateurs._\n\n🤖 _N'oubliez pas que les erreurs peuvent se référer à un serveur, baileys, des messages que je n'ai pas reçus ou que j'ai, mes paramètres mal réglés, ou un type de panne inconnu, ce n'est pas toujours ma faute ou mon code._\n\n#️⃣ _Commande →_ `{command}`\n\n📅 _S'est produite dans →_ `{time}`\n\n📁 _Dans le dossier →_ `{path}`\n\n🗋 _Dans le fichier →_ `{file}`\n\n🧶 _Sur la ligne →_ `#{line}`\n\n🔍 _Sur le caractère →_ `#{character}`\n\n🔭 _Est-ce mon erreur ? →_ *'{isMe}'*\n\n❓ _Type d'erreur →_ `{typeerror}`\n\n❌ _Message d'erreur →_ `{fullbo}`\n\n💡 _Comment réparer →_ *'{suggestion}'*\n\n🐕 - Même si l'erreur n'est pas de moi, si vous rencontrez des erreurs répétées, vous pouvez le signaler dans mon référentiel sur GitHub, recherchez Project Iris, car cela pourrait être causé par un module externe de mise à jour qui doit être co corrigé par mes DEV, mais c'est généralement la faute du module qui a des problèmes et non mes développeurs." ], "RangeFix": [ "Définissez une valeur numérique non négative, généralement de 0 à 65536 en cas de ports, cela peut aller au-delà dans d'autres types, la valeur maximale prise en charge peut être trouvée en tapant 'Number.MAX_VALUE', cependant, utiliser des nombres grands peut provoquer des erreurs de mémoire." @@ -86,7 +86,7 @@ }, "es": { "Fail": [ - "😵 _Ooops, algo salió mal conmigo, le agradecería si pudiera enviar los detalles a continuación a mi / mi jefe a través del comando 'ayuda' o contactando a los administradores._\n\n🤖 _Recuerde, los errores pueden referirse a un servidor, wa-automate, mensajes que no recibí o tengo, ajusté incorrectamente mi configuración o un tipo de falla desconocido, no siempre es mi culpa o mi código._\n\n#️⃣ _Command →_ *'{command}'*\n\n📅 _Ocurrió en →_ *'{time}'*\n\n📁 _En la carpeta →_ *'{path}'*\n\n🗋 _En el archivo →_ *'{file}'*\n\n🧶 _En la línea →_ *'#{line}'*\n\n🔍 _En el carácter →_ *'#{character}'*\n\n🔭 _¿Es mi error? ? →_ *'{isMe}'*\n\n❓ _Tipo de error →_ *'{typeerror}'*\n\n❌ _Mensaje de error →_ *'{fullbo}'*\n\n💡 _Cómo solucionar →_ *'{suggestion}'*\n\n🐕 - Incluso si el error no es mío, si experimenta errores repetidos, puede informar esto en mi repositorio en GitHub, busque Proyecto Iris, ya que esto podría ser causado por una actualización de módulo externo que necesita ser co solucionado por mis DEV, pero generalmente eso es culpa del módulo que tiene problemas y no de mis desarrolladores." + "😵 _Ooops, algo salió mal conmigo, le agradecería si pudiera enviar los detalles a continuación a mi / mi jefe a través del comando 'ayuda' o contactando a los administradores._\n\n🤖 _Recuerde, los errores pueden referirse a un servidor, baileys, mensajes que no recibí o tengo, ajusté incorrectamente mi configuración o un tipo de falla desconocido, no siempre es mi culpa o mi código._\n\n#️⃣ _Command →_ `{command}`\n\n📅 _Ocurrió en →_ `{time}`\n\n📁 _En la carpeta →_ `{path}`\n\n🗋 _En el archivo →_ `{file}`\n\n🧶 _En la línea →_ `#{line}`\n\n🔍 _En el carácter →_ `#{character}`\n\n🔭 _¿Es mi error? ? →_ *'{isMe}'*\n\n❓ _Tipo de error →_ `{typeerror}`\n\n❌ _Mensaje de error →_ `{fullbo}`\n\n💡 _Cómo solucionar →_ *'{suggestion}'*\n\n🐕 - Incluso si el error no es mío, si experimenta errores repetidos, puede informar esto en mi repositorio en GitHub, busque Proyecto Iris, ya que esto podría ser causado por una actualización de módulo externo que necesita ser co solucionado por mis DEV, pero generalmente eso es culpa del módulo que tiene problemas y no de mis desarrolladores." ], "RangeFix": [ "Defina un valor numérico no negativo, generalmente de 0 a 65536 en el caso de los puertos, puede ir más allá que en otros tipos, el valor máximo admitido se puede encontrar escribiendo 'Number.MAX_VALUE', sin embargo, usar números grandes puede causar errores de memoria." @@ -103,7 +103,7 @@ }, "id": { "Fail": [ - "😵 _Ups, ada yang tidak beres dengan saya, saya akan sangat menghargai jika Anda dapat mengirimkan detail di bawah ini ke/bos saya melalui perintah 'bantuan' atau dengan menghubungi administrator._\n\n🤖 _Ingat, kesalahan dapat merujuk ke server, otomatis-wa, pesan yang tidak saya terima atau miliki, salah menyesuaikan pengaturan saya, atau jenis kegagalan yang tidak diketahui, itu tidak selalu kesalahan saya atau kode saya._\n\n#️⃣ _Command →_ *'{command}'*\n\n📅 _Terjadi di →_ *'{time}'*\n\n📁 _Dalam folder →_ *'{path}'*\n\n🗋 _Dalam file →_ *'{file}'*\n\n🧶 _Di baris →_ *'#{line}'*\n\n🔍 _Di karakter →_ *'#{karakter}'*\n\n🔭 _Apakah ini kesalahan saya ? →_ *'{isMe}'*\n\n❓ _Error type →_ *'{typeerror}'*\n\n❌ _Error message →_ *'{fullbo}'*\n\n💡 _Cara memperbaiki →_ *'{saran}'*\n\n🐕 - Meskipun kesalahan bukan milik saya, jika Anda mengalami kesalahan berulang, Anda dapat melaporkannya di repositori saya di GitHub, cari Project Iris, karena hal ini dapat disebabkan oleh modul update eksternal yang perlu co diperbaiki oleh DEV saya, tetapi biasanya itu adalah kesalahan modul yang mengalami masalah dan bukan pengembang saya." + "😵 _Ups, ada yang tidak beres dengan saya, saya akan sangat menghargai jika Anda dapat mengirimkan detail di bawah ini ke/bos saya melalui perintah 'bantuan' atau dengan menghubungi administrator._\n\n🤖 _Ingat, kesalahan dapat merujuk ke server, otomatis-wa, pesan yang tidak saya terima atau miliki, salah menyesuaikan pengaturan saya, atau jenis kegagalan yang tidak diketahui, itu tidak selalu kesalahan saya atau kode saya._\n\n#️⃣ _Command →_ `{command}`\n\n📅 _Terjadi di →_ `{time}`\n\n📁 _Dalam folder →_ `{path}`\n\n🗋 _Dalam file →_ `{file}`\n\n🧶 _Di baris →_ `#{line}`\n\n🔍 _Di karakter →_ *'#{karakter}'*\n\n🔭 _Apakah ini kesalahan saya ? →_ *'{isMe}'*\n\n❓ _Error type →_ `{typeerror}`\n\n❌ _Error message →_ `{fullbo}`\n\n💡 _Cara memperbaiki →_ *'{saran}'*\n\n🐕 - Meskipun kesalahan bukan milik saya, jika Anda mengalami kesalahan berulang, Anda dapat melaporkannya di repositori saya di GitHub, cari Project Iris, karena hal ini dapat disebabkan oleh modul update eksternal yang perlu co diperbaiki oleh DEV saya, tetapi biasanya itu adalah kesalahan modul yang mengalami masalah dan bukan pengembang saya." ], "RangeFix": [ "Tetapkan nilai numerik non-negatif, biasanya dari 0 hingga 65536 untuk port, dapat melebihi itu pada tipe lain, nilai maksimum yang didukung dapat ditemukan dengan mengetik 'Number.MAX_VALUE', namun, menggunakan angka besar dapat menyebabkan kesalahan memori." @@ -120,7 +120,7 @@ }, "ms": { "Fail": [ - "😵 _Ooops, ada masalah dengan saya, saya amat menghargai jika anda boleh menghantar butiran di bawah kepada bos saya/saya melalui arahan 'help' atau dengan menghubungi pentadbir._\n\n🤖 _Ingat, ralat mungkin merujuk kepada pelayan, wa-automate, mesej yang saya tidak terima atau miliki, salah melaraskan tetapan saya, atau jenis kegagalan yang tidak diketahui, ia bukan selalu salah saya atau kod saya._\n\n#️⃣ _Arahan →_ *'{ command}'*\n\n📅 _Berlaku dalam →_ *'{time}'*\n\n📁 _Dalam folder →_ *'{path}'*\n\n🗋 _Dalam fail →_ *'{file}'*\n\n🧶 _Pada baris →_ *'#{line}'*\n\n🔍 _Pada watak →_ *'#{character}'*\n\n🔭 _Adakah kesilapan saya →_ *'{isMe}'*\n\n❓ _Jenis ralat →_ *'{typeerror}'*\n\n❌ _Mesej ralat →_ *'{fullbo}'*\n\n💡 _Cara membetulkan →_ *'{suggestion}'*\n\n🐕 - Walaupun ralat bukan milik saya, jika anda mengalami ralat berulang, anda boleh melaporkannya dalam repositori saya di GitHub, cari Project Iris, kerana ini mungkin disebabkan oleh kemas kini modul luaran yang perlu bersama diperbaiki oleh DEV saya, tetapi biasanya itu adalah kesalahan modul yang menghadapi masalah dan bukan pembangun saya." + "😵 _Ooops, ada masalah dengan saya, saya amat menghargai jika anda boleh menghantar butiran di bawah kepada bos saya/saya melalui arahan 'help' atau dengan menghubungi pentadbir._\n\n🤖 _Ingat, ralat mungkin merujuk kepada pelayan, baileys, mesej yang saya tidak terima atau miliki, salah melaraskan tetapan saya, atau jenis kegagalan yang tidak diketahui, ia bukan selalu salah saya atau kod saya._\n\n#️⃣ _Arahan →_ *'{ command}'*\n\n📅 _Berlaku dalam →_ `{time}`\n\n📁 _Dalam folder →_ `{path}`\n\n🗋 _Dalam fail →_ `{file}`\n\n🧶 _Pada baris →_ `#{line}`\n\n🔍 _Pada watak →_ `#{character}`\n\n🔭 _Adakah kesilapan saya →_ *'{isMe}'*\n\n❓ _Jenis ralat →_ `{typeerror}`\n\n❌ _Mesej ralat →_ `{fullbo}`\n\n💡 _Cara membetulkan →_ *'{suggestion}'*\n\n🐕 - Walaupun ralat bukan milik saya, jika anda mengalami ralat berulang, anda boleh melaporkannya dalam repositori saya di GitHub, cari Project Iris, kerana ini mungkin disebabkan oleh kemas kini modul luaran yang perlu bersama diperbaiki oleh DEV saya, tetapi biasanya itu adalah kesalahan modul yang menghadapi masalah dan bukan pembangun saya." ], "RangeFix": [ "Tentukan nilai berangka bukan negatif, biasanya dari 0 hingga 65536 dalam kes port, ia boleh melebihi itu dalam jenis lain, nilai maksimum yang disokong boleh didapati dengan menaip 'Number.MAX_VALUE', walau bagaimanapun, menggunakan nombor yang besar boleh menyebabkan ralat ingatan." @@ -137,7 +137,7 @@ }, "hi": { "Fail": [ - "😵 _ओउप्स, मेरे साथ कुछ गलत हो गया है, अगर आप 'हेल्प' कमांड के जरिए या एडमिनिस्ट्रेटर से संपर्क करके नीचे दिए गए विवरण मेरे/मेरे बॉस को भेज सकते हैं तो मैं इसकी सराहना करूंगा।_\n\n🤖 _याद रखें, त्रुटियां संदर्भित हो सकती हैं एक सर्वर के लिए, वा-स्वचालित, संदेश जो मुझे प्राप्त नहीं हुए या मेरे पास हैं, मेरी सेटिंग्स को गलत तरीके से समायोजित किया है, या किसी अज्ञात प्रकार की विफलता, यह हमेशा मेरी गलती या मेरा कोड नहीं है।_\n\n#️⃣ _कमांड →_ *'{command}'*\n\n📅 _इसमें हुआ →_ *'{time}'*\n\n📁 _फ़ोल्डर में →_ *'{path}'*\n\n🗋 _फ़ाइल में →_ *'{file}'*\n\n🧶 _ऑन द लाइन →_ *'#{line}'*\n\n🔍 _ऑन द कैरेक्टर →_ *'#{character}'*\n\n🔭 _क्या यह मेरी गलती है ? →_ *'{isMe}'*\n\n❓ _त्रुटि प्रकार →_ *'{typeerror}'*\n\n❌ _त्रुटि संदेश →_ *'{fullbo}'*\n\n💡 _कैसे ठीक करें →_ *'{suggestion}'*\n\n🐕 - भले ही त्रुटि मेरी नहीं है, यदि आप बार-बार त्रुटियों का सामना कर रहे हैं, तो आप इसे GitHub पर मेरे रिपॉजिटरी में रिपोर्ट कर सकते हैं, प्रोजेक्ट आइरिस की खोज कर सकते हैं, क्योंकि यह कारण हो सकता है एक मॉड्यूल अपडेट बाहरी द्वारा जिसे सह होने की आवश्यकता है मेरे DEV द्वारा तय किया गया है, लेकिन आमतौर पर यह उस मॉड्यूल की गलती है जिसमें समस्या हो रही है और मेरे डेवलपर्स की नहीं।" + "😵 _ओउप्स, मेरे साथ कुछ गलत हो गया है, अगर आप 'हेल्प' कमांड के जरिए या एडमिनिस्ट्रेटर से संपर्क करके नीचे दिए गए विवरण मेरे/मेरे बॉस को भेज सकते हैं तो मैं इसकी सराहना करूंगा।_\n\n🤖 _याद रखें, त्रुटियां संदर्भित हो सकती हैं एक सर्वर के लिए, वा-स्वचालित, संदेश जो मुझे प्राप्त नहीं हुए या मेरे पास हैं, मेरी सेटिंग्स को गलत तरीके से समायोजित किया है, या किसी अज्ञात प्रकार की विफलता, यह हमेशा मेरी गलती या मेरा कोड नहीं है।_\n\n#️⃣ _कमांड →_ `{command}`\n\n📅 _इसमें हुआ →_ `{time}`\n\n📁 _फ़ोल्डर में →_ `{path}`\n\n🗋 _फ़ाइल में →_ `{file}`\n\n🧶 _ऑन द लाइन →_ `#{line}`\n\n🔍 _ऑन द कैरेक्टर →_ `#{character}`\n\n🔭 _क्या यह मेरी गलती है ? →_ *'{isMe}'*\n\n❓ _त्रुटि प्रकार →_ `{typeerror}`\n\n❌ _त्रुटि संदेश →_ `{fullbo}`\n\n💡 _कैसे ठीक करें →_ *'{suggestion}'*\n\n🐕 - भले ही त्रुटि मेरी नहीं है, यदि आप बार-बार त्रुटियों का सामना कर रहे हैं, तो आप इसे GitHub पर मेरे रिपॉजिटरी में रिपोर्ट कर सकते हैं, प्रोजेक्ट आइरिस की खोज कर सकते हैं, क्योंकि यह कारण हो सकता है एक मॉड्यूल अपडेट बाहरी द्वारा जिसे सह होने की आवश्यकता है मेरे DEV द्वारा तय किया गया है, लेकिन आमतौर पर यह उस मॉड्यूल की गलती है जिसमें समस्या हो रही है और मेरे डेवलपर्स की नहीं।" ], "RangeFix": [ "एक गैर-ऋणात्मक संख्यात्मक मान परिभाषित करें, आमतौर पर बंदरगाहों के मामले में 0 से 65536 तक, यह अन्य प्रकारों में इससे आगे जा सकता है, अधिकतम समर्थित मान 'Number.MAX_VALUE' टाइप करके पाया जा सकता है, हालाँकि, बड़ी संख्या का उपयोग स्मृति त्रुटियों का कारण बन सकता है।" @@ -154,7 +154,7 @@ }, "de": { "Fail": [ - "😵 _Ooops, bei mir ist etwas schief gelaufen, ich würde es begrüßen, wenn Sie die unten stehenden Details an meinen/meinen Chef über den Befehl 'Hilfe' senden oder die Administratoren kontaktieren könnten._\n\n🤖 _Denken Sie daran, die Fehler können sich beziehen an einen Server, Wa-Automatisierung, Nachrichten, die ich nicht erhalten habe oder habe, meine Einstellungen falsch angepasst oder eine unbekannte Art von Fehler, es ist nicht immer meine Schuld oder mein Code._\n\n#️⃣ _Befehl →_ *'{command}'*\n\n📅 _Aufgetreten in →_ *'{time}'*\n\n📁 _Im Ordner →_ *'{path}'*\n\n🗋 _In der Datei →_ *'{file}'*\n\n🧶 _Auf der Zeile →_ *'#{line}'*\n\n🔍 _Auf dem Zeichen →_ *'#{character}'*\n\n🔭 _Ist es mein Fehler ? →_ *'{isMe}'*\n\n❓ _Fehlertyp →_ *'{typeerror}'*\n\n❌ _Fehlermeldung →_ *'{fullbo}'*\n\n💡 _Wie zu beheben →_ *'{suggestion}'*\n\n🐕 - Auch wenn der Fehler nicht von mir stammt, können Sie, wenn wiederholte Fehler auftreten, dies in meinem Repository auf GitHub melden, nach Project Iris suchen, da dies verursacht werden könnte durch ein externes Modul-Update, das co von meinen Entwicklern behoben, aber normalerweise ist das der Fehler des Moduls, das Probleme hat, und nicht meine Entwickler." + "😵 _Ooops, bei mir ist etwas schief gelaufen, ich würde es begrüßen, wenn Sie die unten stehenden Details an meinen/meinen Chef über den Befehl 'Hilfe' senden oder die Administratoren kontaktieren könnten._\n\n🤖 _Denken Sie daran, die Fehler können sich beziehen an einen Server, Wa-Automatisierung, Nachrichten, die ich nicht erhalten habe oder habe, meine Einstellungen falsch angepasst oder eine unbekannte Art von Fehler, es ist nicht immer meine Schuld oder mein Code._\n\n#️⃣ _Befehl →_ `{command}`\n\n📅 _Aufgetreten in →_ `{time}`\n\n📁 _Im Ordner →_ `{path}`\n\n🗋 _In der Datei →_ `{file}`\n\n🧶 _Auf der Zeile →_ `#{line}`\n\n🔍 _Auf dem Zeichen →_ `#{character}`\n\n🔭 _Ist es mein Fehler ? →_ *'{isMe}'*\n\n❓ _Fehlertyp →_ `{typeerror}`\n\n❌ _Fehlermeldung →_ `{fullbo}`\n\n💡 _Wie zu beheben →_ *'{suggestion}'*\n\n🐕 - Auch wenn der Fehler nicht von mir stammt, können Sie, wenn wiederholte Fehler auftreten, dies in meinem Repository auf GitHub melden, nach Project Iris suchen, da dies verursacht werden könnte durch ein externes Modul-Update, das co von meinen Entwicklern behoben, aber normalerweise ist das der Fehler des Moduls, das Probleme hat, und nicht meine Entwickler." ], "RangeFix": [ "Definieren Sie einen nicht negativen Zahlenwert, normalerweise von 0 bis 65536 bei Ports, bei anderen Typen kann er darüber hinausgehen, der maximal unterstützte Wert kann jedoch durch Eingabe von 'Number.MAX_VALUE' gefunden werden, große Zahlen können zu Speicherfehlern führen." @@ -171,7 +171,7 @@ }, "it": { "Fail": [ - "😵 _Ooops, qualcosa è andato storto con me, ti sarei grato se potessi inviare i dettagli di seguito al mio/mio capo tramite il comando 'help' o contattando gli amministratori._\n\n🤖 _Ricorda, gli errori possono fare riferimento a un server, wa-automate, messaggi che non ho ricevuto o non ho, regolato in modo errato le mie impostazioni o un tipo di errore sconosciuto, non è sempre colpa mia o del mio codice._\n\n#️⃣ _Comando →_ *'{command}'*\n\n📅 _Occurred in →_ *'{time}'*\n\n📁 _Nella cartella →_ *'{path}'*\n\n🗋 _Nel file →_ *'{file}'*\n\n🧶 _Sulla riga →_ *'#{line}'*\n\n🔍 _Sul carattere →_ *'#{character}'*\n\n🔭 _È un mio errore ? →_ *'{isMe}'*\n\n❓ _Tipo di errore →_ *'{typeerror}'*\n\n❌ _Messaggio di errore →_ *'{fullbo}'*\n\n💡 _Come risolvere →_ *'{suggestion}'*\n\n🐕 - Anche se l'errore non è mio, se riscontri errori ripetuti, puoi segnalarlo nel mio repository su GitHub, cercare Project Iris, in quanto ciò potrebbe essere causato da un aggiornamento del modulo esterno che deve essere co risolto dai miei DEV, ma di solito è colpa del modulo che ha problemi e non dei miei sviluppatori." + "😵 _Ooops, qualcosa è andato storto con me, ti sarei grato se potessi inviare i dettagli di seguito al mio/mio capo tramite il comando 'help' o contattando gli amministratori._\n\n🤖 _Ricorda, gli errori possono fare riferimento a un server, baileys, messaggi che non ho ricevuto o non ho, regolato in modo errato le mie impostazioni o un tipo di errore sconosciuto, non è sempre colpa mia o del mio codice._\n\n#️⃣ _Comando →_ `{command}`\n\n📅 _Occurred in →_ `{time}`\n\n📁 _Nella cartella →_ `{path}`\n\n🗋 _Nel file →_ `{file}`\n\n🧶 _Sulla riga →_ `#{line}`\n\n🔍 _Sul carattere →_ `#{character}`\n\n🔭 _È un mio errore ? →_ *'{isMe}'*\n\n❓ _Tipo di errore →_ `{typeerror}`\n\n❌ _Messaggio di errore →_ `{fullbo}`\n\n💡 _Come risolvere →_ *'{suggestion}'*\n\n🐕 - Anche se l'errore non è mio, se riscontri errori ripetuti, puoi segnalarlo nel mio repository su GitHub, cercare Project Iris, in quanto ciò potrebbe essere causato da un aggiornamento del modulo esterno che deve essere co risolto dai miei DEV, ma di solito è colpa del modulo che ha problemi e non dei miei sviluppatori." ], "RangeFix": [ "Definisci un valore numerico non negativo, solitamente da 0 a 65536 in caso di porte, può andare oltre in altri tipi, il valore massimo supportato può essere trovato digitando 'Number.MAX_VALUE', tuttavia, usare numeri grandi può causare errori di memoria." @@ -188,7 +188,7 @@ }, "ru": { "Fail": [ - "😵 _Ой, у меня что-то пошло не так, я был бы признателен, если бы вы могли отправить данные ниже моему/моему начальнику через команду 'помощь' или связавшись с администраторами._\n\n🤖 _Помните, ошибки могут относиться на сервер, wa-automate, сообщения, которые я не получил или не получил, неправильно настроил мои настройки или неизвестный тип сбоя, это не всегда моя вина или мой код._\n\n#️⃣ _Command →_ *'{command}'*\n\n📅 _Происходит в →_ *'{time}'*\n\n📁 _В папке →_ *'{path}'*\n\n🗋 _В файле →_ *'{file}'*\n\n🧶 _На строке →_ *'#{line}'*\n\n🔍 _На символе →_ *'#{character}'*\n\n🔭 _Моя ошибка ? →_ *'{isMe}'*\n\n❓ _Тип ошибки →_ *'{typeerror}'*\n\n❌ _Сообщение об ошибке →_ *'{fullbo}'*\n\n💡 _Как исправить →_ *'{suggestion}'*\n\n🐕 - Даже если ошибка не моя, если вы сталкиваетесь с повторяющимися ошибками, вы можете сообщить об этом в моем репозитории на GitHub, выполнить поиск Project Iris, так как это могло быть вызвано внешним модулем обновления, который должен быть исправлено моими разработчиками, но обычно это вина модуля, у которого возникли проблемы, а не моих разработчиков." + "😵 _Ой, у меня что-то пошло не так, я был бы признателен, если бы вы могли отправить данные ниже моему/моему начальнику через команду 'помощь' или связавшись с администраторами._\n\n🤖 _Помните, ошибки могут относиться на сервер, baileys, сообщения, которые я не получил или не получил, неправильно настроил мои настройки или неизвестный тип сбоя, это не всегда моя вина или мой код._\n\n#️⃣ _Command →_ `{command}`\n\n📅 _Происходит в →_ `{time}`\n\n📁 _В папке →_ `{path}`\n\n🗋 _В файле →_ `{file}`\n\n🧶 _На строке →_ `#{line}`\n\n🔍 _На символе →_ `#{character}`\n\n🔭 _Моя ошибка ? →_ *'{isMe}'*\n\n❓ _Тип ошибки →_ `{typeerror}`\n\n❌ _Сообщение об ошибке →_ `{fullbo}`\n\n💡 _Как исправить →_ *'{suggestion}'*\n\n🐕 - Даже если ошибка не моя, если вы сталкиваетесь с повторяющимися ошибками, вы можете сообщить об этом в моем репозитории на GitHub, выполнить поиск Project Iris, так как это могло быть вызвано внешним модулем обновления, который должен быть исправлено моими разработчиками, но обычно это вина модуля, у которого возникли проблемы, а не моих разработчиков." ], "RangeFix": [ "Определите неотрицательное числовое значение, обычно от 0 до 65536 в случае портов, оно может выходить за рамки других типов, максимальное поддерживаемое значение можно найти, введя 'Number.MAX_VALUE', однако, использование больших чисел может привести к ошибкам памяти." @@ -205,7 +205,7 @@ }, "lat": { "Fail": [ - "😵 _Ooops, aliquid apud me erravit, id bene facturum si posses singula infra mittere ad bulla mea per 'auxilium' mandatum vel per administratores contingentes._\n\n🤖 _Remember, errores referre possunt. servo, wa-automate, epistulas non accepi vel habere, unctiones meas perperam accommodare, vel genus incognitum deficiendi, non semper culpa mea aut codicem meum est._\n\n#️⃣ _Command →_ *'{command}'*\n\n📅 _Occurred in →_ *'{time}'*\n\n📁 _In folder →_ *'{path}'*\n\n🗋 _In tabella →_ *'{file}'*\n\n🧶 _On the line →_ *'#{line}'*\n\n🔍 _On the character →_ *'#{character}'*\n\n🔭 _Is est error meus ? →_ *'{isMe}'*\n\n❓ _Error type →_ *'{typeerror}'*\n\n❌ _Error nuntius →_ *'{fullbo}'*\n\n💡 _Quam figere →_ *'{suggestion}'*\n\n🐕 - Etsi error meus non est, si errores repetitos experiris, hoc referre potes in repositorio meo in GitHub, quaerendi Irim Project, sicut causari potuit. per moduli renovatio externa indiget co- fixum meis DEV, sed solere vitio moduli qui problems et non tincidunt me habet." + "😵 _Ooops, aliquid apud me erravit, id bene facturum si posses singula infra mittere ad bulla mea per 'auxilium' mandatum vel per administratores contingentes._\n\n🤖 _Remember, errores referre possunt. servo, baileys, epistulas non accepi vel habere, unctiones meas perperam accommodare, vel genus incognitum deficiendi, non semper culpa mea aut codicem meum est._\n\n#️⃣ _Command →_ `{command}`\n\n📅 _Occurred in →_ `{time}`\n\n📁 _In folder →_ `{path}`\n\n🗋 _In tabella →_ `{file}`\n\n🧶 _On the line →_ `#{line}`\n\n🔍 _On the character →_ `#{character}`\n\n🔭 _Is est error meus ? →_ *'{isMe}'*\n\n❓ _Error type →_ `{typeerror}`\n\n❌ _Error nuntius →_ `{fullbo}`\n\n💡 _Quam figere →_ *'{suggestion}'*\n\n🐕 - Etsi error meus non est, si errores repetitos experiris, hoc referre potes in repositorio meo in GitHub, quaerendi Irim Project, sicut causari potuit. per moduli renovatio externa indiget co- fixum meis DEV, sed solere vitio moduli qui problems et non tincidunt me habet." ], "RangeFix": [ "Definire valorem numeralem non-negativum, plerumque ab 0 ad 65536 in casu portuum, supergredi potest quod in aliis speciebus, valorem maximum fultum per typing 'Number.MAX_VALUE' inveniri potest. usus numeros magnos errores memoriae causare potest." diff --git a/lib/Dialogues/Events/index.json b/lib/Dialogues/Events/index.json new file mode 100644 index 0000000..7e5298d --- /dev/null +++ b/lib/Dialogues/Events/index.json @@ -0,0 +1,145 @@ +{ + "pt": { + "demoteText": [ + "👀 Opa, parece que temos demissões! 🔎\n\n👑 Quem demitiu: {admin}\n\n👤 Os demitidos: {user}" + ], + "promoteText": [ + "🔎 Bem vindos, novos administradores! 👀\n\n👸 Quem contratou: {admin}\n\n👑 Os novatos: {user}" + ], + "approvedText": [ + "🔎 O administrador {admin} permitiu a entrada ou adicionou novos membros no grupo.\n> {user}" + ] + }, + "jp": { + "demoteText": [ + "👀 おっと、解雇があるようです! 🔎\n\n👑 解雇したのは: {admin}\n\n👤 解雇されたのは: {user}" + ], + "promoteText": [ + "🔎 ようこそ、新しい管理者たち! 👀\n\n👸 誰が雇ったか: {admin}\n\n👑 新人たちは: {user}" + ], + "approvedText": [ + "🔎 管理者 {admin} がグループに参加を許可したか、新しいメンバーを追加しました。\n> {user}" + ] + }, + "ar": { + "demoteText": [ + "👀 هل نرى استقالات! 🔎\n\n👑 من فصل: {admin}\n\n👤 المقالون: {user}" + ], + "promoteText": [ + "🔎 مرحبًا بالمسؤولين الجدد! 👀\n\n👸 من قام بالتعيين: {admin}\n\n👑 الجدد: {user}" + ], + "approvedText": [ + "🔎 المدير {admin} سمح بالدخول أو أضاف أعضاء جدد في المجموعة.\n> {user}" + ] + }, + "en": { + "demoteText": [ + "👀 Oops, looks like we have demotions! 🔎\n\n👑 Who demoted: {admin}\n\n👤 The demoted: {user}" + ], + "promoteText": [ + "🔎 Welcome, new administrators! 👀\n\n👸 Who hired: {admin}\n\n👑 The newcomers: {user}" + ], + "approvedText": [ + "🔎 Administrator {admin} allowed entry or added new members to the group.\n> {user}" + ] + }, + "fr": { + "demoteText": [ + "👀 Oups, il semble que nous ayons des rétrogradations ! 🔎\n\n👑 Qui a rétrogradé : {admin}\n\n👤 Les rétrogradés : {user}" + ], + "promoteText": [ + "🔎 Bienvenue, nouveaux administrateurs ! 👀\n\n👸 Qui a embauché : {admin}\n\n👑 Les nouveaux : {user}" + ], + "approvedText": [ + "🔎 L'administrateur {admin} a autorisé l'entrée ou ajouté de nouveaux membres au groupe.\n> {user}" + ] + }, + "es": { + "demoteText": [ + "👀 Ups, parece que tenemos degradaciones! 🔎\n\n👑 Quién degradó: {admin}\n\n👤 Los degradados: {user}" + ], + "promoteText": [ + "🔎 Bienvenidos, nuevos administradores! 👀\n\n👸 Quién contrató: {admin}\n\n👑 Los novatos: {user}" + ], + "approvedText": [ + "🔎 El administrador {admin} permitió la entrada o añadió nuevos miembros al grupo.\n> {user}" + ] + }, + "id": { + "demoteText": [ + "👀 Ups, sepertinya kita memiliki penurunan jabatan! 🔎\n\n👑 Siapa yang menurunkan: {admin}\n\n👤 Yang diturunkan: {user}" + ], + "promoteText": [ + "🔎 Selamat datang, administrator baru! 👀\n\n👸 Siapa yang merekrut: {admin}\n\n👑 Para pendatang baru: {user}" + ], + "approvedText": [ + "🔎 Administrator {admin} mengizinkan masuk atau menambahkan anggota baru ke dalam grup.\n> {user}" + ] + }, + "ms": { + "demoteText": [ + "👀 Oops, nampaknya kita mempunyai penurunan pangkat! 🔎\n\n👑 Siapa yang menurunkan: {admin}\n\n👤 Yang diturunkan: {user}" + ], + "promoteText": [ + "🔎 Selamat datang, pentadbir baru! 👀\n\n👸 Siapa yang mengambil: {admin}\n\n👑 Para penjelajah: {user}" + ], + "approvedText": [ + "🔎 Pentadbir {admin} membenarkan kemasukan atau menambah ahli baru ke dalam kumpulan.\n> {user}" + ] + }, + "hi": { + "demoteText": [ + "👀 ओह, लगता है हमारे पास डेमोशन्स हैं! 🔎\n\n👑 कौन डिमोट कर दिया: {admin}\n\n👤 डेमोटेड: {user}" + ], + "promoteText": [ + "🔎 स्वागत है, नए व्यवस्थापकों! 👀\n\n👸 कौन नियुक्त किया: {admin}\n\n👑 नए लोग: {user}" + ], + "approvedText": [ + "🔎 प्रबंधक {admin} ने प्रवेश की अनुमति या समूह में नए सदस्यों को जोड़ा।\n> {user}" + ] + }, + "de": { + "demoteText": [ + "👀 Hoppla, es scheint, als hätten wir Degradierungen! 🔎\n\n👑 Wer hat degradiert: {admin}\n\n👤 Die Degradiereten: {user}" + ], + "promoteText": [ + "🔎 Willkommen, neue Administratoren! 👀\n\n👸 Wer hat eingestellt: {admin}\n\n👑 Die Neulinge: {user}" + ], + "approvedText": [ + "🔎 Administrator {admin} hat den Eintritt erlaubt oder neue Mitglieder zur Gruppe hinzugefügt.\n> {user}" + ] + }, + "it": { + "demoteText": [ + "👀 Ops, sembra che ci siano state retrocessioni! 🔎\n\n👑 Chi ha degradato: {admin}\n\n👤 I degradati: {user}" + ], + "promoteText": [ + "🔎 Benvenuti, nuovi amministratori! 👀\n\n👸 Chi ha assunto: {admin}\n\n👑 I nuovi arrivati: {user}" + ], + "approvedText": [ + "🔎 L'amministratore {admin} ha permesso l'ingresso o aggiunto nuovi membri al gruppo.\n> {user}" + ] + }, + "ru": { + "demoteText": [ + "👀 Ой, похоже, у нас есть понижения! 🔎\n\n👑 Кто понизил: {admin}\n\n👤 Пониженные: {user}" + ], + "promoteText": [ + "🔎 Добро пожаловать, новые администраторы! 👀\n\n👸 Кто нанял: {admin}\n\n👑 Новички: {user}" + ], + "approvedText": [ + "🔎 Администратор {admin} разрешил вход или добавил новых участников в группу.\n> {user}" + ] + }, + "lat": { + "demoteText": [ + "👀 Heus, videtur nos demotiones habere! 🔎\n\n👑 Quis demovit: {admin}\n\n👤 Demoti: {user}" + ], + "promoteText": [ + "🔎 Salve, administratores novi! 👀\n\n👸 Quis cooptavit: {admin}\n\n👑 Novi advenae: {user}" + ], + "approvedText": [ + "🔎 Administrator {admin} admissionem permisit aut novos membra in gruppo addidit.\n> {user}" + ] + } +} \ No newline at end of file diff --git a/lib/Dialogues/Helper/index.json b/lib/Dialogues/Helper/index.json index 2e44fab..31bb6bc 100644 --- a/lib/Dialogues/Helper/index.json +++ b/lib/Dialogues/Helper/index.json @@ -1,10 +1,10 @@ { "pt": { "User": [ - "📚 _Bem vindo ao menu de ajuda do sistema_ *'{name}'*\n\n🔎 _Esse sistema é responsável por:_ *'{description}'*\n\n❗ _O uso geral disto é feito por:_ *'{usage.general}'*\n\n➖ _Alguns exemplos_ *[Incluindo os para DEVs]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" + "📚 _Bem vindo ao menu de ajuda do sistema_ *'{name}'*\n\n🔎 _Esse sistema é responsável por:_ *'{description}'*\n\n❗ _O uso geral disto é feito por:_ `{usage.general}`\n\n➖ _Alguns exemplos_ *[Incluindo os para DEVs]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" ], "Developer": [ - "📚 _Bem vindo ao menu de ajuda do sistema_ *'{name}'*\n\n🔎 _Esse sistema é responsável por:_ *'{description}'*\n\n❗ _O uso geral disto é feito por:_ *'{usage.general}'*\n\n➖ _Alguns exemplos_ *[Incluindo os para DEVs]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}――――――――――――――――――――――\n➕ *Outros Detalhes [DEVs]* ➕\n――――――――――――――――――――――\n\n🎓 _Feito por:_ *'{developer}'*\n\n📜 _Sob a licença:_ *'{license}'*\n\n👀 _Dicas:_\n{helps}\n↻ _Exports:_ {exports}\n\n🔧 _Módulos:_ {modules}\n\n📁 _Arquivos:_ {files}\n\n⚙️ _Configurações:_ {settings}\n\n✏️ _Parâmetros:_ {parameters}\n\n🗳️ _Resultados:_ {results}" + "📚 _Bem vindo ao menu de ajuda do sistema_ *'{name}'*\n\n🔎 _Esse sistema é responsável por:_ *'{description}'*\n\n❗ _O uso geral disto é feito por:_ `{usage.general}`\n\n➖ _Alguns exemplos_ *[Incluindo os para DEVs]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}――――――――――――――――――――――\n➕ *Outros Detalhes [DEVs]* ➕\n――――――――――――――――――――――\n\n🎓 _Feito por:_ *'{developer}'*\n\n📜 _Sob a licença:_ *'{license}'*\n\n👀 _Dicas:_\n{helps}\n↻ _Exports:_ {exports}\n\n🔧 _Módulos:_ {modules}\n\n📁 _Arquivos:_ {files}\n\n⚙️ _Configurações:_ {settings}\n\n✏️ _Parâmetros:_ {parameters}\n\n🗳️ _Resultados:_ {results}" ], "Restrict": [ "Esse comando é restrito para somente administradores, dono de grupo, meu chefe ou moderadores, quem sabe um dia você entre em uma dessas listas." @@ -36,10 +36,10 @@ }, "ar": { "User": [ - "📚 _مرحبًا بك في قائمة النظام_ *'{name}'*\n\n🔎 _هذا النظام مسؤول عن:_ *'{description}'*\n\n❗ _يتم استخدام هذا بشكل عام من قبل:_ *'{usage.general}'*\n\n➖ _بعض الأمثلة_ *[بما في ذلك للمطورين]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _إضافي:_\n{helps}" + "📚 _مرحبًا بك في قائمة النظام_ *'{name}'*\n\n🔎 _هذا النظام مسؤول عن:_ *'{description}'*\n\n❗ _يتم استخدام هذا بشكل عام من قبل:_ `{usage.general}`\n\n➖ _بعض الأمثلة_ *[بما في ذلك للمطورين]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _إضافي:_\n{helps}" ], "Developer": [ - "📚 _مرحبًا بك في قائمة مساعدة النظام_ *'{name}'*\n\n🔎 _هذا النظام مسؤول عن:_ *'{description}'*\n\n❗ _يتم استخدام هذا بشكل عام من قبل:_ *'{usage.general}'*\n\n➖ _بعض الأمثلة_ *[بما في ذلك للمطورين]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}――――――――――――――――――――――\n➕ *تفاصيل أخرى [للمطورين]* ➕\n――――――――――――――――――――――\n\n🎓 _صمم بواسطة:_ *'{developer}'*\n\n📜 _تحت الترخيص:_ *'{license}'*\n\n👀 _نصائح:_\n{helps}\n↻ _تصدير:_ {exports}\n\n🔧 _الوحدات:_ {modules}\n\n📁 _الملفات:_ {files}\n\n⚙️ _الإعدادات:_ {settings}\n\n✏️ _المعلمات:_ {parameters}\n\n🗳️ _النتائج:_ {results}" + "📚 _مرحبًا بك في قائمة مساعدة النظام_ *'{name}'*\n\n🔎 _هذا النظام مسؤول عن:_ *'{description}'*\n\n❗ _يتم استخدام هذا بشكل عام من قبل:_ `{usage.general}`\n\n➖ _بعض الأمثلة_ *[بما في ذلك للمطورين]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}――――――――――――――――――――――\n➕ *تفاصيل أخرى [للمطورين]* ➕\n――――――――――――――――――――――\n\n🎓 _صمم بواسطة:_ *'{developer}'*\n\n📜 _تحت الترخيص:_ *'{license}'*\n\n👀 _نصائح:_\n{helps}\n↻ _تصدير:_ {exports}\n\n🔧 _الوحدات:_ {modules}\n\n📁 _الملفات:_ {files}\n\n⚙️ _الإعدادات:_ {settings}\n\n✏️ _المعلمات:_ {parameters}\n\n🗳️ _النتائج:_ {results}" ], "Restrict": [ "عذرا,لكن هذا الامر فقط للمشرفين" @@ -74,10 +74,10 @@ "こんにちは、侵入者さん!これは専用エリアで、私と私の上司のような認可されたスタッフだけが許可されています。他の誰もここに立ち入ることはできません!🌌🛸" ], "User": [ - "📚 _システム ヘルプ メニューへようこそ_ *'{name}'*\n\n🔎 _このシステムの責任:_ *'{description}'*\n\n❗ _O 一般的な使用これの作成者:_ *'{usage.general}'*\n\n➖ _いくつかの例_ *[DEV 用のものを含む]*_:_\n{usage.examples}\n❓ _エイリアス:_\n{alias}\n\n👀 _+:_\n{helps}" + "📚 _システム ヘルプ メニューへようこそ_ *'{name}'*\n\n🔎 _このシステムの責任:_ *'{description}'*\n\n❗ _O 一般的な使用これの作成者:_ `{usage.general}`\n\n➖ _いくつかの例_ *[DEV 用のものを含む]*_:_\n{usage.examples}\n❓ _エイリアス:_\n{alias}\n\n👀 _+:_\n{helps}" ], "Developer": [ - "📚 _システム ヘルプ メニューへようこそ_ *'{name}'*\n\n🔎 _このシステムの責任:_ *'{description}'*\n\n❗ _O 一般的な使用これの作成者:_ *'{usage.general}'*\n\n➖ _いくつかの例_ *[DEV 用のものを含む]*_:_\n{usage.examples}\n❓ _エイリアス:_\n{alias}――――――――――――――――――――――\n➕ *その他の詳細 [DEVs]* ➕\n―――――――――――――――――――――――――\n\n🎓 _Made By:_ *'{developer}'*\n\n📜 _ライセンス:_ *'{license}'*\n\n👀 _ヒント:_\n{helps}\n↻ _エクスポート:_ {exports}\n\n🔧 _モジュール:_ {modules}\n\n📁 _ファイル:_ {files}\n\n⚙️ _設定:_ {settings}\n\n✏️ _パラメーター:_ {parameters}\n\n🗳️ _結果:_ {results}" + "📚 _システム ヘルプ メニューへようこそ_ *'{name}'*\n\n🔎 _このシステムの責任:_ *'{description}'*\n\n❗ _O 一般的な使用これの作成者:_ `{usage.general}`\n\n➖ _いくつかの例_ *[DEV 用のものを含む]*_:_\n{usage.examples}\n❓ _エイリアス:_\n{alias}――――――――――――――――――――――\n➕ *その他の詳細 [DEVs]* ➕\n―――――――――――――――――――――――――\n\n🎓 _Made By:_ *'{developer}'*\n\n📜 _ライセンス:_ *'{license}'*\n\n👀 _ヒント:_\n{helps}\n↻ _エクスポート:_ {exports}\n\n🔧 _モジュール:_ {modules}\n\n📁 _ファイル:_ {files}\n\n⚙️ _設定:_ {settings}\n\n✏️ _パラメーター:_ {parameters}\n\n🗳️ _結果:_ {results}" ], "Restrict": [ "このコマンドは、管理者、グループ所有者、私の上司、またはモデレーターのみに制限されています。いつか、これらのリストの 1 つに入るかもしれません。" @@ -109,10 +109,10 @@ "Hello intruder! This is an exclusive area, only for authorized personnel - like me and my bosses, no one else is allowed here! 🌌🛸" ], "User": [ - "📚 _Welcome to the system help menu_ *'{name}'*\n\n🔎 _This system is responsible for:_ *'{description}'*\n\n❗ _O general use of this is made by:_ *'{usage.general}'*\n\n➖ _Some examples_ *[Including those for DEVs]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" + "📚 _Welcome to the system help menu_ *'{name}'*\n\n🔎 _This system is responsible for:_ *'{description}'*\n\n❗ _O general use of this is made by:_ `{usage.general}`\n\n➖ _Some examples_ *[Including those for DEVs]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" ], "Developer": [ - "📚 _Welcome to the system help menu_ *'{name}'*\n\n🔎 _This system is responsible for:_ *'{description}'*\n\n❗ _O general use of this is made by:_ *'{usage.general}'*\n\n➖ _Some examples_ *[Including those for DEVs]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}―――――――――――――――――――――――\n➕ *Other Details [DEVs]* ➕\n―――――――――――――――――――――――\n\n🎓 _Made By:_ *'{developer}'*\n\n📜 _Under License:_ *'{license}'*\n\n👀 _Tips:_\n{helps}\n↻ _Exports:_ {exports}\n\n🔧 _Modules:_ {modules}\n\n📁 _Files:_ {files}\n\n⚙️ _Settings:_ {settings}\n\n✏️ _Parameters:_ {parameters}\n\n🗳️ _Results:_ {results}" + "📚 _Welcome to the system help menu_ *'{name}'*\n\n🔎 _This system is responsible for:_ *'{description}'*\n\n❗ _O general use of this is made by:_ `{usage.general}`\n\n➖ _Some examples_ *[Including those for DEVs]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}―――――――――――――――――――――――\n➕ *Other Details [DEVs]* ➕\n―――――――――――――――――――――――\n\n🎓 _Made By:_ *'{developer}'*\n\n📜 _Under License:_ *'{license}'*\n\n👀 _Tips:_\n{helps}\n↻ _Exports:_ {exports}\n\n🔧 _Modules:_ {modules}\n\n📁 _Files:_ {files}\n\n⚙️ _Settings:_ {settings}\n\n✏️ _Parameters:_ {parameters}\n\n🗳️ _Results:_ {results}" ], "Restrict": [ "This command is restricted to only admins, group owner, my boss or moderators, maybe one day you'll get on one of those lists." @@ -144,10 +144,10 @@ "Salut intrus ! C'est une zone exclusive, réservée au personnel autorisé - comme moi et mes patrons, personne d'autre n'est autorisé ici ! 🌌🛸" ], "User": [ - "📚 _Bienvenue dans le menu d'aide du système_ *'{name}'*\n\n🔎 _Ce système est responsable de:_ *'{description}'*\n\n❗ _O utilisation générale de ceci est fait par:_ *'{usage.general}'*\n\n➖ _Quelques exemples_ *[Y compris ceux pour les DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" + "📚 _Bienvenue dans le menu d'aide du système_ *'{name}'*\n\n🔎 _Ce système est responsable de:_ *'{description}'*\n\n❗ _O utilisation générale de ceci est fait par:_ `{usage.general}`\n\n➖ _Quelques exemples_ *[Y compris ceux pour les DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" ], "Developer": [ - "📚 _Bienvenue dans le menu d'aide du système_ *'{name}'*\n\n🔎 _Ce système est responsable de:_ *'{description}'*\n\n❗ _O utilisation générale de cela est fait par:_ *'{usage.general}'*\n\n➖ _Quelques exemples_ *[Y compris ceux pour les DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}―――――――――――――――――――――――\n➕ *Autres détails [DEV]* ➕\n―――――――――――――――――――――――\n\n🎓 _Fabriqué par:_ *'{developer}'*\n\n📜 _Sous licence:_ *'{license}'*\n\n👀 _Conseils:_\n{helps}\n↻ _Exportations:_ {exports}\n\n🔧 _Modules:_ {modules}\n\n📁 _Fichiers :_ {files}\n\n⚙️ _Paramètres:_ {settings}\n\n✏️ _Additional:_ {parameters}\n\n🗳️ _Résultats:_ {results}" + "📚 _Bienvenue dans le menu d'aide du système_ *'{name}'*\n\n🔎 _Ce système est responsable de:_ *'{description}'*\n\n❗ _O utilisation générale de cela est fait par:_ `{usage.general}`\n\n➖ _Quelques exemples_ *[Y compris ceux pour les DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}―――――――――――――――――――――――\n➕ *Autres détails [DEV]* ➕\n―――――――――――――――――――――――\n\n🎓 _Fabriqué par:_ *'{developer}'*\n\n📜 _Sous licence:_ *'{license}'*\n\n👀 _Conseils:_\n{helps}\n↻ _Exportations:_ {exports}\n\n🔧 _Modules:_ {modules}\n\n📁 _Fichiers :_ {files}\n\n⚙️ _Paramètres:_ {settings}\n\n✏️ _Additional:_ {parameters}\n\n🗳️ _Résultats:_ {results}" ], "Restrict": [ "Cette commande est réservée aux seuls administrateurs, propriétaires de groupe, mon patron ou modérateurs, peut-être qu'un jour vous serez sur l'une de ces listes." @@ -179,10 +179,10 @@ "¡Hola intruso! Esta es un área exclusiva, solo para personal autorizado, como yo y mis jefes, ¡nadie más tiene permitido estar aquí! 🌌🛸" ], "User": [ - "📚 _Bienvenido al menú de ayuda del sistema_ *'{name}'*\n\n🔎 _Este sistema es responsable de:_ *'{description}'*\n\n❗ _O uso general de esto está hecho por:_ *'{usage.general}'*\n\n➖ _Algunos ejemplos_ *[Incluyendo aquellos para DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" + "📚 _Bienvenido al menú de ayuda del sistema_ *'{name}'*\n\n🔎 _Este sistema es responsable de:_ *'{description}'*\n\n❗ _O uso general de esto está hecho por:_ `{usage.general}`\n\n➖ _Algunos ejemplos_ *[Incluyendo aquellos para DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" ], "Developer": [ - "📚 _Bienvenido al menú de ayuda del sistema_ *'{name}'*\n\n🔎 _Este sistema es responsable de:_ *'{description}'*\n\n❗ _O uso general de esto está hecho por:_ *'{usage.general}'*\n\n➖ _Algunos ejemplos_ *[Incluyendo aquellos para DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n――――――――――――――――――――――――\n➕ *Otros detalles [DEV]* ➕\n―――――――――――――――――――――――\n\n🎓 _Hecho por:_ *'{developer}'*\n\n📜 _Bajo licencia:_ *'{license}'*\n\n👀 _Consejos:_\n{helps}\n↻ _Exportaciones:_ {exports}\n\n🔧 _Módulos:_ {modules}\n\n📁 _Archivos:_ {files}\n\n⚙️ _Configuración:_ {settings}\n\n✏️ _Adicional:_ {parameters}\n\n🗳️ _Resultados:_ {results}" + "📚 _Bienvenido al menú de ayuda del sistema_ *'{name}'*\n\n🔎 _Este sistema es responsable de:_ *'{description}'*\n\n❗ _O uso general de esto está hecho por:_ `{usage.general}`\n\n➖ _Algunos ejemplos_ *[Incluyendo aquellos para DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n――――――――――――――――――――――――\n➕ *Otros detalles [DEV]* ➕\n―――――――――――――――――――――――\n\n🎓 _Hecho por:_ *'{developer}'*\n\n📜 _Bajo licencia:_ *'{license}'*\n\n👀 _Consejos:_\n{helps}\n↻ _Exportaciones:_ {exports}\n\n🔧 _Módulos:_ {modules}\n\n📁 _Archivos:_ {files}\n\n⚙️ _Configuración:_ {settings}\n\n✏️ _Adicional:_ {parameters}\n\n🗳️ _Resultados:_ {results}" ], "Restrict": [ "Este comando está restringido solo a los administradores, al propietario del grupo, a mi jefe o a los moderadores, tal vez algún día aparezcas en una de esas listas." @@ -214,10 +214,10 @@ "Halo penyusup! Ini adalah area eksklusif, hanya untuk personel yang diotorisasi - seperti saya dan bos-bos saya, tidak ada orang lain yang diizinkan di sini! 🌌🛸" ], "User": [ - "📚 _Selamat datang di menu bantuan sistem_ *'{name}'*\n\n🔎 _Sistem ini bertanggung jawab untuk:_ *'{description}'*\n\n❗ _Penggunaan umum ini dilakukan oleh:_ *'{usage.general}'*\n\n➖ _Beberapa contoh_ *[Termasuk untuk DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" + "📚 _Selamat datang di menu bantuan sistem_ *'{name}'*\n\n🔎 _Sistem ini bertanggung jawab untuk:_ *'{description}'*\n\n❗ _Penggunaan umum ini dilakukan oleh:_ `{usage.general}`\n\n➖ _Beberapa contoh_ *[Termasuk untuk DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" ], "Developer": [ - "📚 _Selamat datang di menu bantuan sistem_ *'{name}'*\n\n🔎 _Sistem ini bertanggung jawab untuk:_ *'{description}'*\n\n❗ _Penggunaan umum ini dilakukan oleh:_ *'{usage.general}'*\n\n➖ _Beberapa contoh_ *[Termasuk untuk DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}――――――――――――――――――――――――\n➕ *Detail Lainnya [DEV]* ➕\n―――――――――――――――――――――――\n\n🎓 _Dibuat oleh :_ *'{developer}'*\n\n📜 _Di bawah lisensi:_ *'{license}'*\n\n👀 _Kiat:_\n{helps}\n↻ _Ekspor:_ {exports}\n\n🔧 _Modul:_ {modules}\n\n📁 _File:_ {files}\n\n⚙️ _Konfigurasi:_ {settings}\n\n✏️ _Parameter:_ {parameters}\n\n🗳️ _Hasil:_ {results}" + "📚 _Selamat datang di menu bantuan sistem_ *'{name}'*\n\n🔎 _Sistem ini bertanggung jawab untuk:_ *'{description}'*\n\n❗ _Penggunaan umum ini dilakukan oleh:_ `{usage.general}`\n\n➖ _Beberapa contoh_ *[Termasuk untuk DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}――――――――――――――――――――――――\n➕ *Detail Lainnya [DEV]* ➕\n―――――――――――――――――――――――\n\n🎓 _Dibuat oleh :_ *'{developer}'*\n\n📜 _Di bawah lisensi:_ *'{license}'*\n\n👀 _Kiat:_\n{helps}\n↻ _Ekspor:_ {exports}\n\n🔧 _Modul:_ {modules}\n\n📁 _File:_ {files}\n\n⚙️ _Konfigurasi:_ {settings}\n\n✏️ _Parameter:_ {parameters}\n\n🗳️ _Hasil:_ {results}" ], "Restrict": [ "Perintah ini dibatasi hanya untuk admin, pemilik grup, atasan atau moderator saya, mungkin suatu hari Anda akan masuk ke salah satu daftar tersebut." @@ -249,10 +249,10 @@ "Hai penyusup! Ini adalah kawasan eksklusif, hanya untuk kakitangan yang dibenarkan - seperti saya dan bos-bos saya, tidak sesiapa yang dibenarkan di sini! 🌌🛸" ], "User": [ - "📚 _Selamat datang ke menu bantuan sistem_ *'{name}'*\n\n🔎 _Sistem ini bertanggungjawab untuk:_ *'{description}'*\n\n❗ _Penggunaan umum ini dilakukan oleh:_ *'{usage.general}'*\n\n➖ _Beberapa contoh_ *[Termasuk yang untuk DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" + "📚 _Selamat datang ke menu bantuan sistem_ *'{name}'*\n\n🔎 _Sistem ini bertanggungjawab untuk:_ *'{description}'*\n\n❗ _Penggunaan umum ini dilakukan oleh:_ `{usage.general}`\n\n➖ _Beberapa contoh_ *[Termasuk yang untuk DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" ], "Developer": [ - "📚 _Selamat datang ke menu bantuan sistem_ *'{name}'*\n\n🔎 _Sistem ini bertanggungjawab untuk:_ *'{description}'*\n\n❗ _Penggunaan umum ini dilakukan oleh:_ *'{usage.general}'*\n\n➖ _Beberapa contoh_ *[Termasuk yang untuk DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}――――――――――――――――――――――――\n➕ *Butiran Lain [DEV]* ➕\n―――――――――――――――――――――――\n\n🎓 _Dibuat oleh :_ *'{developer}'*\n\n📜 _Di bawah lesen:_ *'{license}'*\n\n👀 _Petua:_\n{helps}\n↻ _Eksport:_ {exports}\n\n🔧 _Modul:_ {modules}\n\n📁 _Fail:_ {files}\n\n⚙️ _Tatarajah:_ {settings}\n\n✏️ _Parameter:_ {parameters}\n\n🗳️ _Hasil:_ {results}" + "📚 _Selamat datang ke menu bantuan sistem_ *'{name}'*\n\n🔎 _Sistem ini bertanggungjawab untuk:_ *'{description}'*\n\n❗ _Penggunaan umum ini dilakukan oleh:_ `{usage.general}`\n\n➖ _Beberapa contoh_ *[Termasuk yang untuk DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}――――――――――――――――――――――――\n➕ *Butiran Lain [DEV]* ➕\n―――――――――――――――――――――――\n\n🎓 _Dibuat oleh :_ *'{developer}'*\n\n📜 _Di bawah lesen:_ *'{license}'*\n\n👀 _Petua:_\n{helps}\n↻ _Eksport:_ {exports}\n\n🔧 _Modul:_ {modules}\n\n📁 _Fail:_ {files}\n\n⚙️ _Tatarajah:_ {settings}\n\n✏️ _Parameter:_ {parameters}\n\n🗳️ _Hasil:_ {results}" ], "Restrict": [ "Arahan ini terhad kepada hanya pentadbir, pemilik kumpulan, bos saya atau penyederhana, mungkin suatu hari nanti anda akan mendapat salah satu daripada senarai tersebut." @@ -284,10 +284,10 @@ "नमस्कार अतिक्रमणकर्ता! यह एक विशेष क्षेत्र है, केवल अधिकृत कर्मचारियों के लिए - जैसे मुझे और मेरे बॉस, यहां किसी को भी आने की अनुमति नहीं है! 🌌🛸" ], "User": [ - "📚 _सिस्टम सहायता मेनू में आपका स्वागत है_ *'{name}'*\n\n🔎 _यह सिस्टम इसके लिए ज़िम्मेदार है:_ *'{description}'*\n\n❗ _इसका सामान्य उपयोग इसके द्वारा किया जाता है:_ *'{usage.general}'*\n\n➖ _कुछ उदाहरण_ *[DEVs सहित]*_:_\n{usage.examples}\n❓ _उपनाम:_\n{alias}\n\n👀 _Extra:_\n{helps}" + "📚 _सिस्टम सहायता मेनू में आपका स्वागत है_ *'{name}'*\n\n🔎 _यह सिस्टम इसके लिए ज़िम्मेदार है:_ *'{description}'*\n\n❗ _इसका सामान्य उपयोग इसके द्वारा किया जाता है:_ `{usage.general}`\n\n➖ _कुछ उदाहरण_ *[DEVs सहित]*_:_\n{usage.examples}\n❓ _उपनाम:_\n{alias}\n\n👀 _Extra:_\n{helps}" ], "Developer": [ - "📚 _सिस्टम सहायता मेनू में आपका स्वागत है_ *'{name}'*\n\n🔎 _यह सिस्टम इसके लिए ज़िम्मेदार है:_ *'{description}'*\n\n❗ _इसका सामान्य उपयोग इसके द्वारा किया जाता है:_ *'{usage.general}'*\n\n➖ _कुछ उदाहरण_ *[DEVs के लिए उन्हें शामिल करते हुए]*_:_\n{usage.examples}\n❓ _उपनाम:_\n{alias}――――――――――――――――――――――――\n➕ *अन्य विवरण [DEVs]* ➕\n―――――――――――――――――――――――\n\n _द्वारा निर्मित :_ *'{developer}'*\n\n📜 _अंडर लाइसेंस:_ *'{license}'*\n\n👀 _टिप्स:_\n{helps}\n↻ _Exports:_ {exports}\n\n🔧 _मॉड्यूल:_ {modules}\n\n📁 _फ़ाइलें:_ {files}\n\n⚙️ _कॉन्फ़िगरेशन:_ {settings}\n\n✏️ _पैरामीटर:_ {parameters}\n\n🗳️ _परिणाम:_ {results}" + "📚 _सिस्टम सहायता मेनू में आपका स्वागत है_ *'{name}'*\n\n🔎 _यह सिस्टम इसके लिए ज़िम्मेदार है:_ *'{description}'*\n\n❗ _इसका सामान्य उपयोग इसके द्वारा किया जाता है:_ `{usage.general}`\n\n➖ _कुछ उदाहरण_ *[DEVs के लिए उन्हें शामिल करते हुए]*_:_\n{usage.examples}\n❓ _उपनाम:_\n{alias}――――――――――――――――――――――――\n➕ *अन्य विवरण [DEVs]* ➕\n―――――――――――――――――――――――\n\n _द्वारा निर्मित :_ *'{developer}'*\n\n📜 _अंडर लाइसेंस:_ *'{license}'*\n\n👀 _टिप्स:_\n{helps}\n↻ _Exports:_ {exports}\n\n🔧 _मॉड्यूल:_ {modules}\n\n📁 _फ़ाइलें:_ {files}\n\n⚙️ _कॉन्फ़िगरेशन:_ {settings}\n\n✏️ _पैरामीटर:_ {parameters}\n\n🗳️ _परिणाम:_ {results}" ], "Restrict": [ "यह आदेश केवल व्यवस्थापकों, समूह के स्वामी, मेरे बॉस या मॉडरेटर तक ही सीमित है, हो सकता है कि एक दिन आप उन सूचियों में से किसी एक पर पहुंचें।" @@ -319,10 +319,10 @@ "Hallo Eindringling! Dies ist ein exklusiver Bereich, nur für autorisiertes Personal - wie mich und meine Chefs, hier darf niemand sonst sein! 🌌🛸" ], "User": [ - "📚 _Willkommen im Hilfemenü des Systems_ *'{name}'*\n\n🔎 _Dieses System ist verantwortlich für:_ *'{description}'*\n\n❗ _Die allgemeine Verwendung erfolgt durch:_ *'{usage.general}'*\n\n➖ _Einige Beispiele_ *[einschließlich derer für DEVs]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" + "📚 _Willkommen im Hilfemenü des Systems_ *'{name}'*\n\n🔎 _Dieses System ist verantwortlich für:_ *'{description}'*\n\n❗ _Die allgemeine Verwendung erfolgt durch:_ `{usage.general}`\n\n➖ _Einige Beispiele_ *[einschließlich derer für DEVs]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" ], "Developer": [ - "📚 _Willkommen im Hilfemenü des Systems_ *'{name}'*\n\n🔎 _Dieses System ist verantwortlich für:_ *'{description}'*\n\n❗ _Die allgemeine Verwendung erfolgt durch:_ *'{usage.general}'*\n\n➖ _Einige Beispiele_ *[Einschließlich derer für DEVs]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}――――――――――――――――――――――――\n➕ *Andere Details [DEVs]* ➕\n―――――――――――――――――――――――\n\n🎓 :_ *'{developer}'*\n\n📜 _Unter Lizenz:_ *'{license}'*\n\n👀 _Tipps:_\n{helps}\n↻ _Exporte:_ {exports}\n\n🔧 _Module:_ {modules}\n\n📁 _Dateien:_ {files}\n\n⚙️ _Konfigurationen:_ {settings}\n\n✏️ _Parameter:_ {parameters}\n\n🗳️ _Ergebnisse:_ {results}" + "📚 _Willkommen im Hilfemenü des Systems_ *'{name}'*\n\n🔎 _Dieses System ist verantwortlich für:_ *'{description}'*\n\n❗ _Die allgemeine Verwendung erfolgt durch:_ `{usage.general}`\n\n➖ _Einige Beispiele_ *[Einschließlich derer für DEVs]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}――――――――――――――――――――――――\n➕ *Andere Details [DEVs]* ➕\n―――――――――――――――――――――――\n\n🎓 :_ *'{developer}'*\n\n📜 _Unter Lizenz:_ *'{license}'*\n\n👀 _Tipps:_\n{helps}\n↻ _Exporte:_ {exports}\n\n🔧 _Module:_ {modules}\n\n📁 _Dateien:_ {files}\n\n⚙️ _Konfigurationen:_ {settings}\n\n✏️ _Parameter:_ {parameters}\n\n🗳️ _Ergebnisse:_ {results}" ], "Restrict": [ "Dieser Befehl ist nur auf Administratoren, Gruppenbesitzer, meinen Chef oder Moderatoren beschränkt, vielleicht kommst du eines Tages auf eine dieser Listen." @@ -354,10 +354,10 @@ "Ciao intruso! Questa è un'area esclusiva, solo per il personale autorizzato - come me e i miei capi, qui non è permesso a nessun altro di entrare! 🌌🛸" ], "User": [ - "📚 _Benvenuto nel menu di aiuto del sistema_ *'{name}'*\n\n🔎 _Questo sistema è responsabile di:_ *'{description}'*\n\n❗ _L'uso generale di questo è fatto da:_ *'{usage.general}'*\n\n➖ _Alcuni esempi_ *[Inclusi quelli per DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" + "📚 _Benvenuto nel menu di aiuto del sistema_ *'{name}'*\n\n🔎 _Questo sistema è responsabile di:_ *'{description}'*\n\n❗ _L'uso generale di questo è fatto da:_ `{usage.general}`\n\n➖ _Alcuni esempi_ *[Inclusi quelli per DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" ], "Developer": [ - "📚 _Benvenuto nel menu di aiuto del sistema_ *'{name}'*\n\n🔎 _Questo sistema è responsabile di:_ *'{description}'*\n\n❗ _L'uso generale di questo è fatto da:_ *'{usage.general}'*\n\n➖ _Alcuni esempi_ *[Inclusi quelli per DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}――――――――――――――――――――――――\n➕ *Altre informazioni [DEV]* ➕\n――――――――――――――――――――――――\n\n🎓 _Made by :_ *'{developer}'*\n\n📜 _Sotto licenza:_ *'{license}'*\n\n👀 _Suggerimenti:_\n{helps}\n↻ _Esportazioni:_ {exports}\n\n🔧 _Modules:_ {modules}\n\n📁 _Files:_ {files}\n\n⚙️ _Configurations:_ {settings}\n\n✏️ _Parameters:_ {parameters}\n\n🗳️ _Results:_ {results}" + "📚 _Benvenuto nel menu di aiuto del sistema_ *'{name}'*\n\n🔎 _Questo sistema è responsabile di:_ *'{description}'*\n\n❗ _L'uso generale di questo è fatto da:_ `{usage.general}`\n\n➖ _Alcuni esempi_ *[Inclusi quelli per DEV]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}――――――――――――――――――――――――\n➕ *Altre informazioni [DEV]* ➕\n――――――――――――――――――――――――\n\n🎓 _Made by :_ *'{developer}'*\n\n📜 _Sotto licenza:_ *'{license}'*\n\n👀 _Suggerimenti:_\n{helps}\n↻ _Esportazioni:_ {exports}\n\n🔧 _Modules:_ {modules}\n\n📁 _Files:_ {files}\n\n⚙️ _Configurations:_ {settings}\n\n✏️ _Parameters:_ {parameters}\n\n🗳️ _Results:_ {results}" ], "Restrict": [ "Questo comando è limitato solo agli amministratori, al proprietario del gruppo, al mio capo o ai moderatori, forse un giorno entrerai in una di quelle liste." @@ -389,10 +389,10 @@ "Привет, нарушитель! Это эксклюзивная зона, только для авторизованного персонала - как я и мои начальники, никто другой здесь не допускается! 🌌🛸" ], "User": [ - "📚 _Добро пожаловать в меню справки системы_ *'{name}'*\n\n🔎 _Эта система отвечает за:_ *'{description}'*\n\n❗ _Общее использование этого осуществляется:_ *'{usage.general}'*\n\n➖ _Некоторые примеры_ *[В том числе для DEV]*_:_\n{usage.examples}\n❓ _Псевдоним:_\n{alias}\n\n👀 _Extra:_\n{helps}" + "📚 _Добро пожаловать в меню справки системы_ *'{name}'*\n\n🔎 _Эта система отвечает за:_ *'{description}'*\n\n❗ _Общее использование этого осуществляется:_ `{usage.general}`\n\n➖ _Некоторые примеры_ *[В том числе для DEV]*_:_\n{usage.examples}\n❓ _Псевдоним:_\n{alias}\n\n👀 _Extra:_\n{helps}" ], "Developer": [ - "📚 _Добро пожаловать в меню справки системы_ *'{name}'*\n\n🔎 _Эта система отвечает за:_ *'{description}'*\n\n❗ _Общее использование этого осуществляется:_ *'{usage.general}'*\n\n➖ _Некоторые примеры_ *[В том числе для DEV]*_:_\n{usage.examples}\n❓ _Псевдоним:_\n{alias}――――――――――――――――――――――――\n➕ *Другие сведения [DEVs]* ➕\n――――――――――――――――――――――――\n\n🎓 _Сделано :_ *'{developer}'*\n\n📜 _Под лицензией:_ *'{license}'*\n\n👀 _Советы:_\n{helps}\n↻ _Экспорт:_ {exports}\n\n🔧 _Modules:_ {modules}\n\n📁 _Files:_ {files}\n\n⚙️ _Configurations:_ {settings}\n\n✏️ _Parameters:_ {parameters}\n\n🗳️ _Results:_ {results}" + "📚 _Добро пожаловать в меню справки системы_ *'{name}'*\n\n🔎 _Эта система отвечает за:_ *'{description}'*\n\n❗ _Общее использование этого осуществляется:_ `{usage.general}`\n\n➖ _Некоторые примеры_ *[В том числе для DEV]*_:_\n{usage.examples}\n❓ _Псевдоним:_\n{alias}――――――――――――――――――――――――\n➕ *Другие сведения [DEVs]* ➕\n――――――――――――――――――――――――\n\n🎓 _Сделано :_ *'{developer}'*\n\n📜 _Под лицензией:_ *'{license}'*\n\n👀 _Советы:_\n{helps}\n↻ _Экспорт:_ {exports}\n\n🔧 _Modules:_ {modules}\n\n📁 _Files:_ {files}\n\n⚙️ _Configurations:_ {settings}\n\n✏️ _Parameters:_ {parameters}\n\n🗳️ _Results:_ {results}" ], "Restrict": [ "Эта команда доступна только администраторам, владельцу группы, моему начальнику или модераторам. Возможно, однажды вы присоединитесь к одному из этих списков..." @@ -424,10 +424,10 @@ "Salve intruso! Hic est area exclusiva, tantum pro personali auctoritato - sicut ego et mei dominis, nemo alius hic admittitur! 🌌🛸" ], "User": [ - "📚 _Welcome to the system help menu_ *'{name}'*\n\n🔎 _Haec ratio responsabilis est:_ *'{description}'*\n\n❗ _ Communis usus huius rei ab:_ *'{usage.general}'*\n\n➖ _Quaedam exempla_ *[Including his for DEVs]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" + "📚 _Welcome to the system help menu_ *'{name}'*\n\n🔎 _Haec ratio responsabilis est:_ *'{description}'*\n\n❗ _ Communis usus huius rei ab:_ `{usage.general}`\n\n➖ _Quaedam exempla_ *[Including his for DEVs]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}\n\n👀 _Extra:_\n{helps}" ], "Developer": [ - "📚 _Welcome to the system help menu_ *'{name}'*\n\n🔎 _Haec ratio responsabilis est:_ *'{description}'*\n\n❗ _ Communis usus huius rei ab:_ *'{usage.general}'*\n\n➖ _Quaedam exempla_ *[Including his for DEVs]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}――――――――――――――――――――――――\n➕*Alia Details [DEVs]*\n――――――――――――――――――――――――\n\n🎓 _Made by :_ *'{developer}'*\n\n📜 _Sub licentia:_ *'{license}'*\n\n👀 _Tips:_\n{helps}\n↻ _Exports:_ {exports}\n\n🔧 _Modules:_ {modules}\n\n📁 _Files:_ {files}\n\n⚙️ _Configurationes:_ {settings}\n\n✏️ _Parameters:_ {parameters}\n\n🗳️ _Results:_ {results}" + "📚 _Welcome to the system help menu_ *'{name}'*\n\n🔎 _Haec ratio responsabilis est:_ *'{description}'*\n\n❗ _ Communis usus huius rei ab:_ `{usage.general}`\n\n➖ _Quaedam exempla_ *[Including his for DEVs]*_:_\n{usage.examples}\n❓ _Alias:_\n{alias}――――――――――――――――――――――――\n➕*Alia Details [DEVs]*\n――――――――――――――――――――――――\n\n🎓 _Made by :_ *'{developer}'*\n\n📜 _Sub licentia:_ *'{license}'*\n\n👀 _Tips:_\n{helps}\n↻ _Exports:_ {exports}\n\n🔧 _Modules:_ {modules}\n\n📁 _Files:_ {files}\n\n⚙️ _Configurationes:_ {settings}\n\n✏️ _Parameters:_ {parameters}\n\n🗳️ _Results:_ {results}" ], "Restrict": [ "Hoc mandatum restringitur ad solum admins, dominus coetus, dominus meus vel moderator, fortasse unus dies in unum ex illis tabulas habebitis." diff --git a/lib/Functions/Listener/index.js b/lib/Functions/Listener/index.js index 80c4697..8bb711c 100644 --- a/lib/Functions/Listener/index.js +++ b/lib/Functions/Listener/index.js @@ -62,8 +62,12 @@ function createListener(kill, saveCreds, genSession, startOptions, indexlaunch, console.log(Indexer('color').echo('----------- [START - OK] -----------', 'brightGreen').value); } + /* Define a object e o tempo atual */ + const messageObject = events['messages.upsert']; + messageObject.currentTimeDate = Date.now(); + /* Envia a mensagem para formatação e funções posteriores */ - await Indexer('commands').cmds(kill, events['messages.upsert']); + await Indexer('commands').cmds(kill, messageObject); } }); diff --git a/lib/Functions/Options/index.js b/lib/Functions/Options/index.js index f4addc3..c6145b7 100644 --- a/lib/Functions/Options/index.js +++ b/lib/Functions/Options/index.js @@ -302,7 +302,8 @@ function generateArgs() { /* Se for pairing code */ if (config.pairingCode.value) { /* Define o navegador */ - startOptions.browser = ['Chrome (MacOS)', '', '']; + /* ATIVE SE A CONFIG PADRÃO DO BAILEYS NÃO FUNCIONAR NATURALMENTE! */ + /* startOptions.browser = ['Chrome (MacOS)', '', '']; */ } /* Define o sucesso */ diff --git a/lib/Functions/Others/index.js b/lib/Functions/Others/index.js index 92e2226..1e7edfb 100644 --- a/lib/Functions/Others/index.js +++ b/lib/Functions/Others/index.js @@ -149,7 +149,7 @@ function replaceSystem(obj, match, key) { const resRed = result[onmed] ?? 'N/A'; /* Formata a Array, une e retorna */ - if (Array.isArray(resRed)) return resRed.map((val, idx) => `*${idx}.* _'${val}'_\n`).join(''); + if (Array.isArray(resRed)) return resRed.map((val, idx) => `> *${idx}.* _'${val}'_\n`).join(''); /* Se for Object */ if (typeof resRed === 'object' && resRed !== null && !!resRed && parsedKeys.length === idlen + 1) { @@ -166,21 +166,21 @@ function replaceSystem(obj, match, key) { /* Se for outra Object-in-Object */ if (typeof resRed[val][dat][fns] === 'object' && resRed[val][dat][fns] !== null && !!resRed[val][dat][fns]) { /* Retorna outra OIB com join */ - return Object.keys(resRed[val][dat][fns]).map((ttd) => `\n*${idx}.* _⟶ '${onmed}' → '${val}' → '${dat}' → '${fns}' → '${ttd}' →_ *'${resRed[val][dat][fns][ttd]}'*`).join(''); + return Object.keys(resRed[val][dat][fns]).map((ttd) => `\n> *${idx}.* _⟶ '${onmed}' → '${val}' → '${dat}' → '${fns}' → '${ttd}' →_ *'${resRed[val][dat][fns][ttd]}'*`).join(''); } /* Retorna a OIB padrão */ - return `\n*${idx}.* _⟶ '${onmed}' → '${val}' → '${dat}' → '${fns}' →_ → *'${resRed[val][dat][fns]}'*`; + return `\n> *${idx}.* _⟶ '${onmed}' → '${val}' → '${dat}' → '${fns}' →_ → *'${resRed[val][dat][fns]}'*`; }).join(''); } /* Retorna a OIO padrão */ - return `\n*${idx}.* _⟶ '${onmed}' → '${val}' → '${dat}' →_ *'${resRed[val][dat]}'*`; + return `\n> *${idx}.* _⟶ '${onmed}' → '${val}' → '${dat}' →_ *'${resRed[val][dat]}'*`; }).join(''); } /* Se não, retorna a Object padrão */ - return `\n*${idx}.* _⟶ '${onmed}' → '${val}' →_ *'${resRed[val]}'*`; + return `\n> *${idx}.* _⟶ '${onmed}' → '${val}' →_ *'${resRed[val]}'*`; }).join(''); } @@ -196,7 +196,7 @@ function replaceSystem(obj, match, key) { } /* Função base para a findProperty, NÃO DEFINA NA ENV */ -function locateObjectKey(obj, keys, types) { +function locateObjectKey(obj, keys, types, ignores) { /* Define o resultado padrão */ let keyInObject = false; @@ -205,14 +205,14 @@ function locateObjectKey(obj, keys, types) { /* Se já tiver achado o valor */ if (!keyInObject) { /* Se a object já for o valor requisitado */ - if (keys.includes(prop) && types.includes(typeof obj[prop])) { + if (keys.includes(prop) && types.includes(typeof obj[prop]) && !ignores.includes(prop)) { /* Retorna a Object */ keyInObject = obj[prop]; /* Verifica se é um objeto */ - } else if (typeof obj[prop] === 'object') { + } else if (typeof obj[prop] === 'object' && !ignores.includes(prop)) { /* Executa novamente com o novo objeto */ - keyInObject = locateObjectKey(obj[prop], keys, types); + keyInObject = locateObjectKey(obj[prop], keys, types, ignores); } } @@ -229,6 +229,7 @@ function findProperty( myObject = envInfo.functions.findkey.arguments.myObject.value, findKey = envInfo.functions.findkey.arguments.findKey.value, typeKey = envInfo.functions.findkey.arguments.typeKey.value, + ignoreKeys = envInfo.functions.ignoreKeys.arguments.typeKey.value, ) { /* Define um resultado padrão */ envInfo.results.value = false; @@ -239,9 +240,9 @@ function findProperty( /* Try-Catch para lidar com possíveis erros */ try { /* Executa apenas se os tipos estiverem corretos */ - if (typeof myObject === 'object' && Array.isArray(findKey) && Array.isArray(typeKey)) { + if (typeof myObject === 'object' && Array.isArray(findKey) && Array.isArray(typeKey) && Array.isArray(ignoreKeys)) { /* Verifica se o objeto tem a chave desejada */ - envInfo.results.value = locateObjectKey(myObject, findKey, typeKey); + envInfo.results.value = locateObjectKey(myObject, findKey, typeKey, ignoreKeys); } /* Define o sucesso */ diff --git a/lib/Functions/Others/utils.json b/lib/Functions/Others/utils.json index c9d4225..7f45d3d 100644 --- a/lib/Functions/Others/utils.json +++ b/lib/Functions/Others/utils.json @@ -156,6 +156,11 @@ "description": "Array com os tipos de valor que a key deve possuir.", "type": "Boolean / Array", "value": false + }, + "ignoreKeys": { + "description": "Array com os nomes de keys que deve ignorar na busca.", + "type": "Boolean / Array", + "value": false } }, "description": "Localiza um valor de object pela sua key.", diff --git a/lib/Functions/SQL/utils.json b/lib/Functions/SQL/utils.json index 8252974..7d58a01 100644 --- a/lib/Functions/SQL/utils.json +++ b/lib/Functions/SQL/utils.json @@ -500,6 +500,16 @@ "firstUser": false, "firstDate": 0 }, + "spy": { + "enable": false, + "lastValue": 0, + "lastState": false, + "lastUser": "none", + "lastDate": 0, + "firstEdition": false, + "firstUser": false, + "firstDate": 0 + }, "nsfw": { "enable": false, "lastValue": 0, diff --git a/lib/Functions/Verifiers/index.js b/lib/Functions/Verifiers/index.js index 35ffcf6..dc85aaf 100644 --- a/lib/Functions/Verifiers/index.js +++ b/lib/Functions/Verifiers/index.js @@ -9,13 +9,13 @@ async function verifySystem(kill = false, env = false) { if (typeof env === 'object' && typeof kill === 'object') { /* Não verifica se for o dono ou Íris */ if (!env.value.isOwner && !env.value.isBot) { - /* Verifica por SPAM */ - let checkSuccess = await Indexer('flood').analizer(kill, env); - /* Verifica por URLs */ + let checkSuccess = await Indexer('antiurl').analizer(kill, env); + + /* Verifica por SPAM */ if (!checkSuccess.value) { /* Se tiver, define como true */ - checkSuccess = await Indexer('antiurl').analizer(kill, env); + checkSuccess = await Indexer('flood').analizer(kill, env); } /* Para futuros sistemas de segurança */ diff --git a/lib/Wiki/Install/Linux.md b/lib/Wiki/Install/Linux.md index 1c0d697..5d1754b 100644 --- a/lib/Wiki/Install/Linux.md +++ b/lib/Wiki/Install/Linux.md @@ -8,6 +8,9 @@ O linux que foi usado neste guia é o PeppermintOS Debian, meu Linux atual, mas 1. [🔎 O que é Linux?](#-o-que-é-linux) 2. [✓ Pré-Requisitos](#-pré-requisitos) + - [🗑️ Básico](#%EF%B8%8F-básico-uso-baixíssimo) + - [😌 Normal](#-normal-uso-moderado) + - [💥 Ultimate](#-ultimate-uso-de-alta-intensidade) 3. [⚙️ Instalando a Íris](#%EF%B8%8F-instalando-a-íris) 4. [📜 Configuração](#-configuração) - [👨‍💻 Método Nº1 - Usando CLI](#-método-nº1---usando-cli) @@ -28,12 +31,48 @@ Linux é um sistema operacional de código aberto utilizado em servidores, dispo ## ✓ Pré-Requisitos -Antes de iniciar a instalação da Íris no Linux, certifique-se de atender aos seguintes Pré-Requisitos: - -1. [Linux](https://distrochooser.de) -2. Pelo menos 600MB a 1GB de RAM livre -3. Processador single-core 3.2GHZ ou qualquer dual-core acima de 1.2GHz ou superior -4. 3GB de espaço livre (Recomendado: 5GB+) +Antes de iniciar a instalação da Íris no Linux, certifique-se de atender aos seguintes Pré-Requisitos: +> Note que os requisitos normais e altos têm uma margem de segurança; sua Íris pode rodar muito bem mesmo estando com valores muito abaixo dos requisitados. +> Esses requisitos são baseados em usos de diferentes computadores, já as sugestões (ex: Celeron), são de comparações das peças mais ruins que TALVEZ rodariam. +> Esses requisitos são apenas da Íris, seu sistema operacional pode pedir o dobro, triplo ou superior a estes, certifique-se de escolher um sistema leve para melhor desempenho. + +### 🗑️ Básico (Uso BAIXÍSSIMO): +> Recomendado para usuários com computadores mais simples, que quase não usam BOTS ou que não podem pegar uma VPS muito boa. +> Exige conhecimento maior em Linux, pois rodar algo tão básico exige que seja em modo CLI! +> Esses requisitos se aplicam a testes, 1 grupo com poucos participantes ou apenas PV e baixissimo nível de mensagens. +> Mesmo que a Íris consiga rodar nestes pela lógica, não faz sentido usar, pois as dependências, como node e canvas, podem ser incompátiveis a longo prazo. +> Não use a Íris em um computador tão ruim se tiver muitos grupos ou alto nível de mensagens! Ka-boom amigo, entendes? KA-BOOM! + +- **Sistemas Operacionais:** [Linux CLI](https://distrochooser.de) ou lightweight Linux, como [Puppy Linux](https://puppylinux-woof-ce.github.io/) +- **RAM:** 512 MBs DDR2 400 MHz ou superior +- **Processador:** Single-Core 1.8 GHz com Cache L2 ou superior (e.g: AMD Athlon 64) +- **GPU:** N/A +- **Espaço:** 3 GBs IDE, SATA 1 ou superior +- **Conexão de Internet:** 50 Mbps de fibra ótica OU 75 Mbps de WiFi comum OU superior +- **Recomendações (100% OPCIONAIS, mas fazem MUITA diferença):** SWAP, CLI Mode, Conhecimento intermediário ou superior em Linux + +### 😌 Normal (Uso MODERADO): +> Recomendado para usuários novos em Linux com volume comum de mensagens e pouco menos de 10 grupos. +> Não exige tanto conhecimento, copie os comandos e faça tudo automatico. + +- **Sistemas Operacionais:** [Linux x64 C/APT](https://distrochooser.de), como [AntiX](https://antixlinux.com/) +- **RAM:** 2 GBs DDR3 667 MHz ou superior +- **Processador:** Dual-Core 1.4 GHz com Cache L2 ou superior (e.g: Intel Celeron) +- **GPU:** N/A +- **Espaço:** 4 GBs +- **Conexão de Internet:** 75 Mbps de fibra ótica OU 120 Mbps de WiFi comum OU superior +- **Outros (Opcionais, fazem POUCA diferença):** SWAP, CLI, VPS, SSD SATA ou NVMEs Simples (E.g: SSDs DRAMLess <450MB/s) + +### 💥 Ultimate (Uso de ALTA INTENSIDADE): +> Recomendado para usuários que têm em torno de 10 ou mais grupos com alto volume de mensagens. +> Quanto mais grupos e mensagens houver, melhor deve ser sua máquina, a Íris é muito bem otimizada, mas não espere milagres. +> Tudo que tem no Normal, exceto: + +- **RAM:** 4 ~ 8 GBs DDR3 1600 MHz ou superior +- **Processador:** Quad-Core 2.4 GHz com Cache L3 ou superior (e.g: Intel Core) +- **Espaço:** 6 GBs +- **Conexão de Internet:** 250 Mbps de fibra ótica OU 350 Mbps de WiFi OU superior +- **Outros (Opcionais, fazem MUITA diferença):** SSD NVME ou SATA 3 (DRAM, 450MB/s ou maior), VPS ou Cloud de Alta-Performance (Empresarial) Dedicada, Conhecimento Linux básico ou superior ## ⚙️ Instalando a Íris @@ -43,7 +82,7 @@ Uma vez que você tenha instalado todos os requisitos, abra um terminal e digite # Atualiza os repositórios e programas sudo apt update && sudo apt upgrade -y -# Instala os requisitos para inserção da repo do NodeJS 18 | https://github.com/nodesource/distributions +# Instala os requisitos para inserção da repo do NodeJS 20 | https://github.com/nodesource/distributions sudo apt install ca-certificates curl gnupg -y # Cria a pasta keyrings para inserir as do NodeJS @@ -53,7 +92,7 @@ sudo mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg # Instala o repositório do NodeJS no sistema -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list # Atualiza os repositórios sudo apt update && sudo apt upgrade -y diff --git a/lib/Wiki/Install/Termux.md b/lib/Wiki/Install/Termux.md index 38adaf3..c2e8251 100644 --- a/lib/Wiki/Install/Termux.md +++ b/lib/Wiki/Install/Termux.md @@ -6,6 +6,9 @@ Este guia irá ajudá-lo a instalar a Íris no Termux usando um script e executa 1. [🔎 O que é Termux?](#-o-que-é-termux) 2. [✓ Pré-Requisitos](#-pré-requisitos) + - [🗑️ Básico](#%EF%B8%8F-básico-uso-baixíssimo) + - [😌 Normal](#-normal-uso-moderado) + - [💥 Ultimate](#-ultimate-uso-de-alta-intensidade) 3. [🐧 Instalando o Ubuntu 22.04](#-instalando-o-ubuntu-2204) 4. [⚙️ Instalando a Íris](#%EF%B8%8F-instalando-a-íris) 5. [📜 Configuração](#-configuração) @@ -32,13 +35,49 @@ Termux é um emulador de terminal para dispositivos Android que funciona como um Antes de iniciar a instalação da Íris no Termux, certifique-se de atender aos seguintes Pré-Requisitos: -1. [Termux](https://f-droid.org/pt_BR/packages/com.termux/) -2. [Andronix](https://andronix.app/) -3. [Files](https://play.google.com/store/apps/details?id=com.marc.files) -4. Pelo menos 600MB a 1GB de RAM livre -5. Processador quad-core ou superior -6. 3GB de espaço livre (Recomendado: 5GB+) -7. Outro telefone, um espelho (modo hardcore) ou similar +1. [Android 7.1.2 ARMHF, ArmV7, ARMV8, ARM64 ou superior/equivalente](https://www.maiscelular.com.br/sistemas/android/7-1-2-nougat/) +2. [Termux](https://f-droid.org/pt_BR/packages/com.termux/) +3. [Andronix](https://andronix.app/) +4. [Files](https://play.google.com/store/apps/details?id=com.marc.files) +5. Outro telefone, um espelho (modo hardcore) ou similar + - Apenas se caso você escolher conectar via QR + +### 🗑️ Básico (Uso BAIXÍSSIMO): +> Recomendado para usuários com telefones mais simples, que quase não usam BOTS ou que não podem pegar uma VPS muito boa. +> Exige conhecimento maior em Termux e Android, pois rodar algo tão básico exige optimizações boas, geralmente com ROOT! +> Esses requisitos se aplicam a testes, nenhum grupo ou 1 unico grupo com poucos participantes ou apenas PV e baixissimo nível de mensagens. +> Não use a Íris em um telefone "ruim" se tiver muitos grupos ou alto nível de mensagens! Ka-boom amigo, entendes? KA-BOOM! + +- **RAM:** 3 GBs LPDDR3 ou superior +- **Processador:** Quad-Core 1.4 GHz ou superior +- **GPU:** N/A +- **Espaço:** 4 GBs +- **Conexão de Internet:** 4G, 4.5G ou 5G Móvel, WiFi 80 Mbps +- **Recomendações (Opcionais, fazem MUITA diferença):** Custom ROM, Root, conhecimento intermediário em modificação de Android's +- Exemplo: [Galaxy J6 Plus](https://www.tudocelular.com/Samsung/fichas-tecnicas/n4832/Samsung-Galaxy-J6-Plus.html) + +### 😌 Normal (Uso MODERADO): +> Recomendado para usuários novos em Termux com volume comum de mensagens e pouco menos de 10 grupos. + +- **Conexão de Internet:** 4G, 4.5G ou 5G Móvel, WiFi 120 Mbps W/5 GHz +- **RAM:** 4 GBs LPDDR4 ou superior +- **Processador:** Octa-Core 1.8 GHz ou superior +- **GPU:** N/A +- **Espaço:** 5 GBs +- **Outros (Opcionais, fazem MUITA diferença):** Custom ROM, Root, conhecimento intermediário em modificação de Android's +- Exemplo: [Asus Zenfone 5](https://www.tudocelular.com/Asus/fichas-tecnicas/n3911/Asus-ZenFone-5.html) + +### 💥 Ultimate (Uso de ALTA INTENSIDADE): +> Recomendado para usuários que têm em torno de 10 ou mais grupos com alto volume de mensagens. +> Quanto mais grupos e mensagens houver, além de quanto mais APPs e você usar o aparelho, melhor deve ser ele, a Íris é muito bem otimizada, mas não espere milagres. +> Tudo que tem no Normal, exceto: + +- **RAM:** 6 ~ 8 GBs LPDDR5 ou superior +- **Processador:** Octa-Core 2 GHz ou superior +- **Espaço:** 6 GBs +- **Conexão de Internet:** 4G, 4.5G ou 5G Móvel, WiFi 250 Mbps W/5-6 GHz +- **Outros (Opcionais, fazem POUCA diferença):** Custom ROM, Root, conhecimento intermediário em modificação de Android's +- Exemplo: [Xiaomi Poco F3](https://www.tudocelular.com/Poco/fichas-tecnicas/n6743/Poco-F3.html) - Testado por mim (Custom ROM, Root, Sem GAPPS), meu xodó, roda TUDO! ## 🐧 Instalando o Ubuntu 22.04 @@ -72,7 +111,7 @@ Uma vez que você tenha instalado todos os requisitos e Ubuntu 22.04, copie e co # Atualiza os repositórios e programas do Ubuntu 22.04 apt update && apt upgrade -y -# Instala os requisitos para inserção da repo do NodeJS 18 | https://github.com/nodesource/distributions +# Instala os requisitos para inserção da repo do NodeJS 20 | https://github.com/nodesource/distributions apt install ca-certificates curl gnupg -y # Cria a pasta keyrings para inserir as do NodeJS @@ -82,7 +121,7 @@ mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg # Instala o repositório do NodeJS no sistema do Ubuntu 22.04 -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list # Atualiza os repositórios apt update && apt upgrade -y diff --git a/lib/Wiki/Install/Windows.md b/lib/Wiki/Install/Windows.md index 221e609..9542805 100644 --- a/lib/Wiki/Install/Windows.md +++ b/lib/Wiki/Install/Windows.md @@ -3,15 +3,17 @@ Este guia irá ajudá-lo a instalar a Íris no Windows nativo com comandos e downloads específicos, se estiver usando WSL, utilize o guia para Linux. ## 📝 Sumário - 1. [🔎️ O que é Windows?](#-o-que-é-windows) 2. [✓ Pré-Requisitos](#-pré-requisitos) + - [🗑️ Básico](#%EF%B8%8F-básico-uso-baixíssimo) + - [😌 Normal](#-normal-uso-moderado) + - [💥 Ultimate](#-ultimate-uso-de-alta-intensidade) 3. [➕ Instalação adicional dos programas](#-instalação-adicional-dos-programas) - [🖥️ Windows 8 - 8.1 - 10 - 11](#%EF%B8%8F-windows-8---81---10---11) - [💧 Microsoft Visual C++ x86](#-microsoft-visual-c-x86) - [☕ NodeJS](#-nodejs) - [🐍 Python](#-python) - - [🖨️ Tesseract-OCR](#%EF%B8%8F-tesseract-ocr) + - [🎮 Gow](#-gow) - [📚 SQLite3](#-sqlite3) - [📱 Git Bash](#-git-bash) @@ -35,48 +37,84 @@ O Windows é um sistema operacional desenvolvido pela Microsoft. É uma platafor ## ✓ Pré-Requisitos -Antes de iniciar a instalação da Íris no Termux, certifique-se de atender aos seguintes Pré-Requisitos: - -1. [Windows 8/8.1/10/11](https://www.microsoft.com/pt-br/software-download/) -2. [Microsoft Visual C++ x86](https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe) -3. [NodeJS](https://nodejs.org) -4. [Git](https://git-scm.com) -5. [Gow](https://github.com/bmatzelle/gow/releases) -6. [SQLite3](https://www.sqlite.org/index.html) -7. [Python >= 3.7](https://www.python.org/downloads/) -8. [Tesseract OCR](https://github.com/UB-Mannheim/tesseract/wiki) -9. 2GB de RAM | Recomendado: 4GB -10. Processador dual-core ou superior -11. 4GB de espaço livre | Recomendado: 8GB +Antes de iniciar a instalação da Íris no Windows, certifique-se de atender aos seguintes Pré-Requisitos: +> Note que os requisitos altos têm uma margem de segurança; sua Íris pode rodar muito bem mesmo estando com valores muito abaixo dos requisitados. +> Sua Íris não inicializará enquanto não instalar estes programas, pois sua falta ocasionará erros imensos. +> Esses requisitos são apenas da Íris, seu sistema operacional pode pedir o dobro, triplo ou superior a estes, certifique-se de escolher um sistema leve para melhor desempenho. + +1. **Microsoft Visual C++ AIO:** [Download](https://www.techpowerup.com/download/visual-c-redistributable-runtime-package-all-in-one/) +2. **NodeJS 16 ou superior:** [Download](https://nodejs.org) +3. **Git:** [Download](https://git-scm.com) +4. **Gow:** [Download](https://github.com/bmatzelle/gow/releases) +5. **SQLite3:** [Download](https://www.sqlite.org/index.html) +6. **Python 3.7 ou superior:** [Download](https://www.python.org/downloads/) + + +### 🗑️ Básico (Uso BAIXÍSSIMO): +> Recomendado para usuários com computadores mais simples, que quase não usam BOTS ou que não podem pegar uma VPS muito boa. +> Exige conhecimento maior em Windows, pois rodar algo tão básico exige optimizações boas! +> Esses requisitos se aplicam a testes, poucos grupos com poucos participantes ou apenas PV e baixissimo nível de mensagens. +> Não use a Íris em um computador "ruim" se tiver muitos grupos ou alto nível de mensagens! Ka-boom amigo, entendes? KA-BOOM! + +- **Sistemas Operacionais:** [APENAS Windows 8.1 Home SL x64](https://www.microsoft.com/pt-br/software-download) +- **RAM:** 2 GBs DDR3 400 MHz ou superior +- **Processador:** Dual-Core 1.4 GHz com Cache L2, PAE, NX e SSE2 ou superior (e.g: Intel Celeron) +- **GPU:** N/A +- **Espaço:** 3 GBs SATA 2 ou superior +- **Conexão de Internet:** 60 Mbps de fibra ótica OU 80 Mbps de WiFi comum OU superior +- **Recomendações (Opcionais, fazem MUITA diferença):** Memoria Virtual, SSDs ou NVME (E.g: SSDs DRAM 250MB/s>), Conhecimento intermediário ou superior em informática + +### 😌 Normal (Uso MODERADO): +> Recomendado para usuários novos em Linux com volume comum de mensagens e pouco menos de 10 grupos. + +- **Sistemas Operacionais:** [Windows 8.1 Home x64 ou 10 Home SL x64](https://www.microsoft.com/pt-br/software-download) +- **Conexão de Internet:** 100 Mbps de fibra ótica OU 150 Mbps de WiFi comum OU superior +- **RAM:** 4 GBs DDR3 800 MHz ou superior +- **Processador:** Dual-Core 1.6 GHz com Cache L2, PAE, NX e SSE2 ou superior (e.g: Intel Core) +- **GPU:** N/A +- **Espaço:** 4 GBs +- **Outros (Opcionais, fazem MUITA diferença):** Memoria Virtual, VPS, SSD SATA ou NVMEs (E.g: SSDs DRAM 350MB/s>), Conhecimento básico ou superior em informática + +### 💥 Ultimate (Uso de ALTA INTENSIDADE): +> Recomendado para usuários que têm em torno de 10 ou mais grupos com alto volume de mensagens. +> Quanto mais grupos e mensagens houver, alem de quão novo for seu Windows, melhor deve ser sua máquina, a Íris é muito bem otimizada, mas não espere milagres. +> Tudo que tem no Normal, exceto: + +- **Sistemas Operacionais:** [Windows 8.1, 10 ou 11 x64](https://www.microsoft.com/pt-br/software-download) +- **RAM:** 8 ~ 16 GBs DDR3 1600 MHz ou superior +- **Processador:** Quad-Core 2.4 GHz com Cache L3 ou superior (e.g: AMD Ryzen) +- **Espaço:** 6 GBs +- **Conexão de Internet:** 250 Mbps de fibra ótica OU 350 Mbps de WiFi OU superior +- **Outros (Opcionais, fazem MUITA diferença):** SSD NVME ou SATA 3 (E.g: SSDs DRAM 450MB/s>), VPS ou Cloud de Alta-Performance (Empresarial) Dedicada, Conhecimento básico ou superior em informática ## ➕ Instalação adicional dos programas -Baixe os executáveis primeiros e então volte aqui! +Baixe os executáveis ACIMA primeiros e então volte aqui! - Dica: Se desejar pular a instalação de um programa, você pode simplesmente remover os códigos relacionados a ele no sistema de verificação presente no arquivo [Checker.js](https://github.com/KillovSky/Iris/blob/main/lib/Initialize/checker.js). -- Mas tenha em mente que, se fizer isso, **NÃO HAVERÁ SUPORTE PARA ERROS NA SUA INSTALAÇÃO!** +- Mas tenha em mente que, se fizer isso, **NÃO HAVERÁ SUPORTE PARA ERROS NA SUA INSTALAÇÃO, E PODE APOSTAR, HAVERÃO ERROS!** -### 🖥️ Windows 8 - 8.1 - 10 - 11 +### 🖥️ Windows 8.1 - 10 - 11 x64 -....dah. +Sistemas operacionais de 32 Bits foram descontinuados do uso na Íris, ao menos no quesito Windows, se tem um sistema antigo de 32 Bits, arrisque-se no [Linux](https://github.com/KillovSky/Iris/blob/main/lib/Wiki/Install/Linux.md) ou use em [Seu Telefone Android](https://github.com/KillovSky/Iris/blob/main/lib/Wiki/Install/Termux.md). -### 💧 Microsoft Visual C++ x86 +### 💧 Microsoft Visual C++ AIO -Apenas instale seguindo as opções padrões, nada mais é requisitado. +Baixe, extraia e execute o script `install_all.bat` como administrador, se quiser, pode abrir ele com um editor para checar por vírus, mas estão seguros (ao menos até o momento da escrita deste tutorial), inclusive, utilizo estes instaladores em minhas formatações. ### ☕ NodeJS A instalação em si é simples, apenas avance para instalar, mas se certifique de ativar a instalação da `Tools for Native Modules`. -Quando finalizar, um terminal será aberto, aperte enter se ele pedir e deixe a instalação ocorrer, pode demorar bastante tempo. +Quando finalizar, um terminal será aberto, aperte enter se ele pedir e deixe a instalação ocorrer (Power Shell), pode demorar bastante tempo, não feche. ### 🐍 Python Normalmente, se instalado conforme dito acima, o NodeJS instalará o Python para você, mas se não for o caso, Python é simples de instalar, você só precisa ativar a opção `Add Python to PATH` e prosseguir com a instalação em customize. -Selecione também, sendo opcional, mas recomendado, a opção `debbugging symbols`, `Install for all users`, `debug binaries` e `precompile standard library`, termine sua instalação agora. +Selecione também, sendo opcional, mas recomendado, a opção `debbugging symbols`, `Install for all users`, `debug binaries` e `precompile standard library`. -### 🖨️ Tesseract-OCR + ### 🎮 Gow Apenas instale o Gow com suas opções padrões e então use a etapa no final do guia para configurar a PATH. @@ -126,10 +164,10 @@ Se certifique de usar `Git Bash` para abrir a Íris! O Windows 10 e 11 contém p ### 🛣️ PATH -Mude o `InsiraLocal` para o lugar relativo dos programas, os locais padrões, se tiver usado a instalação padrão, são: -Gow: `C:\Program Files (x86)\Gow\bin` -Bash: `C:\Program Files\Git\bin` -Tesseract: `C:\Program Files\Tesseract-OCR` +Mude o `InsiraLocal` para o lugar relativo dos programas, os locais padrões, se tiver usado a instalação padrão, são: +Gow: `C:\Program Files (x86)\Gow\bin` +Bash: `C:\Program Files\Git\bin` +Tesseract: `C:\Program Files\Tesseract-OCR` Lembre-se de fazer isso duas vezes, uma para o gow e outra para bash, o bash deve estar acima do gow na lista, se você inserir o gow acima do bash, ocorrerá erros ao usar o comando `bash`. diff --git a/lib/index.js b/lib/index.js index 02a1afa..0e1bd7c 100644 --- a/lib/index.js +++ b/lib/index.js @@ -82,7 +82,7 @@ function controlSystem( /* Printa o erro sem nenhuma opção para ocultar */ console.error(error); - /* Retorna false */ + /* Retorna false para a execução parar */ return false; } } diff --git a/package.json b/package.json index e809cd5..c572c08 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "iris", - "version": "1.1.2", - "build_date": "26-02-2024", - "build_name": "Cadou", + "version": "1.1.3", + "build_date": "31-03-2024", + "build_name": "Strawberry", "private": "true", "description": "Novo Projeto Íris, uma versão totalmente nova feita com novas APIs, sistemas, 13+ idiomas e muito mais, sendo um projeto novo, aberto e sem nenhum foco lucrativo.", "main": "lib/Initialize/checker.js", @@ -12,6 +12,7 @@ "test": "bash lib/Scripts/Toolbox.sh" }, "author": "KillovSky", + "documentation": "https://github.com/KillovSky/Iris/blob/main/lib/Wiki/Tutorial/Guide.md", "repository": { "type": "git", "url": "git+https://github.com/KillovSky/Iris.git" @@ -19,7 +20,12 @@ "bugs": { "url": "https://github.com/KillovSky/Iris/issues" }, - "homepage": "https://github.com/KillovSky/Iris", + "homepage": "https://KillovSky.github.io/Iris", + "social": { + "github": "https://github.com/KillovSky", + "npm": "https://npmjs.com/~killovsky", + "other": "https://linktr.ee/killovsky" + }, "license": "MIT", "dependencies": { "@ffmpeg-installer/ffmpeg": "^1.1.0", @@ -80,4 +86,4 @@ "directories": { "lib": "lib" } -} +} \ No newline at end of file