Chatbot em Python
Publicado por Fernando (última atualização em 17/09/2015)
[ Hits: 12.069 ]
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()
Envio e recebimento de arquivos em Python
Conversor de vídeos do YouTube para MP3
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Melhorando a precisão de valores flutuantes em python[AJUDA] (9)
GLPI - Configuração de destinatário com conta Microsoft Exchange (0)
Vou voltar moderar conteúdos de Dicas e Artigos (3)
OpenVPN no MACBOOK conecta mas não pinga pastas de rede compartilhada ... (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta