Comunidad Central
Advertisement
Comunidad Central
Build a Wiki - Lenguajes en los que programar un bot
Build a Wiki

¡Un saludo a todos los wikinautas! Ya hemos visto que son los chatbots y para que sirven, ahora toca explicar el tema de forma técnica.

Cada bot tiene su lenguaje y su librería (muy usado es el Pywikibot), no todos comparten la misma función y siempre encontraremos bots diferentes en cada sitio de la red Fandom. Los bots son muy vulnerables a la hora de ponerlos en marcha, cualquier edición que no sea patrullada antes de guardarla en la que el bot hace puede ser un error fatal. Por eso lo primero es ir paso por paso para que se entienda mejor el lenguaje que estamos usando para programar e iniciar nuestro bot.

Lenguajes[]

Python[]

Python es un lenguaje de programación con una sintaxis muy legible y sin tanto esfuerzo para aprendérselo, tened en cuenta de que éste se basa en el lenguaje C. También es mas compatible con Linux que con Windows, por lo que es mas recomendable usar dicho sistema operativo. Éste lenguaje puede ser muy útil a la hora de programar un bot y a la vez interesante. Un claro ejemplo es el bot Suwako Bot que tiene como lenguaje de programación Python.

Nota: Python 2.7 es más recomendable que su versión en 3.0, cambiando ciertas cosas absurdas.

Ejemplo de código
import humanoid # Importe de módulo.
import sys # Importe de sistema

def MiFuncion(): # Definición de función.
ᅟᅟᅟᅟprint 'Mi Bot V 1.0\n' # Imprime el mensaje en la terminal, el \n marca el espaciado.
ᅟᅟᅟᅟtry:
ᅟᅟᅟᅟᅟᅟᅟᅟhumanoid.loggin(default_data_file) # Función que tiene el módulo importado
ᅟᅟᅟᅟexcept:
ᅟᅟᅟᅟᅟᅟᅟᅟprint 'Un error desconocido ha ocurrido, cerrando programa...'
ᅟᅟᅟᅟᅟᅟᅟᅟsys.exit(1) # Marca del fin del programa

MiFuncion() # Inicio del programa

Ruby[]

Ruby es un lenguaje de programación en que tiene aspectos similares a los lenguajes JavaScript, Perl, Python y C. Este tipo de lenguaje posee una fantasía a la hora de programar en ello. Desafortunadamente Ruby no es tan compatible con Windows y se requiere mas el sistema Linux, pero gracias a este lenguaje los chatbots han sido realizados con éxito.

Ejemplo de código
require humanoid_chatbot # Importe

def initialize # Definición de la función
ᅟᅟᅟᅟputs 'Mi Bot V 1.1' # Imprime el mensaje en la terminal. Inicia el programa insertando el nombre del bot'
ᅟᅟᅟᅟSTDOUT.flush
ᅟᅟᅟᅟnombrebot = gets.chomp # Entrada de escritura
ᅟᅟᅟᅟif nombrebot != 'Suwako Bot' # Verificar si la entrada no coincide con el nombre "Suwako Bot"
ᅟᅟᅟᅟᅟᅟᅟᅟputs 'Error, nombre incorrecto'
ᅟᅟᅟᅟelse # De modo contrario, el programa inicia.
ᅟᅟᅟᅟᅟᅟᅟᅟClassMainBot.initcode(username, nombrebot, idroot, idroom) # Acción del importe
ᅟᅟᅟᅟend # Fin del if y else
end # Fin de la definición.

initialize

JavaScript[]

Antes que nada, un chatbot no puede ser hecho en un archivo .js en MediaWiki, para ello se debe usar el programa NodeJS en que consiste con la ejecución de archivos JavaScript de manera local y con pocos requisitos. NodeJS es compatible con ambos sistemas operativos (Linux y Windows) pero no es tan usado para realizar varios bots, aun que para que esté conectado a la API de MediaWiki es muy útil a la hora de usarlo.

