Skip to content

Commit

Permalink
Egg PRÉ-Release 14/12/24 [BETA]
Browse files Browse the repository at this point in the history
Melhorias que trabalhei ao longo desse tempo, não crie expectativas, estou ocupado com outros projetos e trabalhos, então não há muito feito.

Corrige o comando everyone e ajusta diversos scripts e funções.

Changelog detalhada vai vir quando essa branch for mergeada na main.
  • Loading branch information
KillovSky committed Dec 14, 2024
1 parent bead974 commit 0d3e8fd
Show file tree
Hide file tree
Showing 46 changed files with 1,695 additions and 268 deletions.
File renamed without changes.
2 changes: 1 addition & 1 deletion lib/Commands/Default/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ async function caseDefault(
...Não aparecerão no menu
*/
case caseChecker('menu', true, isCmd):
const menuText = Indexer('bash').bash(`bash "${irisPath}/lib/Scripts/Menu.sh" "${argl[0]}" ${JSON.stringify(Indexer('sql').languages(region, 'Helper', 'Menu', true, true, env.value).value)} "${prefix}"`).value;
const menuText = Indexer('bash').bash(`bash "${irisPath}/lib/Scripts/Others/Menu.sh" "${argl[0]}" ${JSON.stringify(Indexer('sql').languages(region, 'Helper', 'Menu', true, true, env.value).value)} "${prefix}"`).value;
const menuObject = config.useBanner.value && !argl.includes('-text') ? { image: { url: `${__dirname}/Cache/Banner.png` }, caption: menuText } : { text: menuText };
envInfo.results.value = await kill.sendMessage(chatId, menuObject, reply);
break;
Expand Down
138 changes: 64 additions & 74 deletions lib/Commands/Everyone/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,15 +87,15 @@ async function tagEveryone(
const {
reply,
chatId,
quoteThis,
quotedMsgObj,
isOwner,
isGroupMsg,
isQuotedMsg,
body,
prefix,
typeFormatted,
functions,
isAllowed,
isQuotedMsg,
decryptedMedia,
mimetype,
groupMembersIdFormated,
Expand Down Expand Up @@ -138,80 +138,70 @@ async function tagEveryone(
/* Se dono, admin, mod ou pode rodar */
} else if (isAllowed && isGroupMsg) {
/* Define a Object inicial */
let baileysMessage = { forward: quoteThis, mentions: noEveryone };

/* Se não for quoted, faz o jeito mais simples, encaminhando */
if (!isQuotedMsg) {
/* Convertendo em string, usando replace e então parse! */
baileysMessage.forward = Indexer('others').farpc(quoteThis, replaceCmd, '').value;
baileysMessage.forward = Indexer('others').farpc(baileysMessage.forward, /--show/gi, `\n\n@${noEveryFormatted.join(' @')}`).value;

/* Se for menção, faz o jeito dificil */
} else if (isQuotedMsg) {
/* Delete a forward por não ser usada aqui */
delete baileysMessage.forward;

/* Define os dados da mensagem por meio do seu tipo */
switch (quotedTypeFormated) {
/* Imagem */
case 'image':
baileysMessage.image = decryptedMedia;
baileysMessage.caption = (body || quotedMsgObj.caption || insertContext).replace(replaceCmd, '').replace(/--show/gi, `\n\n@${noEveryFormatted.join(' @')}`);
baileysMessage.mimetype = mimetype;
break;
let baileysMessage = { mentions: noEveryone };

/* Define como buscar */
const switchTypeFt = isQuotedMsg ? quotedTypeFormated : typeFormatted;

/* Define os dados da mensagem por meio do seu tipo */
switch (switchTypeFt) {
/* Imagem */
case 'image':
baileysMessage.image = decryptedMedia;
baileysMessage.caption = (body || quotedMsgObj.caption || insertContext).replace(/--show/gi, `\n\n@${noEveryFormatted.join(' @')}`).replace(replaceCmd, '');
baileysMessage.mimetype = mimetype;
break;

/* audio */
case 'audio':
baileysMessage.audio = decryptedMedia;
baileysMessage.mimetype = mimetype;
baileysMessage.ptt = quotedMsgObj.ptt || true;
break;

/* contact */
case 'contact':
case 'contactsArray':
baileysMessage.contacts = { displayName: quotedMsgObj.displayName, contacts: quotedMsgObj.contacts };
break;

/* Documento */
case 'document':
case 'documentWithCaption':
baileysMessage.document = decryptedMedia;
baileysMessage.mimetype = mimetype;
baileysMessage.fileName = quotedMsgObj.fileName;
baileysMessage.caption = (body || quotedMsgObj.caption || insertContext).replace(replaceCmd, '').replace(/--show/gi, `\n\n@${noEveryFormatted.join(' @')}`);
break;

/* Stickers */
case 'sticker':
/* Constrói o sticker, se deixar em 100% nos videos pode travar o sticker */
baileysMessage = await new Sticker(decryptedMedia, {
...stickerConfig,
type: 'default',
}).toMessage();
baileysMessage.mentions = noEveryone;
break;

/* Localização */
case 'location':
case 'liveLocation':
baileysMessage.location = { degreesLatitude: quotedMsgObj.degreesLatitude, degreesLongitude: quotedMsgObj.degreesLongitude };
break;

/* Video */
case 'video':
baileysMessage.video = decryptedMedia;
baileysMessage.caption = (body || quotedMsgObj.caption || insertContext).replace(replaceCmd, '').replace(/--show/gi, `\n\n@${noEveryFormatted.join(' @')}`);
baileysMessage.mimetype = mimetype;
break;

/* Conversation, URL e outros */
default:
baileysMessage.text = body || quotedMsgObj.matchedText || quotedMsgObj.text || quotedMsgObj.caption || quotedMsgObj.conversation || quotedMsgObj;
baileysMessage.text = typeof baileysMessage.text === 'object' ? insertContext : baileysMessage.text;
baileysMessage.text = baileysMessage.text.replace(replaceCmd, '').replace(/--show/gi, `\n\n@${noEveryFormatted.join(' @')}`);
break;
}
case 'audio':
baileysMessage.audio = decryptedMedia;
baileysMessage.mimetype = mimetype;
baileysMessage.ptt = quotedMsgObj.ptt || true;
break;

/* contact */
case 'contact':
case 'contactsArray':
baileysMessage.contacts = { displayName: quotedMsgObj.displayName, contacts: quotedMsgObj.contacts };
break;

/* Documento */
case 'document':
case 'documentWithCaption':
baileysMessage.document = decryptedMedia;
baileysMessage.mimetype = mimetype;
baileysMessage.fileName = quotedMsgObj.fileName;
baileysMessage.caption = (body || quotedMsgObj.caption || insertContext).replace(/--show/gi, `\n\n@${noEveryFormatted.join(' @')}`).replace(replaceCmd, '');
break;

/* Stickers */
case 'sticker':
/* Constrói o sticker, se deixar em 100% nos videos pode travar o sticker */
baileysMessage = await new Sticker(decryptedMedia, {
...stickerConfig,
type: 'default',
}).toMessage();
break;

/* Localização */
case 'location':
case 'liveLocation':
baileysMessage.location = { degreesLatitude: quotedMsgObj.degreesLatitude, degreesLongitude: quotedMsgObj.degreesLongitude };
break;

/* Video */
case 'video':
baileysMessage.video = decryptedMedia;
baileysMessage.caption = (body || quotedMsgObj.caption || insertContext).replace(/--show/gi, `\n\n@${noEveryFormatted.join(' @')}`).replace(replaceCmd, '');
baileysMessage.mimetype = mimetype;
break;

/* Conversation, URL e outros */
default:
baileysMessage.text = body || quotedMsgObj.matchedText || quotedMsgObj.text || quotedMsgObj.caption || quotedMsgObj.conversation || quotedMsgObj;
baileysMessage.text = typeof baileysMessage.text === 'object' ? insertContext : baileysMessage.text;
baileysMessage.text = baileysMessage.text.replace(/--show/gi, `\n\n@${noEveryFormatted.join(' @')}`).replace(replaceCmd, '');
break;
}

/* Reencaminha a mensagem da pessoa */
Expand Down
3 changes: 2 additions & 1 deletion lib/Commands/Handlers/utils.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@
"Para configurar o limite de spam, defina o valor para declarar como spam, como por exemplo: 10 mídias",
"Para configurar o modo de operação da URL, defina de 1 a 3 na frente com '-set', sendo que: 1 = Tudo/All | 2 = Invite/Convites | 3 = Porno/Virus/Fakenews/Apostas",
"O antifake deve ser configurado com o DDI, ou seja, se quiser banir todos os números +1, apenas digite 1 no uso do comando.",
"O antispam deve ser definido com o argumento '-ban' se quiser que a pessoa seja removida, se não for o caso, você pode ignorar o uso do '-ban' e apenas inserir o número com '-set' antes, isso é a quantidade de mídias máximas enviadas de uma vez pela pessoa."
"O antispam deve ser definido com o argumento '-ban' se quiser que a pessoa seja removida, se não for o caso, você pode ignorar o uso do '-ban' e apenas inserir o número com '-set' antes, isso é a quantidade de mídias máximas enviadas de uma vez pela pessoa.",
"Se houver múltiplas Íris no mesmo grupo, é possivel definir qual Íris será executada usando o parametro '--only' e mencionando a Íris ou digitando seu número na frente."
],
"exports": {
"env": "env",
Expand Down
19 changes: 11 additions & 8 deletions lib/Commands/Main/Construct/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const Indexer = require('../../../index');
let envInfo = JSON.parse(fs.readFileSync(`${__dirname}/utils.json`));
const commands = JSON.parse(fs.readFileSync('./lib/Databases/Configurations/definitions.json'));
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);
let arrayOfCommands = JSON.parse(Indexer('bash').bash(`bash "${irisPath}/lib/Scripts/Others/Menu.sh" "array"`).value);
const oldLanguage = region;
let conditions = false;

Expand Down Expand Up @@ -193,6 +193,7 @@ async function dataCollect(
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;
messageData.recMessage = recMessage;

/* Define se é ViewOnce */
const viewOnceObj = messageData.quoteThis.message?.viewOnceMessageV2 || messageData.quoteThis.message?.viewOnceMessage;
Expand Down Expand Up @@ -281,10 +282,6 @@ async function dataCollect(
messageData.originalName = messageData.chat?.subject || '';
messageData.name = messageData.originalName;

/* Troque a linha acima por essa abaixo, caso der erros em ASCII e demais */
// eslint-disable-next-line no-useless-escape
/* messageData.name = messageData.originalName.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, ''); */

/* Define o número de quem enviou */
messageData.user = chatMessage?.participant || chatMessage?.remoteJid || '';

Expand All @@ -295,9 +292,15 @@ async function dataCollect(
messageData.originalPushname = message?.messages[0]?.pushName || '"Censored by Government"';
messageData.pushname = messageData.originalPushname;

/* Troque a linha acima por essa abaixo, caso der erros em ASCII e demais */
/* eslint-disable-next-line no-useless-escape */
/* messageData.pushname = messageData.originalPushname.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, ''); */
/* Se ativarem o fixEscape, faz ajuste para o SQLite */
if (config.fixEscape.value) {
/* Ativa o escape adicional para evitar erros */
/* eslint-disable-next-line no-useless-escape */
messageData.pushname = messageData.originalPushname.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, '');

// eslint-disable-next-line no-useless-escape
messageData.name = messageData.originalName.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, '');
}

/* Determina a ID do Chat */
messageData.chatId = chatMessage?.remoteJid || messageData.user || '';
Expand Down
4 changes: 4 additions & 0 deletions lib/Databases/Configurations/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@
"description": "Defines what information is logged on the screen. A value of 1 prints all information, 2 for messages only, and 3 for commands only.",
"value": 1
},
"fixEscape": {
"description": "Enable this if you encounter errors with commas or symbols in SQLite. Note that this will remove, not escape, special characters. In anycase, still very useful with Íris database errors.",
"value": false
},
"fullError": {
"description": "The error log method. When set to 'true,' it prints all information, making it ideal for bug reporting. Alternatively, setting it to 'false' is suitable for experts and those who prefer concise and stylish error messages.",
"value": true
Expand Down
2 changes: 1 addition & 1 deletion lib/Functions/Verifiers/Antilinks/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ async function filterLinks(
/* Faz um for para verificar cada link */
for (let i = 0; i < urlData.hostnames.length; i += 1) {
/* Define a execução no arquivo de hosts */
const isBadURL = Indexer('bash').bash(`bash "${path.normalize(`${irisPath}/lib/Scripts/Hosts.sh`)}" "${urlData.hostnames[i]}" "${path.normalize(`${irisPath}/lib/Databases/Utilities/hosts.txt`)}"`).value;
const isBadURL = Indexer('bash').bash(`bash "${path.normalize(`${irisPath}/lib/Scripts/Others/Hosts.sh`)}" "${urlData.hostnames[i]}" "${path.normalize(`${irisPath}/lib/Databases/Utilities/hosts.txt`)}"`).value;

/* Se o link existir no arquivo de hosts */
if (/1/gi.test(isBadURL)) {
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
145 changes: 145 additions & 0 deletions lib/Scripts/Launcher/Toolbox.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
<#
.SYNOPSIS
Script para iniciar um script shell (Toolbox.sh) usando Git Bash com modos de fallback.
.DESCRIPTION
Este script tenta executar um script em modo normal, alternativo ou absoluto,
garantindo que os logs sejam gerados adequadamente para monitoramento e solução de problemas.
.PARAMETER ScriptToExecute
Caminho do script a ser executado.
#>

# Constantes de exit code
$SuccessExitCode = 0

# Função para exibir mensagens de log
function Write-Log {
param (
[string]$Message,
[string]$Level = "INFO"
)

# Criação de um timestamp para a mensagem de log
$Timestamp = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss")
$LogMessage = "[$Timestamp] [$Level] $Message"
$LogFilePath = "Toolbox.log"

# Adiciona a mensagem ao arquivo de log
Add-Content -Path $LogFilePath -Value $LogMessage
}

# Função para verificar e ajustar o diretório atual
function Test-CurrentDirectory {
$CurrentDir = Get-Location
$TargetDir = "\lib\Scripts\Launcher"

# Verifica se o diretório atual é o esperado
if ($CurrentDir.Path.EndsWith($TargetDir)) {
Set-Location -Path (Resolve-Path ..\..\..) # Volta três diretórios
Write-Log "Diretório alterado para: $(Get-Location)"
} else {
Write-Log "Diretório atual está correto: $CurrentDir"
}
}

# Função para encontrar o caminho do git.exe
function Get-GitPath {
# Obtém o caminho do git.exe
$GitPath = (Get-Command git.exe -ErrorAction SilentlyContinue).Source

if (-not $GitPath) {
Write-Log "Falha ao encontrar git.exe." "ERROR"
return $null
}

# Retorna o caminho do bash.exe
return $GitPath.Replace("\cmd\git.exe", "\bin\bash.exe")
}

# Função para iniciar o script e verificar seu sucesso
function Invoke-Script {
param (
[string]$ScriptPath,
[string]$GitPath
)

Write-Log "Iniciando script: $ScriptPath"

try {
# Inicia o processo do script
$process = Start-Process -FilePath $GitPath -ArgumentList $ScriptPath -Wait -PassThru
$ExitCode = $process.ExitCode

# Verifica o código de saída do script
if ($ExitCode -ne $SuccessExitCode) {
Write-Log "Script executado com falha. Código de saída: $ExitCode" "ERROR"
} else {
Write-Log "Script executado com sucesso."
}

return $ExitCode
} catch {
Write-Log "Erro ao executar o script: $_" "ERROR"
return 1
}
}

# Função para tentar o modo alternativo
function Start-Alternative {
Write-Log "Modo normal falhou, tentando modo alternativo em 5 segundos..."
Start-Sleep -Seconds 5

# Executa o script no modo alternativo
$ExitCode = Invoke-Script -ScriptPath $ScriptToExecute -GitPath "bash.exe"

if ($ExitCode -eq $SuccessExitCode) {
Write-Log "Execução bem-sucedida no modo alternativo."
exit
} else {
Start-Absolute
}
}

# Função para tentar executar o script a partir do caminho absoluto
function Start-Absolute {
$AbsoluteScriptPath = (Get-Item $ScriptToExecute).FullName
Write-Log "Tentando executar o script a partir do caminho absoluto: $AbsoluteScriptPath"
Start-Sleep -Seconds 5

# Executa o script no modo absoluto
$ExitCode = Invoke-Script -ScriptPath $AbsoluteScriptPath -GitPath "bash.exe"

if ($ExitCode -eq $SuccessExitCode) {
Write-Log "Execução bem-sucedida no modo absoluto."
exit
} else {
Write-Log "Todos os modos falharam ou finalizaram. Contate o suporte se precisar." "ERROR"
pause
}

Write-Host 'Leia o arquivo Toolbox.log se sua execução teve erros, envie o arquivo para o suporte para ajudar a corrigir eventuais falhas.'
}

# Execução principal do script
Test-CurrentDirectory

# Caminho do script a ser executado
$ScriptToExecute = "./lib/Scripts/Launcher/Toolbox.sh"

# Obtém o caminho do Git Bash
$GitPath = Get-GitPath

if ($GitPath) {
$RunCode = Invoke-Script -ScriptPath $ScriptToExecute -GitPath $GitPath

if ($RunCode -eq $SuccessExitCode) {
Write-Log "Execução bem-sucedida no modo normal."
exit
} else {
Start-Alternative
}
} else {
Write-Log "Caminho do git.exe não encontrado, tentando abrir o bash diretamente..." "ERROR"
Start-Alternative
}
Loading

0 comments on commit 0d3e8fd

Please sign in to comment.