Desenvolva seu próprio bot Telegram com golang e tbot

Alexey Grachov Blocked Desbloquear Seguir Seguindo 18 de maio de 2017

Quarenta e dois – disse o Pensamento Profundo, com infinita majestade e calma.

Desenvolver o Telegram bot pode ser um bom exercício enquanto aprende uma linguagem de programação, é definitivamente divertido e você pode criar algo útil para você. Bots agora são amplamente utilizados tanto para uso pessoal (lembretes, notícias, automação de casas inteligentes, etc.) quanto para equipes (notificações de IC, alertas de monitoramento, etc.). Aqui mostrarei uma introdução rápida ao simples framework para desenvolvimento de bots: github.com/yanzay/tbot .

Primeiro, você tem que criar um bot no Botfather do Telegram. Basta digitar /newbot para ele e seguir instruções simples. Ao final do processo, você receberá um token, que usaremos nas próximas etapas.

Sessão BotFather

E finalmente podemos começar o desenvolvimento! Vamos primeiro fazer um bot inútil que apenas responda à Ultimate Questão da Vida, do Universo e de Tudo:

 pacote principal 
 importação ( 
"registro"
"os"
 "github.com/yanzay/tbot" 
)
 func main () { 
bot, err: = tbot.NewServer (os.Getenv ("TELEGRAM_TOKEN"))
if err! = nil {
log.Fatal (err)
}
bot.Handle ("/ answer", "42")
bot.ListenAndServe ()
}

Agora vamos instalar a última versão da biblioteca do tbot :

 vá buscar -u github.com/yanzay/tbot 

De definir a variável de ambiente TELEGRAM_TOKEN para o seu token, recebido do BotFather (substitua o exemplo pelo seu token válido):

 Exportar TELEGRAM_TOKEN = 713666142: AAF54eZhhAiSFwaSu0wL7FwJuQcS7Oh9r-v 

E agora estamos prontos para ir!

 vai correr main.go 

Pensamento profundo

E também, como um bônus, o tbot fornece o comando /help , para que você possa obter a lista de todos os comandos disponíveis:

Para este exemplo eu usei o método Handle que registra apenas responder imediatamente ao usuário com string. Vamos implementar algo mais interessante, como, por exemplo, timer. Adicione ao seu código anterior mais um manipulador, desta vez dinâmico com HandleFunc :

 bot.HandleFunc ("/ timer {seconds}", timerHandler) 

Como você pode ver, a rota desta vez aceita a variável {seconds} para que o usuário possa especificar o valor do temporizador. Tudo o que precisamos implementar agora é a função timerHandler , que recebe o *tbot.Message com todo o conteúdo necessário:

 func timerHandler (m * tbot.Message) { 
// m.Vars contém todas as variáveis, analisadas durante o roteamento
secondsStr: = m.Vars ["segundos"]
// Converter a variável de string em um valor inteiro de segundos
segundos, err: = strconv.Atoi (secondsStr)
if err! = nil {
m.Reply ("Número inválido de segundos")
Retorna
}
m.Replyf ("Temporizador para% d segundos iniciados", segundos)
time.Sleep (time.Duration (seconds) * time.Second)
m.Reply ("Tempo esgotado!")
}

Vamos tentar, execute o go run main.go novamente e envie algum comando de timer para o bot:

Como podemos ver, o timer dorme por 42 segundos e depois o bot envia a mensagem Time out! para o chat. Bingo!

Por enquanto, para obter informações mais completas sobre o tbot consulte o repositório readme em https://github.com/yanzay/tbot e godoc em https://godoc.org/github.com/yanzay/tbot .

Aproveite o seu desenvolvimento bot e compartilhe bots interessantes para o mundo!

Não entre em pânico.

Texto original em inglês.