Tourmaline – Framework para bots de Telegram en Crystal
Publicado el 19 de junio de 2019Tourmaline es un framework desarrollado en el lenguaje de programación Crystal. Con la reciente versión 0.70, alcanzó soporte completo para la API de Bots de Telegram:
Framework para la API (y ojalá pronto Cliente) de Bots de Telegram en Crystal. Basado fuertemente en Telegraf, esta implementación en Crystal permite que tu bot de Telegram sea escrito en un lenguaje tanto hermoso como rápido. Benchmarks vendrán pronto.
¡Ya podemos escribir nuestro bot de Telegram en Crystal!
Para empezar a usar Tourmaline, tenemos que agregarlo a los shards de nuestra aplicación en el archivo shard.yml
.
dependencies:
tourmaline:
github: watzon/tourmaline
version: ~> 0.7.0
Para experimentar, creé un proyecto Crystal nuevo con crystal init app milton_bot
, agregué Tourmaline en shard.yml y ejecuté shards install
. Después creé un bot en Telegram para poder probarlo. De Actualizar un canal de Telegram automáticamente con WordPress:
Para crear un bot, existe un bot… En Telegram mismo debemos conversar con BotFather, quien nos provee instrucciones para crear un nuevo bot. Los comandos a ejecutar son:
/start
,/newbot
,nombre para el bot
,nombre de usuario para el bot
(debe terminar en «bot») y listo. BotFather nos va a avisar que el bot ha sido creado y nos va a dar un token para acceder a la Bot API.
Para este experimento le di vida a milton_bot
. Ya creado, obvuve el API token pidiéndoselo a BotFather desde /mybots
(o con /token
). Para poder enviarme un mensaje por Telegram, tuve que averiguar mi id de usuario hablándole a MyIdBot.
Con unas pocas líneas de códigoya podemos mandarnos mensajes:
require "tourmaline/bot" class MiltonBot VERSION = "0.1.0" def initialize(api_token) @bot = Tourmaline::Bot::Client.new(api_token) end def hola @bot.send_message("MI_ID_DE_USUARIO", "Hola Fernando, soy milton") end end milton = MiltonBot.new("API_TOKEN") milton.hola |
😱 🤖
También podemos hacer que envíe mensajes a un canal o grupo. Para poder mandar mensajes directos a otros usuarios, necesitamos su ID y que el usuario haya ejecutado /start
en una conversación con nuestro bot.
Como ya tengo un canal de pruebas, agregué a milton_bot como administrador y con un par de líneas de código más puedo mandar mensajes al canal:
@bot.send_message("@picandocodigo_test", "Hello World, I'm milton") @bot.send_message("@picandocodigo_test", "https://i.giphy.com/media/d3Kq5w84bzlBLVDO/giphy.gif") |
Y el resultado:
Se pueden hacer varias cosas más con Tourmaline, pueden ver el código fuente y aprender más en watzon/tourmaline en GitHub. Tengo una idea específica con MiltonBot, espero en algún momento tener tiempo para darle más vida y publicar mi primer proyecto en Crystal.
No hay comentarios en este post
Feed de comentariosDejar un comentario
<pre lang="L"> código </pre>
Siendo L un lenguaje compatible GeSHI. Más info.