Chatbot em Python
Publicado por Fernando (última atualização em 17/09/2015)
[ Hits: 12.323 ]
Homepage: https://github.com/phoemur/
Este script escrito em Python 3 faz login em um canal de IRC e fica aguardando. Ele responderá a mensagens privadas, simulando uma conversa, utilizando o protocolo do chatbot ALICE: http://alice.pandorabots.com/
O A.L.I.C.E (Artificial Linguistic Internet Computer Entity) é um chatterbot criado na Lehigh University por Richard S. Wallace, ativada em 1995, sendo um dos robôs mais populares da atualidade. É um projeto da internet que faz parte do Projeto Pandora. Este projeto envolve a criação de bots de todos os tipos, especialmente aqueles em bate-papo.
Este script em particular pega a resposta via HTTP e joga para o IRC e vice-versa. Edite o script para configurar o canal e o nickname desejados. Depois entre no canal com seu cliente favorito e converse com o robô (APENAS EM INGLÊS).
#!/usr/bin/env python3 import os import re import socket import time import urllib.request import urllib.parse import http.cookiejar from random import randint # SETTINGS SERVER = 'irc.freenode.net' PORT = 6667 CHANNEL = '##slackware' NICK = 'chatbot_test' class chatter(object): def __init__(self): self.url='http://sheepridge.pandorabots.com/pandora/talk?botid=b69b8d517e345aba&skin=custom_input' self.cj = http.cookiejar.CookieJar() self.opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(self.cj)) self.opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; rv:2.2) Gecko/20110201'), ('Accept', 'text/html, text/plain, text/css, text/sgml, */*;q=0.01'), ('Cache-Control', 'no-cache')] def talk(self, m): self.data = {'input': str(m)} with self.opener.open(self.url, urllib.parse.urlencode(self.data).encode('UTF-8')) as url: content = url.read().decode('UTF-8') repl = re.search('<b>A.L.I.C.E.:</b> (.*)<br/>', content) return str(repl.group(1)) def main(): # Create socket and log in s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((SERVER, PORT)) s.send('NICK {}\r\n'.format(NICK).encode('ISO-8859-1')) s.send('USER {} {} {} .:\n'.format(NICK, NICK, NICK).encode('ISO-8859-1')) s.send('JOIN {}\r\n'.format(CHANNEL).encode('ISO-8859-1')) time.sleep(2) print(s.recv(1024).decode('ISO-8859-1')) # Mainloop chatbot = chatter() while True: msg = s.recv(4096).decode('ISO-8859-1') if len(msg) > 0: print(msg) if msg[0:4] == 'PING': s.send(msg.replace('PING', 'PONG').encode('ISO-8859-1')) if re.search('PRIVMSG {} :'.format(NICK), msg): try: subject = msg.split('!')[0].lstrip(':') question = msg.split(':')[2].rstrip() answer = chatbot.talk(question) if re.search('[Jj]udge', answer): answer = re.sub('[Jj]udge', subject, answer) time.sleep(randint(3, 12)) s.send('PRIVMSG {} :{}\r\n'.format(subject, answer).encode('ISO-8859-1')) except: continue if __name__ == '__main__': main()
Tradutor on-line versão Web!!!
Nenhum coment�rio foi encontrado.
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Converter os repositórios Debian para o novo formato com as chaves
Instalando Spotify no Debian 13
Realizar overclock no Miyoo Mini (plus ou normal)
linux mint reconhece microfone de lapela como fone de ouvido sem micro... (6)
E aí? O Warsaw já está funcionando no Debian 13? (6)
Problema com o Centro de Aplicativos Ubuntu 25.04 (1)