Chatbot em Python
Publicado por Fernando (última atualização em 17/09/2015)
[ Hits: 12.309 ]
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()
Conversor de vídeos do YouTube para MP3
Cotação atual do dólar - versão Python
Nenhum coment�rio foi encontrado.
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
Atualizar Debian Online de uma Versão para outra
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Debian 13 Trixie para Iniciantes
Convertendo pacotes DEB que usam ZSTD (Padrão Novo) para XZ (Padrão Antigo)
baschrc customizado pegeui vários. (3)
Rust é o "C da nossa geração"? (8)