Crear un Bot para Telegram que viva en la Raspberry (Facil)

Sección Unicamente para Tutoriales y Guías
Responder
Avatar de Usuario
ismaDev
Pi Alpha
Pi Alpha
Mensajes: 15
Registrado: 29 Jun 2016, 12:55
Agradecido: 0
Agradecimiento recibido: 0

Imagen

Para este tutorial voy a utilizar uno de los mejores lenguajes de programación que existen, Python.

Python viene instalado por defecto en la Raspberry Pi, pero puede que en otros mini-PCs, no esté.

Imagen

Instalar Python:

Código: Seleccionar todo

~ apt-get install python
Para programar el Bot de Telegram, en este caso voy a utilizar una libreria que se llama Telebot (https://github.com/eternnoir/pyTelegramBotAPI)

Instalar Telebot:

Código: Seleccionar todo

~ pip install pyTelegramBotAPI
El siguiente paso es obtener un token, eso se hace registrando el bot con su nombre desde este bot para Telegram: @BotFather (https://web.telegram.org/#/im?p=@BotFather)

Una vez instalado todo el entorno, hay que ponerse manos a la obra. Creando un nuevo archivo por ejemplo con extensión .py

Se importa la librería y se crea el bot asignado al token

Código: Seleccionar todo

import telebot 
bot = telebot.TeleBot(TOKEN)
El bot obtendrá los mensajes dentro del chat donde esté y necesita crear un listener para que los devuelva y podamos controlarlos:

Código: Seleccionar todo

def leeMensaje(mensajes):
    for mensaje in mensajes: #Este for each recorre cada mensaje dentro de la estructura que obtiene el bot de Telegram
        id_chat = mensaje.chat.id #Se necesita obtener el id del mensaje para saber a quien responder
        #Aqui se pueden hacer muchas cosas como por ejemplo saludar...
        bot.send_message(id_chat, 'Hola soy un Bot que vive en una Raspberry Pi') 

bot.set_update_listener(leeMensaje) #Asigna la función correspondiente como listener
Para utilizar comandos que manden los usuarios desde el chat por ejemplo /ayuda, hay que crear una función que funciona como manejador de eventos por cada comando.

Código: Seleccionar todo

@bot.message_handler(commands=['ayuda'])
def ayudar(mensaje):
     id_chat= mensaje.chat.id #El id del chat para saber el destino de la respuesta que va a enviar el bot
     bot.send_message( id_chat, 'Texto con la ayuda enviada') 
Finalmente se añade la función "polling" para que el bot no se detenga:

Código: Seleccionar todo

bot.polling(none_stop=True)
Y bueno el código completo, no lo he probado pero deberia funcionar, si teneis algun problema me lo comentais.

Código: Seleccionar todo

import telebot 
bot = telebot.TeleBot(PON_TU_TOKEN)

def leeMensaje(mensajes):
    for mensaje in mensajes: #Este for each recorre cada mensaje dentro de la estructura que obtiene el bot de Telegram
        id_chat = mensaje.chat.id #Se necesita obtener el id del mensaje para saber a quien responder
        #Aqui se pueden hacer muchas cosas como por ejemplo saludar...
        bot.send_message(id_chat, 'Hola soy un Bot que vive en una Raspberry Pi') 

bot.set_update_listener(leeMensaje) #Asigna la función correspondiente como listener

@bot.message_handler(commands=['ayuda'])
def ayudar(mensaje):
     id_chat= mensaje.chat.id #El id del chat para saber el destino de la respuesta que va a enviar el bot
     bot.send_message( id_chat, 'Texto con la ayuda enviada') 

bot.polling(none_stop=True)
Ejecutar el código y que se quede en segundo plano (apagando ssh)

Código: Seleccionar todo

~ nohub python programa.py

Otros códigos útiles:
neoranger escribió:Les paso para que lo tengan en cuenta, un script para que el bot no se caiga nunca, tanto por problemas de la API como por algun error de programación del bot.

http://www.neositelinux.com.ar/2016/05/ ... -telegram/

Saludos!!
Hice este tutorial gracias a: http://www.forocoches.com/foro/showthread.php?t=4491359 :victoria
Última edición por ismaDev el 17 Ene 2017, 12:02, editado 6 veces en total.
Avatar de Usuario
Kike
Administrador
Administrador
Mensajes: 2311
Registrado: 13 May 2016, 18:53
Ubicación: Islas Baleares - Menorca
Agradecido: 47 veces
Agradecimiento recibido: 175 veces
Contactar:

Imagen

Grandisimo trabajo @ismaDev
BUENISIMOS APORTES, sin palabras
:o :o :love :roll:
Si lo puedes soñar, lo puedes hacer
Avatar de Usuario
LaCuota
Pi Alpha
Pi Alpha
Mensajes: 21
Registrado: 29 Jun 2016, 12:30
Agradecido: 0
Agradecimiento recibido: 0

Por cosas como esta merece la pena pagarme.
Avatar de Usuario
neoranger
Pi Alpha
Pi Alpha
Mensajes: 18
Registrado: 24 Jun 2016, 15:22
Agradecido: 0
Agradecimiento recibido: 0

Les paso para que lo tengan en cuenta, un script para que el bot no se caiga nunca, tanto por problemas de la API como por algun error de programación del bot.

http://www.neositelinux.com.ar/2016/05/ ... -telegram/

Saludos!!
Avatar de Usuario
ismaDev
Pi Alpha
Pi Alpha
Mensajes: 15
Registrado: 29 Jun 2016, 12:55
Agradecido: 0
Agradecimiento recibido: 0

Perfecto lo añado!
Avatar de Usuario
alerodrom
Pi Newbie
Pi Newbie
Mensajes: 3
Registrado: 24 Jun 2016, 15:38
Agradecido: 0
Agradecimiento recibido: 0

Muchisimas gracias por el script para que el bot no caiga nunca! Estaba buscando exactamente eso y gracias a @Kike por enviar la recopilación de tutoriales por el grupo!
Avatar de Usuario
Kike
Administrador
Administrador
Mensajes: 2311
Registrado: 13 May 2016, 18:53
Ubicación: Islas Baleares - Menorca
Agradecido: 47 veces
Agradecimiento recibido: 175 veces
Contactar:

alerodrom escribió:Muchisimas gracias por el script para que el bot no caiga nunca! Estaba buscando exactamente eso y gracias a @Kike por enviar la recopilación de tutoriales por el grupo!
De nada hombree[emoji16] [emoji6] entre todos hacemos esta comunidad![emoji173]

Enviado desde mi GT-I9505 mediante Tapatalk
Si lo puedes soñar, lo puedes hacer
Avatar de Usuario
xxmonti
Pi Master
Pi Master
Mensajes: 257
Registrado: 19 May 2016, 10:05
Agradecido: 0
Agradecimiento recibido: 0

Como se obtiene el ID del chat? :roll:
Imagen
Avatar de Usuario
ismaDev
Pi Alpha
Pi Alpha
Mensajes: 15
Registrado: 29 Jun 2016, 12:55
Agradecido: 0
Agradecimiento recibido: 0

Esta es la ID del chat : id_chat = mensaje.chat.id
donadie9
Pi Alpha
Pi Alpha
Mensajes: 14
Registrado: 28 Ene 2017, 02:28
Agradecido: 0
Agradecimiento recibido: 0

Muy bueno tengo que probarlo me puede solucionar muchos problemas
DJuan
Pi Newbie
Pi Newbie
Mensajes: 4
Registrado: 09 Mar 2017, 21:03
Agradecido: 0
Agradecimiento recibido: 0

Perdonad que os moleste, pero soy novato en esto de linux y todo eso, he seguido el tutorial al pie de la letra, hay algo que deis por sentado que haya que hacer y lo hayais saltado? quizas por eso no soy capaz de hacerlo funcionar.Gracias.
trans242
Pi Alpha
Pi Alpha
Mensajes: 11
Registrado: 12 Mar 2017, 14:12
Agradecido: 0
Agradecimiento recibido: 0

gracias amigo
Crear un Bot
Avatar de Usuario
MrBeaker
Pi Master
Pi Master
Mensajes: 277
Registrado: 27 Dic 2016, 15:26
Agradecido: 1 vez
Agradecimiento recibido: 0

joder esto puede dar mucho juego... Por ejemplo para el tema de temperaturas puede ser super util.
Buen curro, muchísimas gracias!
ManuTdi
Pi Alpha
Pi Alpha
Mensajes: 27
Registrado: 07 Mar 2017, 07:33
Agradecido: 0
Agradecimiento recibido: 0

Alguien me explica para qué vale esto? Perdón pero no entendí nada
nene619
Pi Alpha
Pi Alpha
Mensajes: 20
Registrado: 09 Sep 2017, 13:33
Agradecido: 0
Agradecimiento recibido: 0

Buen aporte :mrgreen: :mrgreen:
Avatar de Usuario
Racso
Pi Alpha
Pi Alpha
Mensajes: 27
Registrado: 16 May 2016, 22:14
Ubicación: Murcia
Agradecido: 0
Agradecimiento recibido: 0

Hola!
Lo primero agradecerte este gran aporte =D!!
Lo segundo, ¿qué SO recomiendas que tenga la raspberry para albelgar el bot?
Un saludo.
Para cualquier duda, consulta o sugerencia este es mi Telegram: @Racso93 :inform
Avatar de Usuario
Racso
Pi Alpha
Pi Alpha
Mensajes: 27
Registrado: 16 May 2016, 22:14
Ubicación: Murcia
Agradecido: 0
Agradecimiento recibido: 0

neoranger escribió:Les paso para que lo tengan en cuenta, un script para que el bot no se caiga nunca, tanto por problemas de la API como por algun error de programación del bot.

http://www.neositelinux.com.ar/2016/05/ ... -telegram/

Saludos!!
Hice este tutorial gracias a: http://www.forocoches.com/foro/showthread.php?t=4491359 :victoria
[/quote]

Actualizo ese link: https://www.neositelinux.com/aporte-scr ... egram.html
Para cualquier duda, consulta o sugerencia este es mi Telegram: @Racso93 :inform
Responder