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 cheeky)

Installer python-irclib  

sudo apt-get install python-irclib

le code cheeky

#!/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()		


	
		

 

Vus : 595
Publié par shovel-crew : 22