BOT para Telegram criado com o intuito de estudar Golang e aprender sobre a API do Tabnews.
Fique a vontade para contribuir ;)
Para acessar o bot no Telegram (o QR code abaixo também funciona): @tabnews_bot
- Clone o projeto em sua máquina.
git clone https://github.com/MarcusAdriano/tabnews_bot
- Crie seu próprio bot para que você possa realizar seus testes.
Acesse o @BotFather e siga as instruções. É um processo tranquilo.
No final do processo um Token será gerado e é ele que você vai utilizar para se comunicar com o seu bot.
- Executando o projeto.
export TELEGRAM_BOT_TOKEN={{token}}
go run main.go telegram --local
Basicamente há duas formas de executar um bot Telegram: Polling ou via Webhook.
Há nesse projeto ambas as implementações. Por que? O polling com certeza não é otimizado para deploy na Nuvem onde geralmente paga-se por tempo de CPU, mas é fantástico e simples para realizarmos testes em ambiente local. Logo o polling foi pensado para ser executado localmente enquanto o modelo webhook em ambiente produtivo.
Vale ressaltar que a implementação utilizando webhook foi elaborada utilizando AWS Lambda (onde quando ninguém está falando com o bot, o custo é próximo de zero).
Esse CLI permite alterar, deletar e consultar informações do webhook cadastrado para o bot.
- Consulta
go run script/telegram/main.go webhook -t {{token}} get
Resultado:
{
"url": "https://example.com/endpoint/que/voce/quiser",
"has_custom_certificate": false,
"pending_update_count": 0,
"ip_address": "123.45.67.89",
"max_connections": 40
}
- Alteração
Esse é o comando que há mais opções, segue sua documentação abaixo do exemplo:
go run script/telegram/main.go webhook -t {{token}} set -w https://example.com -s hello_world -m 10 -d
Set webhook details
Usage:
telegram webhook set [flags]
Flags:
-a, --allowed_updates stringArray Allowed updates
-d, --drop_pending_updates Drop pending updates
-h, --help help for set
-m, --max_connections int Max connections (default 40)
-s, --secret_token string Secret token
-w, --webhook string Webhook URL
Global Flags:
-u, --telegramApiUrl string Telegram API URL (default "https://api.telegram.org/bot%s/%s")
-t, --token string Telegram bot token
- Delete
Esse é simples quando o primeiro (get):
go run script/telegram/main.go webhook -t {{token}} delete
- Testes unitários
- Separar as regras das mensagens do BOT
- Automatizar o deploy da aplicação (CI e CD)