Skip to content

Elemental código en Python que permite a un Bot de Telegram tener "inteligencia artificial".

Notifications You must be signed in to change notification settings

David256/ChatBotTelegram

Repository files navigation

ChatBotTelegram

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

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

Consideraciones a tener en cuenta en Windows

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

Cosas a tener en cuenta

Pero... No tengo Telegram, ¿qué hago?

Descargalo ahora mismo sin ningún problema

Pero... El código no me funciona si lo ejecuto con python

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)

Dónde conseguir este 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.

Se han creados unos archivos al ejecutar el script del bot...

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.

Cómo funciona el bot y como que aprende

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.

Cómo se cuántas palabras ha aprendido el bot

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.

Ejemplo:

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

About

Elemental código en Python que permite a un Bot de Telegram tener "inteligencia artificial".

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages