Bonsoir.
Voilà cela fait bientôt 2 semaines que j’essaye de programmer un robot irc sous python …
Seulement une fois que mon robot est connécté au server, mon terminale reste vide. Sur le chat irc rien ne m’indique qu’un nouvelle utilisateur est connécté.
Le tutoriel qui m’as aidé : Ici
Mon programme :
[code]# -- coding: utf8 --
import sys
import socket
import string
HOST=‘chat.freenode.net’
PORT=6667
#La connection irc ce fait sur le protocole 6667
NICK=‘’
#C’est le nom du robot
IDENT='BotModeration’
REALNAME='’
OWNER=‘drigollier’
#Le robot appartiend à @drigollier
CHANNELINIT=’#******’
#Le canale par défault #******
readbuffer=’’
#On vas afficher tous les messages du server
s=socket.socket( )
#Création des sockets
s.connect((HOST, PORT))
#Connection au server
s.send('NICK '+NICK+‘n’)
#envoie le pseudonyme du robot au server
s.send(‘USER ‘+IDENT+’ ‘+HOST+’ bla :’+REALNAME+‘n’) #Identify to server
while 1:
line=s.recv(500)
#reçoi les messages du server
print line
#affiche les messages du server
if line.find(‘Welcome to the UnderNet IRC Network’)!=-1:
#C’est la merde(Je ne peux pas être sur qu’il travail)
s.send('JOIN '+CHANNELINIT+‘n’)
#Join un channel
if line.find(‘PRIVMSG’)!=-1:
#Apelle une fonction d’analyse syntaxique
parsemsg(line)
line=line.rstrip()
#retire l’option 'rs’
line=line.split()
if(line[0]==‘PING’):
#si le server ping d’autres points de connexion
s.send('PONG '+line[1]+‘n’)
def parsemsg(msg):
complete=msg[1:].split(’:’,1)
#Analyse le message en données utiles
info=complete[0].split(’ ‘)
msgpart=complete[1]
sender=info[0].split(’!’)
if msgpart[0]==’' and sender[0]==OWNER: #Traite tous les messages qui commences par '
‘
cmd=msgpart[1:].split(’ ')
if cmd[0]==‘op’:
s.send('MODE ‘+info[2]+’ +o '+cmd[1]+‘n’)
if cmd[0]==‘deop’:
s.send('MODE ‘+info[2]+’ -o '+cmd[1]+‘n’)
if cmd[0]==‘voice’:
s.send('MODE ‘+info[2]+’ +v '+cmd[1]+‘n’)
if cmd[0]==‘devoice’:
s.send(‘MODE ‘+info[2]+’ -v ‘+cmd[1]+‘n’)
if cmd[0]==‘sys’:
syscmd(msgpart[1:],info[2])
if msgpart[0]==’-’ and sender[0]==OWNER :
#msg ne traite que les commandes envoyé au server
cmd=msgpart[1:]
s.send(cmd+‘n’)
print ‘cmd=’+cmd
def syscmd(commandline,channel):
cmd=commandline.replace(‘sys ‘,’’)
cmd=cmd.rstrip()
os.system(cmd+’ >temp.txt’)
a=open(‘temp.txt’)
ot=a.read()
ot.replace(‘n’,’|’)
a.close()
s.send(‘PRIVMSG ‘+channel+’ :’+ot+‘n’)
return 0[/code]
Le message de connéxion:
[code]:niven.freenode.net NOTICE * :*** Looking up your hostname…
:niven.freenode.net NOTICE * :*** Checking Ident
:niven.freenode.net NOTICE * :*** Found your hostname[/code]