user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 03-07-2013 00:27:54

manon
#! Crunchikette #!

bot irc python2

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

#2 03-07-2013 07:22:11

IceF0x
#! Gourou Linux

Re : bot irc python2

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

#3 04-07-2013 00:13:14

WarLocG
#! modo de compet

Re : bot irc python2

Je te dis un très grand merci pour ce code très instructif. Je me suis amusé avec comme un petit fou smile


Avant de poser vos questions, jeter un oeil ici
Mon CodeVault et Wiki : ici
Les messages privés envers le staff sont uniquement pour les cas d'urgence ou affaires privées (personnelles). Les demandes se feront exclusivement sur le forum. Merci de respecter cette clause sous peine de sanctions.

Hors ligne

#4 17-07-2013 14:58:18

Lostyx
Membre

Re : bot irc python2

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 wink


-L'anonymat complet n'existe pas , il faudra vous y faire .
-La plus grande faille informatique ? l'homme sans aucun doute .

Hors ligne

#5 01-10-2014 16:37:22

FirePowi
Membre

Re : bot irc python2

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

#6 01-10-2014 18:40:21

IceF0x
#! Gourou Linux

Re : bot irc python2


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

#7 21-12-2014 21:23:29

Caly
Membre indécis

Re : bot irc python2

Yo,
Avec les difficultés que rencontrent certaines personnes pour trouver les libs, elles sont sur mon serveur ici. smile
Bisou.


Dell Latitude E7450 | Windows 10 && Debian | Sway | Intel i7-5600U | 16Go RAM | SSD 512Go
Fairphone 3 | Lineage OS | Pie
BlogDiaspora*Mastodon

Hors ligne

Pied de page des forums