BotLino / Lino

Lino, a chatbot to University of Brasilia!
https://botlino.github.io/docs/
GNU General Public License v3.0
10 stars 2 forks source link

Acúmulo inesperado de mensagens #8

Open guiaugusto opened 5 years ago

guiaugusto commented 5 years ago

Descrição

Com uma frequência ainda desconhecida, o Lino passa pelo problema de acumular todas as mensagens enviadas à ele pelo Telegram Messenger, ocorrendo os seguintes erros (até agora mitigados):

Observações

  1. Ao utilizar o método getUpdates disponibilizado para analisar as informações do bot no Telegram, percebe-se que existe um acúmulo das mensagens enviadas em determinado intervalo de tempo, não associando as respostas aos usuários que entraram em contato, ocasionando o travamento do bot.

  2. Ao ocasionar o ocorrido em [1], este erro só foi reproduzido em produção, ao reiniciar o container no Rancher. Logo quando o bot termina o treinamento após a reinicialização, ele começa a enviar aleatoriamente mensagens aos usuários que conversaram com ele após o período de travamento.

Tarefas

Critérios de Aceitação

guiaugusto commented 5 years ago

No momento, ao realizar uma requisição para algum serviço que o bot Lino consome, caso ele não esteja no ar, o sistema tende a falhar podendo ocasionar o erro. Caso aconteça, esse será o comportamento do bot:

Como lidar com essa situação?

Para interromper esse travamento, a ideia é simplesmente pegar uma atualização da mensagem que viria posteriormente à ultima, fazendo com que o bot percorra e jogue fora todas as mensagens recebidas até o id fornecido.

Exemplo:

Passo 1: delete o webhook associado ao bot

https://api.telegram.org/bot{token específico do bot}/deleteWebhook

Passo 2: acessar a rota para obter as informações das mensagens.

https://api.telegram.org/bot{token específico do bot}/getUpdates

Passo 3: obter o _updateid da última mensagem enviada.

Passo 4: acessar a rota que percorre as mensagem até o _updateid pego anteriormente, somando +1 no valor do id.

id pego: 
3424

rota a ser acessada:
https://api.telegram.org/bot{token específico do bot}/getUpdates?offset=3425