#!/usr/bin/python3# -*- coding: utf-8 -*-import socket# On determine le reseau sur lequel on va se connecter.ircsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server = "chat.freenode.net" # ServerBUFFER_SIZE = 1024 # Preparationchannel = "#test" # Channelbotnick = "test" # Nickadminname = "admin"# Connection au reseau.ircsock.connect((server, 6667)) # 6697 pour utiliser ssl ou sinon 6667.ircsock.send(bytes("USER "+ botnick +" "+ botnick +" "+ botnick + " " + botnick + "\n", "UTF-8")) # Identification du bot.ircsock.send(bytes("NICK "+ botnick +"\n", "UTF-8")) # Assigne le nick du bot# Rejoindre le cannal.def joinchan(chan): ircsock.send(bytes("JOIN "+ chan +"\n", "UTF-8")) ircsock.send(bytes("PRIVMSG "+ chan+ " :plop!\n", "UTF-8")) ircsock.send(bytes("PRIVMSG "+ adminname + " :En attente.\n", "UTF-8"))# Envoyer un message.def sendmsg(msge, target=channel): # sends messages to the target. ircsock.send(bytes("PRIVMSG "+ target +" :"+ msge +"\n", "UTF-8"))# Ici tout marche bien.# Envoyer un fichier.def send(fichier) : ircsock.send(bytes("DCC SEND "+ adminname + " " + fichier +"\n", "UTF-8"))joinchan(channel)def rcvmsg() : ircmsg = ircsock.recv(2048).decode("UTF-8") ircmsg = ircmsg.strip('\n\r')# Ne pas oublier le fameux ping pong... if ircmsg.find ("PING :") != -1: ping() # Bon, la, je met pas la fonction pour repondre au ping, elle existe bien# Recuperer le message ainsi que son expediteur. elif ircmsg.find("PRIVMSG") != -1: name = ircmsg.split('!',1)[0][1:] message = ircmsg.split('PRIVMSG',1)[1].split(':',1)[1] print(message) messge = message.split() # Et voila! Effectivement c'etait important! if name == adminname and messge[0] == "send" : if len(messge) > 1 : send(messge[1])# C'est ici que ca ne va pas... j'ai aussi essaye :# ircsock.send(bytes("DCC SEND "+ adminname + " :fichier\n", "UTF-8"))# ircsock.send(bytes("SEND "+ adminname + " :" + messge[1] + "\n", "UTF-8"))# ircsock.send(bytes("PRIVMSG "+ adminname +" :/dcc send "+ adminname + " " + messge[1] +"\n", "UTF-8"))# ircsock.send(bytes("DCC SEND "+ adminname + " :" + messge[1] +"\n", "UTF-8"))# ircsock.send(bytes("DCC SEND "+ adminname + " " + messge[1] +"\n", "UTF-8"))joinchan(channel)while rcvmsg() != exitcode : rcvmsg()# Voila, comme ca ca doit etre un peu mieux pour comprendre.
if name == adminname and messge[0] == "send" :
message = ircmsg.split('PRIVMSG',1)[1].split(':',1)[1]
messge = message.split()
joinchan(channel)while rcvmsg() != exitcode : rcvmsg()
BUFFER_SIZE = 1024
/dcc send neib fichier
/dcc send BOT fichier
def rcvmsg(): ircmsg = ircsock.recv(2048).decode("UTF-8") ircmsg = ircmsg.strip('\n\r')
def send(fichier) : ircsock.send(bytes("DCC SEND "+ adminname + " " + fichier +"\n", "UTF-8"))
#!/usr/bin/python3# -*- coding: utf-8 -*-import socketimport osimport time# Declaration des fonctions.def pong(): ircsock.send(bytes("PONG :pingis\n", "UTF-8"))def sendfile(): ircsock.send(bytes("DCC SEND neib DCC.py" , "UTF-8"))def rcvmsg(): ircmsg = ircsock.recv(2048).decode("UTF-8") ircmsg = ircmsg.strip('\n') if ircmsg.find ("PING :") != -1 : pong() elif ircmsg.find("PRIVMSG") != -1 : name = ircmsg.split('!',1)[0][1:] message = ircmsg.split('PRIVMSG',1)[1].split(':',1)[1] if name == "neib" and message == "sendfile" : sendfile()# Parametrage de la connection.# On determine le reseau sur lequel on va se connecter.ircsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server = "chat.freenode.net" # Serverchan = "#TestDCCSEND" # Channelbotnick = "testdcc" # Nick#### Connection au reseau.ircsock.connect((server, 6667)) # 6697 pour utiliser ssl ou sinon 6667.ircsock.send(bytes("USER "+ botnick +" "+ botnick +" "+ botnick + " " + botnick + "\n", "UTF-8")) # Identification du bot.ircsock.send(bytes("NICK "+ botnick +"\n", "UTF-8")) # Assigne le nick du bot## Rejoindre un cannal.ircsock.send(bytes("JOIN "+ chan +"\n", "UTF-8")) ircmsg = ""#ircsock.send(bytes("HELP\n", "UTF-8"))ircsock.send(bytes("PRIVMSG "+ chan+ " :plop!\n", "UTF-8"))ircsock.send(bytes("PRIVMSG neib :Ok.\n", "UTF-8"))while 1 : rcvmsg()
def rcvfile(): ircsock.send(bytes("DCC GET neib", "UTF-8"))
if name == "neib" and message == "sendfile" : sendfile() print("c'est bon")
Attention ! Le serveur irc ne connait pas la commande dcc, ça ne sert donc à rien de lui envoyer.