Fui testar o bot e achei um comando chamado /shutdown. Fui usar despretensiosamente, esperando que não funcionasse mas por incrível que pareça FUNCIONOU.
Fui ver a source e parece que sim está sendo feito uma verificação mas quem disse que a verificação funciona.
Bom, ele diferencia literalmente qualquer valor definido no .env, não o dono do bot.
O problema é que OWNER_ID está sendo tratado apenas como uma string existente. Então se existir qualquer valor em OWNER_ID, a condição passa e o bot executa o shutdown normalmente.
O código atual:
if not OWNER_ID:
await interaction.response.send_message("Tá querendo me desligar é? **Você não tem permissão para me desativar!**")
else:
await client.stop_app(SQUARE_APP_ID)
não verifica quem executou o comando, apenas verifica se a variável OWNER_ID existe.
Na prática, isso significa que qualquer usuário consegue desligar o bot desde que o .env esteja configurado corretamente.
O correto seria comparar o ID do usuário que executou o comando com o OWNER_ID, algo como:
if str(interaction.user.id) != OWNER_ID:
await interaction.response.send_message(
"Tá querendo me desligar é? **Você não tem permissão para me desativar!**"
)
return
await client.stop_app(SQUARE_APP_ID)
Porque atualmente a lógica funciona assim:
OWNER_ID existe → shutdown liberado pra qualquer pessoa.
OWNER_ID não existe → ninguém consegue usar.
Ou seja, a verificação de permissão simplesmente não existe de fato.
https://github.com/TheLuaBot/LuaBot/blob/main/command/dev/shutdown.py
Fui testar o bot e achei um comando chamado /shutdown. Fui usar despretensiosamente, esperando que não funcionasse mas por incrível que pareça FUNCIONOU.
Fui ver a source e parece que sim está sendo feito uma verificação mas quem disse que a verificação funciona.
Bom, ele diferencia literalmente qualquer valor definido no
.env, não o dono do bot.O problema é que
OWNER_IDestá sendo tratado apenas como uma string existente. Então se existir qualquer valor emOWNER_ID, a condição passa e o bot executa o shutdown normalmente.O código atual:
não verifica quem executou o comando, apenas verifica se a variável
OWNER_IDexiste.Na prática, isso significa que qualquer usuário consegue desligar o bot desde que o
.envesteja configurado corretamente.O correto seria comparar o ID do usuário que executou o comando com o
OWNER_ID, algo como:Porque atualmente a lógica funciona assim:
OWNER_IDexiste → shutdown liberado pra qualquer pessoa.OWNER_IDnão existe → ninguém consegue usar.Ou seja, a verificação de permissão simplesmente não existe de fato.
https://github.com/TheLuaBot/LuaBot/blob/main/command/dev/shutdown.py