Vous n'êtes pas identifié(e).
Pages : 1
Un bot en python avec irclib ircbot . Lib non disponible pour python3
installer : python-irclib
Le script est là pour expliquer les bases du module ircbot . Code source mieux visible
python
#!/usr/bin/python
# -*- coding: utf8 -*-
import irclib
import ircbot
from random import randrange
CANAL = "#crunchbang-fr" # Canal ou l'on veut la connection
class BotManon(ircbot.SingleServerIRCBot):
def __init__(self):
ircbot.SingleServerIRCBot.__init__(self, [("irc.freenode.net", 6667)],
"Bob_botPY","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(" ") # Transformation du message en liste
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
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 minuscules pour être sûr :-)
serv.kick(CANAL, auteur, "Pas d'insultes , plop dehors !!!!!") # Si c'est une insulte on expulse l'auteur
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() == "bob_botpy") 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())
pass #ici on passe même fonctionnement que pour on_pubmsg
def on_kick(self, serv, ev): # Si le bot a été kick on se reconnect au canal
serv.join(CANAL)
serv.action(CANAL, "Bha non tu peux pas me sortir")
if __name__ == "__main__":
BotManon().start()
Dernière modification par manon (03-07-2013 00:34:18)
Hors ligne
Merci manon, j'essayerai de le convertir en python 3 avec la lib pypeul
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Je te dis un très grand merci pour ce code très instructif. Je me suis amusé avec comme un petit fou
Hors ligne
Et nous pouvons désormais voir une Lyine sado-maso se balader sur l'IRC ! <3
Merci pour le code , je vais toucher un peu à ça
-L'anonymat complet n'existe pas , il faudra vous y faire .
-La plus grande faille informatique ? l'homme sans aucun doute .
Hors ligne
Je n’arrive pas à trouver la librairie python2-irclib dans les dépôts Parabola (-> Arch libre), et pas non plus dans ceux de pip…
Du coup, j’ai téléchargé une version sourceforge, j’ai du modifier le code, ça ne fonctionne toujours pas.
C’est dommage, ton bot a l’air vraiment sympa.
Hors ligne
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Hors ligne
Pages : 1