Ejemplo de código
if (bot == 'Suwako Bot' && password == default_passwordinfile) {
ᅟᅟinit();
ᅟᅟif ('API Error' in contentJSON) {
ᅟᅟᅟᅟlog('Error del API');
ᅟᅟᅟᅟexitBot(APIERROR);
ᅟᅟ} else {
ᅟᅟᅟᅟselfLogToSocketIO(roomId, site_fandom, bot, password, port, server);
ᅟᅟᅟᅟlogOn();
ᅟᅟᅟᅟshowMessageToChat(mainRoomId, 'Inicio completo.')
ᅟᅟ}
}

PHP[]

El lenguaje PHP es muy usado para entornos de servidores, así como MediaWiki. Aun así, este lenguaje posee una sintaxis similar al JavaScript y CSS usando las "llaves" ({}). Puede ser muy útil a la hora de incorporar el API en el archivo PHP y también el módulo de socket.io que es la base del chat (junto a su controller).

Ejemplo de código
private function init_socket()
{
ᅟᅟᅟᅟ$this->logger->action('Iniciando...')
ᅟᅟᅟᅟ$result = $this->http->POST( $this->cred["wiki_url"] . "/wikia.php?controller=Chat&format=json" );
ᅟᅟᅟᅟ$result = json_decode( $result, true );
ᅟᅟᅟᅟ$this->logger->success('Inicio completo.');
ᅟᅟᅟᅟ$this->logger->status_on(data_file, upload);
ᅟᅟᅟᅟ$this->logger->success('Registro guardado en: Project:Chat/Registros 00-00-2010');
}

Conectando API[]

La API servirá para que el bot funcione y se conecte a los servidores de Fandom estando conectado al controller del Chat, socket.io, api.php y entre otros APIs que posee MediaWiki y Fandom. Puede ser que el lenguaje requiera de un módulo que conecte al API, así como requests. Luego obtenido un módulo que haga posible la conexión con la API y con el programa será necesario hacer "sesiones", ya que hacerlo desde cuenta anónima tendrá muchas limitaciones. También tenemos que tener en cuenta de que todo API está formado con JSON y algunos casos con PHP

Ejemplo de código
import humanoid # Importe de módulo.
import sys # Importe de sistema

import requests # Importe del requests

def loginFandom():

ᅟᅟᅟᅟglobal masterlogin
ᅟᅟᅟᅟmasterlogin = requests.session() #Función de sesion del requests

ᅟᅟᅟᅟ"""
ᅟᅟᅟᅟParametros para ver si siteFandom contiene HTTP://, .wikia.com o ambos.
ᅟᅟᅟᅟEl interwiki está activado por defecto ya que se usa mayormente.
ᅟᅟᅟᅟ"""
ᅟᅟᅟᅟsiteWithHTTP = 0
ᅟᅟᅟᅟsiteWithWikiaCom = 0
ᅟᅟᅟᅟsiteWithBothProtocols = 0
ᅟᅟᅟᅟsiteOnlyInterwiki = 1

ᅟᅟᅟᅟsiteFandom = raw_input('Introduce el wiki en que quieres iniciar el bot: ')
ᅟᅟᅟᅟ#Verificaciones
ᅟᅟᅟᅟif 'http://' in siteFandom:
ᅟᅟᅟᅟᅟᅟᅟᅟsiteWithHTTP = 1
ᅟᅟᅟᅟᅟᅟᅟᅟprint 'Aviso: el link contiene HTTP, la función de siteWithHTTP ha sido habilitada\n'

ᅟᅟᅟᅟelif 'wikia.com' in siteFandom:
ᅟᅟᅟᅟᅟᅟᅟᅟsiteWithWikiaCom = 1
ᅟᅟᅟᅟᅟᅟᅟᅟprint 'Aviso: el link contiene .Wikia.com, la función de siteWithWikiaCom ha sido habilitada\n'
        
ᅟᅟᅟᅟelif 'wikia.com' and 'http' in siteFandom:
ᅟᅟᅟᅟᅟᅟᅟᅟsiteWithBothProtocols = 1
ᅟᅟᅟᅟᅟᅟᅟᅟprint 'Aviso: el link contiene .Wikia.com y HTTP://, la función de siteWithBothProtocols ha sido habilitada\n'
        
