[PYTHON] un bot IRC basique - darcosion - 12-06-2016
Coucou
j'ai codé récemment un petit bot python juste pour voir comment fonctionne le protocole (plutôt sympa et simple d'ailleurs) et je me suis dis que ça pourrais vous plaire, alors je le partage ici, si le coeur vous en dis de le pimper pour en faire un bot pour votre IRC
Code : #!/usr/bin/env python3
import sys
import socket
import socks
import string
import bs4
from urllib import request as req
import BeautifulSoup as bs4
import re
HOST = "tonirc.gouv.fr"
PORT = 6667
NICK = "tonbot"
IDENT = "youhou"
REALNAME = "tonbotonbot"
MASTER = "darcosion"
readbuffer = ""
s=socket.socket( )
s.connect((HOST, PORT))
s.send(bytes("NICK %s\r\n" % NICK, "UTF-8"))
s.send(bytes("USER %s %s bla :%s\r\n" % (IDENT, HOST, REALNAME), "UTF-8"))
def irc_join(chan):
s.send(bytes("JOIN #"+chan+"\r\n", "UTF-8"));
def irc_quit(chan):
s.send(bytes("PART #"+chan+"\r\n", "UTF-8"));
irc_join("tonchan")
s.send(bytes("PRIVMSG %s :Bonjour Master\r\n" % MASTER, "UTF-8"))
while 1:
readbuffer = readbuffer+s.recv(1024).decode("UTF-8")
temp = str.split(readbuffer, "\n")
readbuffer=temp.pop( )
for line in temp:
line = str.rstrip(line)
line = str.split(line)
if(line[0] == "PING"):
s.send(bytes("PONG %s\r\n" % line[1], "UTF-8"))
if(line[1] == "PRIVMSG"):
sender = ""
if(line[2][0] == '#'):
sender = line[2]
else:
for char in line[0]:
if(char == "!"):
break
if(char != ":"):
sender += char
size = len(line)
i = 3
message = ""
while(i < size):
message += line[i] + " "
i = i + 1
message = message.lstrip(":")
#ajouter ici le code de lecture des messages
youtubeVideo = message[message.find("https://www.youtube.com/watch?v="):message.find("https://www.youtube.com/watch?v=")+44]
if(youtubeVideo[:4] == "http"):
try:
result = lien.open(youtubeVideo)
except:
break
soup = bs4.BeautifulSoup(result, "lxml")
titre = soup.findAll(class_ = "watch-title" )
renvoie = ""
for e in titre:
renvoie += e['title']
#récupère le contenu et envoie les données
s.send(bytes("PRIVMSG %s :%s \r\n" % (sender, renvoie), "UTF-8"))
break
for index, i in enumerate(line):
print(line[index])
edit : pour le moment, sa seule fonctionnalité est de récupérer des liens youtube et d'en indiquer le titre de vidéo.
RE: [PYTHON] un bot IRC basique - Yttrium - 13-06-2016
Cool, merci beaucoup, maintenant on te laisse 2 jours pour implémenter tout le protocole décrit dans la RFC1459 :p
Nan plus sérieusement, c'est vraiment intéressant
|