Dungeon of Bits
Aprendiendo informática.
Dungeon of Bits
Creación de un bot para Telegram en Python para jugar a Heroquest - Parte 1.

Todos los pasos necesarios para crear un bot de Telegram utilizando Python.

hacer un bot de Telegram

Hacer un bot de Telegram en Python:

En este tutorial verás todos los pasos necesarios para crear un bot de Telegram usando el lenguaje de programación Python.

El objetivo del bot será realizar tiradas de dados, realizando tiradas aleatorias de dados de 6 caras.

Después se ampliará la funcionalidad del bot haciendo que tiré dados del juego de mesa HeroQuest y gestione el mazo de cartas de tesoro del mismo juego.

Crear el bot de Telegram:

El primer paso para crear un bot de Telegram es pedir un código de bot a Telegram, eso se hace buscando en la misma aplicación de Telegram al BotFather, tal y como se muestra en la imagen.

hacer un bot de Telegram

Para crear un nuevo bot se introduce el comando /newbot.

Entonces BotFather solicitará un nombre para el bot y un nombre de usuario del bot (que debe acabar en bot).

En este ejemplo se utiliza el nombre heroquestManager y el usuario heroquestManagerBot, tal y como se ve en la imagen.

hacer un bot de Telegram

BotFather, crea el bot y da al creador un token, un identificador único del bot, este identificador que se ve en la imagen sirve para que cualquiera pueda manipular el bot.

hacer un bot de Telegram

ES MUY IMPORTANTE QUE NADIE CONOZCA ESE CÓDIGO SALVO LAS PERSONAS QUE DEBAN TRABAJAR EN LA CREACIÓN Y MODIFICACIÓN DEL PROPIO BOT.

Editar el bot de Telegram:

El bot de Telegram puede modificarse en bastantes aspectos (incluso se le puede cambiar el nombre).

Para ello se utiliza el comando mybots dentro del chat con BotFather.

hacer un bot de Telegram

Como se ve en la imagen se pueden cambiar algunos detalles del mismo, vamos a cambiar la "descripción" y el "acerca de":

hacer un bot de Telegram

Ahora cambiaremos también la imagen del bot y le pondremos una más acorde con su función:

hacer un bot de Telegram

De momento ya no modificaremos nada más desde BotFather.

Crear el bot en Python:

El lenguaje que utilizaremos para crear el bot es Python, Python3 de hecho.

Para conectar nuestro programa con Telegram utilizaremos la API de Telegram, llamada Telegram Bot API.

En particular usaremos la implementación de la API de eternnoir.

El fichero de Python lo llamaremos heroquestManager.py y lo podremos editar con nuestro editor favorito.

Función tirar un dado de 6 caras:

La primera función será un generador de números aleatorios de 1 a 6, como un dado de 6 caras.

@bot.message_handler(commands=['dado'])
def dado6Caras(message):
    chat_id = message.chat.id
    random.seed()
    r = random.randint(1,6)
    bot.send_message(chat_id,r)

La primera línea indica que si el bot recibe el comando dado (en Telegram sería /dado) se debe ejecutar el código inferior que es la función dado6Caras.

La función lo que hace es en cada una de sus cuatro líneras:

  • Guardar el identificador del chat al que pertenece la llamada al bot en la variable chat_id.
  • Crear una semilla para calcular el número aleatorio.
  • Llamar a la función randint que genera un valor entre 1 y 6 y lo guarda en la variable "r".
  • Por último la función envía un mensaje con el valor generado "r" al chat desde el que se ha llamado al bot.

El código del bot quedaría así:

import telebot
import random

bot = telebot.TeleBot("TOKEN_DEL_BOT")

@bot.message_handler(commands=['dado'])
def dado6Caras(message):
    chat_id = message.chat.id
    random.seed()
    r = random.randint(1,6)
    bot.send_message(chat_id,r)

bot.polling()