ᅟᅟᅟᅟelif 'wikia.com' and 'http' not in siteFandom:
ᅟᅟᅟᅟᅟᅟᅟᅟpass
        
ᅟᅟᅟᅟelse:
ᅟᅟᅟᅟᅟᅟᅟᅟprint 'Error de URL.'
ᅟᅟᅟᅟᅟᅟᅟᅟsys.exit(1)
        
ᅟᅟᅟᅟ#Definición del enlace del sitio:
ᅟᅟᅟᅟglobal mainSite
ᅟᅟᅟᅟif siteWithHTTP == 1:
ᅟᅟᅟᅟᅟᅟᅟᅟmainSite = siteFandom + '.wikia.com'
        
ᅟᅟᅟᅟelif siteWithWikiaCom == 1:
ᅟᅟᅟᅟᅟᅟᅟᅟmainSite = 'http://' + siteFandom
        
ᅟᅟᅟᅟelif siteWithBothProtocols == 1:
ᅟᅟᅟᅟᅟᅟᅟᅟmainSite = siteFandom
        
ᅟᅟᅟᅟelse:
ᅟᅟᅟᅟᅟᅟᅟᅟif siteOnlyInterwiki == 1:
ᅟᅟᅟᅟᅟᅟᅟᅟᅟᅟᅟᅟmainSite = 'http://' + siteFandom + '.wikia.com'
ᅟᅟᅟᅟᅟᅟᅟᅟelse:
ᅟᅟᅟᅟᅟᅟᅟᅟᅟᅟᅟᅟprint 'Error del programa.'
ᅟᅟᅟᅟᅟᅟᅟᅟᅟᅟᅟᅟsys.exit(1)
        
ᅟᅟᅟᅟglobal APIPage
ᅟᅟᅟᅟAPIPage = mainSite + '/api.php' # URL del API
        
ᅟᅟᅟᅟglobal chatPage
ᅟᅟᅟᅟchatPage = mainSite + '/wikia.php?controller=Chat' # URL del controlador del Chat.

Por si no se entiende el programa hace una sesión a las APIs de Fandom y al controlador del Chat (mientras esté iniciada la sesión del bot) y lo que hace es definir los enlaces de API para luego utilizarlos para hacer login, editar, eliminar páginas, subir archivos, entre otras acciones que podemos hacer en Fandom con la API de MediaWiki. También cuando se inserta el enlace hacia la comunidad donde nuestro bot estará el lenguaje verifica si el enlace que pusimos tiene protocolo HTTP, si contiene .wikia.com, si tiene ambos o si no tiene ninguno. Cuando hay un error en ello el programa imprime Error de URL en la terminal donde estamos ejecutando el bot. Para el final, el programa define correctamente el enlace donde estará conectado al API de MediaWiki y al controlador del Chat.

Nota: Posiblemente se tenga que hacer por JSON, dependiendo de los datos que queremos poner.

¿No puedes buscar uno que te agrade?[]

Hay cientos de lenguajes de programación en que se puede hacer un chatbot, siempre y cuando sea de tu agrado y cual sea el más fácil para ti. Mientras mas practiques y aprendas te acostumbras a programar.


¿Quieres recibir las últimas actualizaciones del blog de Fandom en español? ¡Haz clic aquí para seguir este blog!
¡Estamos realizando experimientos! ¡Aprende más sobre qué tipo de eventos y otras cosas hemos hecho o planeamos hacer!
¿Quieres hablar en tiempo real con otros editores y staff?
¡Únete a nuestro servidor oficial de Discord para usuarios registrados!


HumanoidPikachu avatar
Saektide es un estudiante argentino de secundaria enfocado en los lenguajes de programación tales como JS, CSS, HTML, Python, Ruby y en el mantenimiento de apps no oficiales de FANDOM. Su objetivo es ser un ingeniero tanto front-end como back-end. Es fanático de los mangas, Pokémon y del furry. Le encanta los videojuegos, la cultura japonesa, editar plantillas y viajar a distintas ciudades.

Advertisement