Elemental código en Python que permite a un Bot de Telegram tener "inteligencia artificial". La verdad es que mola muchísimo.
Este código es un pequeño bot de Telegram que usa la librería de pyBorg. Está listo para revisar y aprender, además podrás conocer el funcionamiento y crear tú propio bot de inteligencia artificial. Luego vas con tus amigos y les muestras lo que has aprendido :v
- Cómo ponerlo en funcionamiento
- Cosas a tener en cuenta
- Se han creados unos archivos al ejecutar el script del bot...
- Cómo funciona el bot y como que aprende
Al ser programado en Python se necesita del interprete en su versión 2.x ya que es la versión en que trabaja la librería pyBorg. Se puede ejecutar simplemente con:
python ChatBotTelegram.py
En el sistema operativo Windows se requiere de la librería de request que es necesitada por la librería de la API de Telegram para Bot
Descargalo ahora mismo sin ningún problema
El código necesita de un TOKEN para que tu bot se pueda comunicar con Telegram. En el código está definida la variable TOKEN
pero está vacía.
# -*- coding: utf-8 -*-
import random
import telebot
import pyborg
import sys
TOKEN = ''
bot = telebot.TeleBot(TOKEN)
Dentro de telegram te tienes que poner en contacto con El gran Bot de @BotFather. Entonces le hablas y le dice que quieres un bot, pero como BotFather no entiende el castellano (ni el inglés, el esperanto, el árabe, o cualquier otro idioma) le tienes que hablar por medios de comandos.
Al comienso te saldrá un botón que dice START (al menos que diga otra cosa porque lo has configurado con otro idioma o cualquier motivo absurdo) que debes presionar, entonces BotFather te responderá con una serie de comandos para crear tu bot.
Con el comando /newbot
de expresas tus deseos por crear un homúnculo bot nuevo. Luego de esto BotFather te pedirá el nombre y el @username del nuevo bot.
Como por arte de magía BotFather te enviará un mensaje y dentro de éste estará el preciado TOKEN. Ahora corres a tu código python y lo pegas donde debería ir:
TOKEN = 'CaRa-Teres:RarossNoSerPelotu2niCopiarEsto'
Ahora estará todo listo.
Puedes seguir charlando con BotFather y decirle todo lo que quieres para tu nuevo bot, como la imagen del perfil, la descripción, etc.
Si amigo, entre ellos está archive.zip
si no estoy mal. Estos archivos permiten nada más y nada menos que el bot APRENDAAA!!!. Así no más.
El bot lee los mensajes que recibe y los despedaza en trocitos (como lo hace Jack el destripador) y después lo guarda en archive.zip
. Al momento de recibir el mensaje, y habiendo almacenado ya un gran número de oraciones el bot es capaz de responder en función de todo lo que ha aprendido, en las palabras que conoce, en la forma como se usaron, y en el número de veces que fueron usadas, y en otros factores.
Si miramos en el archivo ChatBotTelegram.py
podemos observar que allí se crea un objeto llamado ia
instanciado de la clase pyborg
en el módulo pyborg
.
import pyborg
import sys
TOKEN = ''
bot = telebot.TeleBot(TOKEN)
ia = pyborg.pyborg()
Este objeto representa la mente del bot, es por eso que ahora explicaré cómo podríamos obtener el número de palabras conocidas por el bot y el número de contextos.
La clase pyborg
tiene un "diccionario" con algunas configuraciones, entre ellas están las keys num_words
y num_contexts
, esto pasa a ser parte de un objeto, de la clase cfgset
en el modulo cfgfile
, llamado settings
.
self.settings = self.cfgfile.cfgset()
self.settings.load("pyborg.cfg",
{ "num_contexts": ("Total word contexts", 0),
"num_words": ("Total unique words known", 0),
"max_words": ("max limits in the number of words known", 6000),
"learning": ("Allow the bot to learn", 1),
"ignore_list":("Words that can be ignored for the answer", ['!.', '?.', "'", ',', ';']),
"censored": ("Don't learn the sentence if one of those words is found", []),
"num_aliases":("Total of aliases known", 0),
"aliases": ("A list of similars words", {}),
"process_with":("Wich way for generate the reply (pyborg|megahal)", "pyborg"),
"no_save" :("If True, Pyborg don't saves the dictionary and configuration on disk", "False")
})
Si la queremos conocer, el número de palabras o contextos, simplemente le pedimos esos datos al objeto settings
dentro del objeto de clase pyborg
, siendo estos: settings.num_words
y settings.num_contexts
.
import pyborg
ia = pyborg.pyborg()
print('El bot conoce {0} palabras, pero eso no es todo, también conoce {1}'.format(ia.settings.num_words, ia.settings.num_contexts))
O lo hacemos con los comandos de pyborg