Lo primero es crear el bot. Para ello hay un Bot dedicado de telegram, llamado BotFather https://t.me/botfather. Hacemos un /newbot y seguimos instrucciones asignando un nombre y un nombre público para el bot. Obtenemos una API key que guardamos convenientemente en un lugar seguro. Por último añadimos a nuestro Bot a lista de administradoras del canal o grupo donde queremos que pueda actuar
Lo siguiente es añadir un webhook para que Telegram se comunique con él cada vez que alguien interactúa con el bot. Este no es más que un endpoint/vista de django accesible públicamente.
Para ello creamos una url pública (exenta de pasar el token CSRF a la vista):
#!python
from django.views.decorators.csrf import csrf_exempt
urlpatterns = [
path(
'telegram-webhook',
csrf_exempt( views.TelegramWebhookView.as_view() ),
name='telegram_webhook'
),
]
Y creamos la vista que se comunicará con el canal:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | |
Vemos que es una vista que simplemente acepta peticiones POST conteniendo datos JSON siguiendo el formato:
1 2 3 4 5 6 7 | |
Simplemente usaremos estos datos para comunicarnos de vuelta con el canal, añadiendo a la vista un método para lanzar mensajes al mismo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
Para ello necesitaremos definir en los private_settings el token del bot:
1 2 3 4 | |
Podemos probarlo desde consola usando CURL:
1 | |
https://core.telegram.org/bots/api#setwebhook
Por último añadimos el webhook a Telegram visitando la siguiente URL (habiendo sustituido previamente token y URL base):
https://api.telegram.org/bot<token>/setWebhook?url=<url>/telegram-webhook