Servidor do Bot de Telegram do coletivo marxista-leninista Soberana. O objetivo do bot é postar em um canal de anúncios do Telegram, servindo como um agregador de informações. O bot deve postar quando membros iniciam lives na Twitch e postam vídeos no Youtube e TikTok, além de postar diariamente as lives e eventos agendadas para aquele dia a partir do Google Calendar.
- Enviar mensagens para um canal especificado no Telegram
- Enviar mensagens a partir de estímulo externo (api/webhook)
- Integração com Google Calendar
- Acessar o calendário Soberana
- Retornar as lives do dia
- Formatar as lives do dia
- Enviar a agenda diária no telegram
- .. automaticamente
- Guardar os tokens (access e refresh) e renova-los conforme necessário
- Integração com Youtube
- Ativar quando um novo vídeo for postado em algum canal da Soberana
- Retornar o título, canal e link
- Formatar as informações e postar no Telegram
- Integração com Twitch
- Ativar quando um canal entrar ao vivo
- Formatar o nome do canal, título da live e link
- Enviar no telegram
- Integração com TikTok
- Ativar quando um novo vídeo for postado
- Receber o nome do vídeo (?), canal e link
- Enviar no telegram
As APIs da Google utilizam OAuth2 para autorização, que envolvem um método manual para autorização inicial e a manutenção de um token de acesso com um token de atualização (access token e refresh token respectivamente). Atualmente, ambos tokens são hardcoded em variáveis de ambiente (.env
), o que não é uma solução a longo prazo, pois mesmo podendo conseguir 'infinitos' tokens de acesso através do token de atualização, eventualmente o token de atualização também expira e deve ser renovado.
O servidor precisa, de alguma forma segura, armazenar ambos os tokens e atualiza-los no banco de dados quando os mesmos são atualizados pela lógica do servidor.
Dada a mudança no sistema de webhooks da Twitch (utilizando agora os endpoints EventSub
), há obrigatoriedade do servidor utilizar o protocolo SSL - o que, por sua vez, requer que o domínio possua o devido certificado de autoridade. Em fase de testes, estou utilizando ngrok, que cria uma URL temporária com o devido certificado, mas essa solução é inviável a nível de produção - ou, ao menos, longe do ideal.
Uma das alternativas, que exigem mais estudo, é alguma forma de hospedar na AWS com suporte a certificado SSL, mas não possuo expierência nesse tipo de deploy.