**Importante sustituir TOKEN_DEL_BOT con el valor de Token de Bot que nos haya dado BotFather^^

Para probarlo solamente hay que ejecutar el código con Python en un equipo con acceso a Internet.

hacer un bot de Telegram

Función tirar un dado de Heroquest:

Los dados de HeroQuest son, básicamente, dados de 6 caras con dibujos en vez de números.

La composición de un dado de Heroquest es:

hacer un bot de Telegram

  • 2 calaveras blancas.
  • 1 calavera negra.
  • 2 escudos blancos.
  • 1 escudo negro.

Para mostrar los dibujos de las tiradas de dados en realidad enviaremos un mensaje con la URL donde tengamos la imagen de cada icono de dado de Heroquest.

La función que hemos de crear básicamente genera un número aleatorio de 1 a 6 y devuelve el icono que habría en esa cara del dado, pero en lugar de enviar un mensaje como en la función anterior, ahora usará la función contestar a mensaje (reply_to) que hará que se muestren las imágenes de las urls que le pasemos como parámetro.

@bot.message_handler(commands=['d1'])
def dadoHeroquest1(message):
    chat_id = message.chat.id
    random.seed()
    r = random.randint(1,6)
    if r <=2:
        d = "1"
    elif r <= 4:
        d = "2"
    elif r <= 5:
        d = "3"
    else:
        d = "4"
    imagen = open('/root/dado'+str(d)+'.jpg', 'rb')
    bot.send_photo(chat_id, imagen)

Como se ve en el código, ahora cuando el usuario envíe el mensaje /d1 se ejecutará la función dadoHeroquest1 que lo que hace es calcular un número de 1 a 6.

Teniendo en cuenta que hay caras con el mismo icono, tendremos que:

  • Si sale un 1 o un 2 mostraremos la imagen -> dado1.jpg = Escudo blanco.
  • Si sale un 3 o un 4 mostraremos la imagen -> dado2.jpg = Calavera blanca.
  • Si sale un 5 mostraremos la imagen -> dado3.jpg = Escudo negro.
  • Si sale un 6 mostraremos la imagen -> dado4.jpg = Calavera negra.

hacer un bot de Telegram

Función tirar varios dados de HeroQuest:

Para agilizar las tiradas de dados, porque lo habitual es que los jugadores y monstruos lancen más de un dado de ataque o defensa de Heroquest usaremos un bucle.

Por ejemplo, una función que tire dos dados de ataque sería:

@bot.message_handler(commands=['d2'])
def dadoHeroquest2(message):
        chat_id = message.chat.id
        random.seed()
        for x in range(2):
                r = random.randint(1,6)
                if r <=2:
                        d = "1"
                elif r <= 4:
                        d = "2"
                elif r <= 5:
                        d = "3"
                else:
                        d = "4"
                imagen = open('/root/dado'+str(d)+'.jpg', 'rb')
                bot.send_photo(chat_id, imagen)

Cambiando el mensaje d2 por d3 y for x in range(2): por for x in range(3): ya tendríamos una función que tiraría 3 dados. Y así podemos generar las funciones que sean necesarias.

hacer un bot de Telegram

El código final quedaría así:

import telebot
import random

bot = telebot.TeleBot("TOKEN_DEL_BOT")

@bot.message_handler(commands=['dado'])
def dado6Caras(message):
    chat_id = message.chat.id
    random.seed()
    r = random.randint(1,6)
    bot.send_message(chat_id,r)

@bot.message_handler(commands=['d1'])
def dadoHeroquest1(message):
    chat_id = message.chat.id
    random.seed()
    r = random.randint(1,6)
    if r <=2:
        d = "1"
    elif r <= 4:
        d = "2"
    elif r <= 5:
        d = "3"
    else:
        d = "4"
    imagen = open('/root/dado'+str(d)+'.jpg', 'rb')
    bot.send_photo(chat_id, imagen)

@bot.message_handler(commands=['d2'])
def dadoHeroquest2(message):
        chat_id = message.chat.id
        random.seed()
        for x in range(2):
                r = random.randint(1,6)
                if r <=2:
                        d = "1"
                elif r <= 4:
                        d = "2"
                elif r <= 5:
                        d = "3"
                else:
                        d = "4"
                imagen = open('/root/dado'+str(d)+'.jpg', 'rb')
                bot.send_photo(chat_id, imagen)

bot.polling()

En la siguiente entrega veremos cómo gestionar el mazo de cartas de tesoro del juego también desde el bot.

Es importante tener en cuenta que el bot solo funcionará mientras esté corriendo el programa en Python.


Ejemplo de programación Javascript - Generador de aventuras de Cthulhu

Programación de página web sencilla para generar aleatoriamente contextos de partidas de rol para juego ambientado en los mitos de Lovecraft.

Programación en Javascript: En este tutorial vamos a ver un poco como funciona el lenguaje de programación Javascript, para ello introduciremos los siguientes conceptos: Llamar a una función de Javascript desde un botón de la web. Creación de números aleatorios. Uso de Arrays en Javascript. Sustitución de código HTML con Javascript. ¿Qué pretendemos conseguir?: Bien, lo primero que se debe hacer cuando programamos algo es saber exactamente qué queremos conseguir. En el caso del ejemplo lo que...

Leer más...
Instalar Teamviewer en Linux

En este tutorial aprenderemos a instalar Teamviewer en el sistema operativo Linux Ubuntu.

Requisitos: Para realizar esta práctica necesitas un equipo con Linux (Ubuntu). Instalar Teamviewer: Se puede descargar Teamviewer desde la web de Teamviewer, como vamos a instalar Teamviewer en un equipo con Linux Ubuntu 18.04 elegiremos el paquete deb, lo que haremos es copiar en el bloc de notas la dirección al enlace de la descarga. Y una vez...

Leer más...
Instalar y configurar Moodle en Linux - parte 1

En este tutorial instalarás el entorno de aprendizaje Moodle en una instalación de Linux.

Requisitos: Haber dormido y merendado, que ésto va para largo y, además: Para realizar esta práctica necesitas un equipo con LAMP (Linux, Apache, PHP y MySQL). Instalar Moodle: Descargar Moodle: La página oficial de Moodle es moodle.org, desde allí podrás descargar la última versión de Moodle para tu sistema. En el ejemplo descargamos la versión 3.8.2 con el comando: wget https://download.moodle.org/download.php/direct/stable38/moodle-latest-38.zip Esto descargará Moodle en un fichero zip...

Leer más...
Instalar y configurar un servidor de correo electrónico con Postfix y SquirrelMail en Linux

En este tutorial instalarás un servidor de correo electrónico llamado Postfix y utilizarás Squirrelmail para recibir y enviar mails.

Requisitos: Para realizar esta práctica necesitas un equipo con Linux (Ubuntu) con Apache y PHP instalados, puedes consultar el tutorial para instalarlos aquí. Instalar Postfix: Por suerte para ti instalar Postfix es tan fácil en Ubuntu y el resto de distribuciones basadas en Debian como introducir el siguiente comando en el terminal: sudo apt install postfix Una vez descargado el paquete se mostrará una pantalla de configuración similar...

Leer más...
Instalar y configurar cliente de correo electrónico Thunderbird en Linux

En este tutorial instalarás el cliente mail Thunderbird en un equipo con sistema operativo Linux Ubuntu.

Requisitos: Para realizar esta práctica necesitas un equipo con Linux (Ubuntu) y una cuenta de correo electrónico ya existente. Instalar Thunderbird: Thunderbird está disponible en el repositorio de Ubuntu por lo que es fácil instalarlo, tan solo debes ejecutar el siguiente comando: sudo apt install thunderbird Y lo lanzas desde terminal con el comando: thunderbird Para agregar en Thunderbird una cuenta de correo ya existente ves al menú de Thunderbird...

Leer más...