Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apagar a mensagem editada pelo comando 'admins' após um evento #3

Open
micalevisk opened this issue Jul 29, 2018 · 8 comments
Open

Comments

@micalevisk
Copy link
Owner

micalevisk commented Jul 29, 2018

autodestruição

Ao executar o comando !admins citando uma mensagem (referenciando), salvar o identificador da mensagem que foi editada (para a inserção dos nicks dos admins) e o identificador da mensagem referenciada (como reply) para que, quando a mensagem que sofreu o reply for apagada, apagar também a mensagem editada

@micalevisk micalevisk changed the title [FEATURE] apagar mensagem editada pelo comando 'admins' Apagar a mensagem editada pelo comando 'admins' após um evento Aug 2, 2018
@micalevisk
Copy link
Owner Author

aparentemente funcionando após 0bfad9a

@micalevisk
Copy link
Owner Author

FIXME

A lógica implementada funciona para mensagens apagadas manualmente mas, aparentemente, não funciona para mensagens deletadas automaticamente (após o banimento de um usuário ou algo do tipo)

@micalevisk
Copy link
Owner Author

micalevisk commented Nov 18, 2018

edit

O problema é que o worker é reiniciado pelo Heroku por causa do Free Dyno sleeping, ou seja, o estado do msgs_reportadas é perdido

msgs_reportadas = dict([]) ## <reply_to_msg_id> --> <message.id>

heroku logs

solução

  • salvar o dicionário msgs_reportadas em um BD provido pelo Heroku
  • salvar o dicionário msgs_reportadas em um BD de um outro serviço (serveless; SaaS)
    e recuperá-lo a cada início do programa & fazer o mesmo com as mensagens apagadas -- sincronização

@micalevisk
Copy link
Owner Author

micalevisk commented Nov 30, 2018

solução adotada

aparentemente funcionando

Não permitir que o sistema durma = print nos eventos capturados:

print(type(update))##§

edit: essa estratégia não está funcionando.

@micalevisk
Copy link
Owner Author

micalevisk commented Jan 11, 2019

possível solução

Usar um "DB as a service" para ser usado para salvar os dados que deverão ser mantidos no dicionário abaixo:

msgs_reportadas = dict([]) ## <reply_to_msg_id> --> <message.id>

assim, toda atualização de msgs_reportadas deve ser persistida no DB (em algum momento), para não ser perdido quando o processo reiniciar.

opções:

@micalevisk
Copy link
Owner Author

micalevisk commented Dec 22, 2019

outra solução

usar um DB https://tinydb.readthedocs.io que persistirá no sistema de arquivos. Assume-se que o heroku não remove os arquivos criados em tempo de execução em caso de sleep

@micalevisk
Copy link
Owner Author

done a55dd3a

@micalevisk
Copy link
Owner Author

micalevisk commented Jan 21, 2020

Mesmo usando esse DB, há casos em que a mensagem não é deletada. Quando testado em um grupo em que a mensagem "reportada" foi removida quase imediatamente, funciona.
Aparentemente, o Heroku limpa arquivos gerados a cada intervalo de tempo.

@micalevisk micalevisk removed their assignment Jan 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant