2020-09-02.md 5.7 KB


title: "Livecoding da(o)(e) MateBot, Robô Social (3)"

date: 2020-09-02T01:17:51-03:00

Objetivos de hoje:

  • Acrescentar issues novas no Github
  • Continuar desenvolvendo o código base do Aiogram
  • Documentar o processo

Bibliografia (linkania):


Transmissão ao vivo

Começou pouco após à meia noite BRT (UTC -3) do dia 02 de setembro de 2020 (quarta-feira já).

Ao vivo no Youtube no canal do Matehackers: https://www.youtube.com/c/Exmachinae/live

Salvo no Youtube:

Terça Sem Fim - Livecoding da(o)(e) MateBot, Robô Social

MateBot é atualmente um(a)(e)(?) robô de Telegram que está sendo escrito usando Python e Aiogram com licença de software livre. Esta série de vídeos serve para documentar e acompanhar o processo de desenvolvimento. Além do canal do Youtube do Matehackers, também está sendo documentado no repositório git público e no blog Terça Sem Fim. Estes vídeos estão disponíveis via IPFS e Tor pra quem não consegue assistir pelo Youtube.

Código fonte: https://github.com/matehackers/matebot

Blog da Terça Sem Fim: 🌐 Web:

Grupo do Matehackers no Telegram: https://t.me/matehackerspoa
Grupo do MateBot no Telegram: https://t.me/joinchat/CwFUFkf-dKW34FPBjEJs9Q
Meu usuário no Telegram: https://t.me/desobedientecivil

Ajude o Hackerspace Matehackers a se manter: https://matehackers.org/renda

#Python #Telegram #Aiogram #Geany #Flask #Quart #PythonTelegramBot #DataScience #IA #AI #ML #DS


Desenvolvimento

Documentando o processo

Como sempre a primeira coisa é alimentar o blog dessa vez sem o tor porque eu estou usando o Qubes e não configurei um serviço oculto na VM do Whonix.

Github novas issues

Durante a semana foram se acumulando feedbacks e novas ideias para o bot que devem ser documentadas no repositório git.

Às 01:18 BRT terminei de colocar todas as issues do mês de agosto no github. Foram três no total, da 64 até a 66.

Esclareci duas vezes que eu parei de usar Flask e Quart para o desenvolvimento e voltei a usar "python puro (tm)" pra desenvolver o bot como era no tempo do telepot.

Esclareci que os próximos passos serão continuar desenvolvendo o bot usando Aiogram e python-telegram-bot, sendo o foco maior em Aiogram.

Coisas para curto prazo que devem ser feitas é refazer todo o plugin de logging (que já estava parcialmente desenvolvido com python-telegram-bot), fazer um controle de acesso (que já tinha em telepot), escrever um controle de flood (que ninguém escreveu, nem no telepot, nem no ptb, nem no aiogram, nem no telethon, etc.) e finalmente migrar os plugins todos no mínimo para funcionar com aiogram mas preferencialmente pra funcionar com python-telegram-bot também.

Geany

Às 01:30 BRT terminei de escrever o blog e voltei para o desenvolvimento.

Perdi bastante tempo (de novo) tentando usar json.dumps() com as updates.

Cheguei a testar o método de copiar mensagem do aiogram, mas por fim consegui fazer logging em grupos escrevendo meus próprios métodos e adicionando uma linha em cada handler de mensagem.

Lancei uma versão estável do matebot que é a v0.1.3.1. O próximo passo é passar todos os plugins já existentes para usar aiogram.

Uma coisa engraçada é que eu fiz uma cacaca no repositório ao vivo. Ao invés de fazer merge da branch main na branch async, eu fiz o contrário. Depois tive que adicionar vários commits de merge para retomar o código ao estado que estava, mas não estava mais transmitindo no vídeo.


Encerramento

Transmissão foi encerrada aproximadamente às 04:45 BRT de 02 de Setembro de 2020.

Não curtam o vídeo, não sigam o canal, não se inscrevam para receber notificações. Usem youtube-dl para obter o vídeo, assistam no VLC. Ou melhor, assistam o vídeo via IPFS.


Pós transmissão

Consegui resolver o problema dos arquivos de configuração. Descobri o método Dispatcher.get_current() que retorna o dispatcher do contexto do método. Então não preciso importar o Bot() em cada arquivo do código. Commit com esta correção. Na documentação do aiogram não tinha essa informação, eu abri uma issue no repositório para isto.

Consegui resolver o problema do pretty print para as updates. O objeto TelegramObject que é base para os outros objetos tem os métodos to_python() e as_json() que eu consegui usar pra formatar os updates nos logs. Commit com esta alteração.