Bot IRC en python
Bot en python avec ircbot : lib non dispo pour python3
Je vous présente juste un petit script commenté qui explique les bases du module ircbot . ( c'est pas la source de gibotGirl )
Installer python-irclib
sudo apt-get install python-irclib
le code :
#!/usr/bin/python # -*- coding: utf8 -*- import irclib import ircbot from random import randrange CANAL = "#shovel-crew" # Canal ou l'on veut la connection class BotManon(ircbot.SingleServerIRCBot): def __init__(self): ircbot.SingleServerIRCBot.__init__(self, [("irc.freenode.net", 6667)], "shovelGirl","Bot réalisé en Python avec ircbot") # ici choisir le nom du bot ici Bot_botPY self.insultes = ["fuck", "connard", "connasse"] # On précise les mots interdit self.punch = ["donne un coup de fouet à ", "donne un coup de pelle à ", "casse les cotes de ", "donne un coup de tête à "] # Creation d'une liste pour réponse aléatoire def on_welcome(self, serv, ev): # A la connection au serveur serv.join(CANAL) serv.privmsg(CANAL, "Salut a tous") # Le bot est poli :-) def on_privmsg(self, serv, ev): # Quand le bot recoit un message en privé auteur = irclib.nm_to_n(ev.source()) # On recupére l'auteur du message message = ev.arguments()[0] # On recupére le message arguments = message.split(' ') if (auteur == "Manon_crunch"): # Administrateur du bot permet de lui donner des ordres if '&dire' in arguments[0]: serv.privmsg(CANAL, message[5:]) # le bot renvoie le message que vous lui avez envoyer sans le mot clef if '&action' in arguments[0]: serv.action(CANAL, message[7:]) # le bot fait l'action /me plus le reste du message if '&exit' in arguments[0]: serv.disconnect("A la prochaine bye") else: # Si pas l'administrateur serv.privmsg(auteur, "Ho !!! Je suis un bot !!!!") # On envoit le message en privé a l'auteur def on_pubmsg(self, serv, ev): # A là reception des Messages public sur le canal auteur = irclib.nm_to_n(ev.source()) message = ev.arguments()[0] arguments = message.split(" ") # Transformation du message en liste nombreArg = len(arguments) # On compte le nombre d'arguments print auteur+' : '+message # On affiche le message dans le terminal for mot in self.insultes: # On vérifit que le mot n'est pas une insulte if mot in message.lower() : # On passe le message en minuscule pour etre sûr :-) serv.kick(CANAL, auteur, "Pas d'insultes , plop dehors !!!!!") # Si c'est une insulte on expulse l'auteur break if '&recherche' in arguments[0]: # si le premier mot est &recherche # On forme une url url = "http://www.google.com/search?q="+message[10:].replace(' ', '+') serv.privmsg(CANAL, url) # On envoit l'url if '&vodka' in arguments[0]: if nombreArg < 2: serv.action(CANAL, "prend une volka avec "+auteur) # serv.action comme /me pour le bot else: if (arguments[1] == "*") or (arguments[1] == "all") : serv.action(CANAL, "paye sa tournée de vodka") droit = randrange(1,9) # pour réponse aléatoire if (droit == 1) or (droit == 2): serv.privmsg(CANAL, "Non "+arguments[1]+" a trop prit de vodka") # serv.privmsg if (droit == 3) or (droit == 4): serv.action(CANAL, "se sauve avec la bouteille de vodka") else: serv.action(CANAL, "offre une vodka à "+auteur) if '&punch' in arguments[0]: action = randrange(0,len(self.punch)) if (arguments[1].lower() == "shovelgirl") or (arguments[1].lower() == "manon_crunch"): # On protége son bot et son speudo serv.action(CANAL, "donne un gros coup de pelle à "+auteur) #On se venge else: serv.action(CANAL, self.punch[action]+arguments[1]) # Le bot punch def on_action(self, serv, ev): # Si message recu dans le canal avec la commande /me auteur = irclib.nm_to_n(ev.source()) message = ev.arguments()[0] print auteur+' : '+message # On affiche le message dans le terminal def on_kick(self, serv, ev): # Si le bot a été kick on se reconnect au canal serv.join(CANAL) if __name__ == "__main__": BotManon().start()