Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 9e323ed5912b6dd08947218452fc097e59300090
  • master par défaut protégée
2 résultats

index.php

Blame
  • nardco.py 17,08 Kio
    # -*- coding: utf8 -*-
    
    
    import irclib
    import ircbot
    import random
    import time
    import module_red as red
    import rateau
    from fuzzywuzzy import fuzz
    import requests
    from HTMLParser import HTMLParser
    import philotron
    import pipotron
    import viieux
    import codage
    import nordpresse
    import commit
    import kohlanta
    
    # import rateau
    def couper(pseudo):
        return pseudo.split("!")[0]
    
    
    def aram():
        Champ = [" Aatrox ", " Ahri ", " Akali ", " Alistar ", " Amumu ", " Anivia ", " Annie ", " Ashe ", " Azir ",
                 " Bard ", " Blitzcrank ", " Brand ", " Braum ", " Caitlyn ", " Cassiopeia ", " Cho'Gath ", " Corki ",
                 " Darius ", " Diana ", " Dr.Mundo ", " Draven ", " Ekko ", " Elise ", " Evelynn ", " Ezreal ",
                 " Fiddlesticks ", " Fiora ", " Fizz ", " Galio ", " Gangplank ", " Garen ", " Gnar ", " Gragas ",
                 " Graves ", " Hecarim ", " Heimerdinger ", " Irelia ", " Janna ", " Jarvan IV ", " Jayce ", " Jax ",
                 " Jinx ", " Kalista ", " Karma ", " Karthus ", " Kassadin ", " Katarina ", " Kayle ", " Kennen ",
                 " Kha'Zix", " Kog'Maw ", " LeBlanc ", " Lee Sin ", " Leona ", " Lissandra ", " Lucian ", " Lulu ", " Lux ",
                 " Maître Yi ", " Malphite ", " Malzahar ", " Maokai ", " Miss Fortune ", " Mordekaiser ", " Morgana ",
                 " Nami ", " Nasus ", " Nautilus ", " Nidalee ", " Nocturne ", " Nunu ", " Olaf ", " Orianna ",
                 " Pantheon ", " Poppy ", " Quinn ", " Rammus ", " Rek'Sai ", " Renekton ", " Rengar ", " Riven ",
                 " Rumble ", " Ryze ", " Sejuani ", " Shaco ", " Shen ", " Shyvana ", " Singed ", " Sion ", " Sivir ",
                 " Skarner ", " Sona ", " Soraka ", " Swain ", " Syndra ", " Tahm Kench ", " Talon ", " Taric ", " Teemo ",
                 " Thresh ", " Tristana ", " Trundle ", " Tryndamere ", " Twisted Fate ", " Twitch ", " Udyr ", " Urgot ",
                 " Varus ", " Vayne ", " Veigar ", " Vel'Koz ", " Vi ", " Viktor ", " Vladimir ", " Volibear ", " Warwick ",
                 " Wukong ", " Xerath ", " Xin Zhao ", " Yasuo ", " Yorick ", " Zac ", " Zed ", " Ziggs ", " Zilean ",
                 " Zyra"]
        return Champ[random.randint(0, len(Champ) - 1)]
    
    last_args = None
    last_cmd = None
    global pour
    pour = []
    global suple
    suple = -1
    
    
    
    global cmdCarac
    cmdCarac = "$"
    
    personnalizedCmd = {}
    
    def isCommande(string):
        global cmdCarac
        return string[0] == cmdCarac
    
    def no_hl(pseudo) :
        ins = u'\u200C'.encode("utf-8")
        return pseudo[0] + str(ins) + pseudo[1:]
    
    
    
    class Boooob(ircbot.SingleServerIRCBot):
        def __init__(self):
            ircbot.SingleServerIRCBot.__init__(self, [("irc.iiens.net", 6667)], "nardco", "Je suis un bot")
            self.temps = 0
            self.reddit_temps = 0
            self.fichier_reddit = "canaux_reddit.txt"
            self.clever = -1
    
        #
        def on_welcome(self, serv, ev):
            serv.join("#nardco")
            serv.join("#fokontest")
            serv.join("#Titch")
            # serv.join("#gynecoloc")
            serv.privmsg("NickServ", "IDENTIFY MotDePasse")  # rejoint #nardco à sa connexion
    
        #
        def on_join(self, serv, ev):  # Quand qq entre dans le chann, le bot inclus
            auteur = str(irclib.nm_to_n(ev.source()))
            canal = ev.target()
    
        def on_privmsg(self, serv, ev):  # msg privé
            personne = ev.source()
            canal = ""
    
            if "tichadou" in personne:
                msg = ev.arguments()[0]
                msg = msg.split(" ")
                a = 0
                for f in msg:
                    a = a + 1
                    if f[0] == "#":
                        canal = f
                        msg.pop(a - 1)
                        break
                msg = " ".join(msg)
                try:
                    serv.privmsg(canal, msg)
                except:
                    serv.privmsg("#nardco", "probleeeeme")
    
        def on_invite(self, serv, ev):
            personne = ev.source()
            canal = ev.arguments()[0]
            serv.privmsg("Titch", couper(personne) + " m'a invité sur " + canal)
            serv.join(canal)
    
        def on_kick(self, serv, ev):
            serv.join("#nardco")
            print("kick")
            personne = ev.source()
            personne = couper(personne)
            canal = ev.target()
            if canal == "#Titch" and personne != "Titch" :
                serv.mode(canal, "-o " + personne)
    
    
        def on_pubmsg(self, serv, ev):  # quand qq ecrit dans le chat
            global suple
            global cmdCarac
            global personnalizedCmd
            global last_args
            global last_cmd
            canal = ev.target()
    
            personne = ev.source()
            personne = couper(personne)
            message = ev.arguments()[0]
            message = message.lower()  # Passe le message en minuscules
            split = message.split(" ")
            if "op pls" in message or "op plz" in message :
                serv.mode(canal, "+o "+personne)
            if 'nardco' in split[0] and ' ou ' in message :
                splt = split[1:]
                idx = splt.index("ou")
                choice = random.randint(0,1)
                if choice == 0 :
                        res = splt[:idx]
                else :
                    if '?' in splt[-1] :
                        res = splt[idx+1:-1]
                    else :
                        res = splt[idx+1:]
                serv.privmsg(canal, ' '.join(res)+ "!")
    
            # lol of legends
            if " aram " in message:
                people = ["Jara", "Nami"]
                if personne in people:
                    if "Jara" in personne:
                        serv.privmsg(canal, "TOURBILOL DEBILE MOUHAHAHA")
                    if "Nami" in personne:
                        serv.privmsg(canal, "Non Nami, ton main n'est pas op ! <3")
                else:
                    serv.privmsg(canal, "A l'evidence," + aram() + "est totalement op.")
    
                # les lignes suivantes sont pour le lol
            if "Titch" in personne and "tg" in message:
                #serv.privmsg(canal, "Oui maitre...")
                suple = -1
    
            if "Titch" in personne and "openbar" in message:
                serv.privmsg(canal, "OPEN BAAAAAAR")
                suple = 1
            if "souple" in message and suple == 1:
                serv.privmsg(canal, "et fruité")
            if "fruité" in message and suple == 1:
                serv.privmsg(canal, "et gouleyant")
            if "gouleyant" in message and suple == 1:
                serv.privmsg(canal, "et souple")
    
            if suple == 1 and ("dur" in message or "long" in message or "court" in message or "molle" in message):
                serv.privmsg(canal, "Comme ta bite " + personne + "! ")
            if suple == 1:
                if "aucun lien" in message:
                    serv.privmsg(canal, "Je suis fils unique...")
    
    
    
    
                    # fonctions de deplacement dans les chann
    
            if "Titch" in personne and "goto" in message and "nardco" in message:
                f = 0
                for f in range(len(message) - 4):
                    if message[f:f + 4] == "goto":
                        serv.join("#" + message[f + 5:])
                        break
            if "Titch" in personne and "leave" in message and "nardco" in message:
                serv.part(canal)
    
    
                # REDDIT // A COMPLETER
            if isCommande(message):
                args = message[1:].split(" ")
                cmd = args[0]
                if cmd == "!!" and last_args and last_cmd : 
                    args = last_args
                    cmd = last_cmd
                if cmd == "!" and last_cmd :
                    cmd = last_cmd
                
                if len(args) > 1 and args[1] == "!" : 
                    args = last_args
    
                last_args = args 
                last_cmd = cmd
    
                if cmd == "help":
                    if len(message.split(" ")) > 1:
                        if "reddit" in message.split(" ")[1]:
                            serv.privmsg(
                                canal,
                                ("Commandes : "
                                "{0}reddit <sub> ; "
                                "{0}addsub <sub> ; "
                                "{0}delsub <sub> ; "
                                "{0}getsub ."
                                "(getsub renvoie des infos sur "
                                "tous les subs enregistrés pour le chann) ").format(cmdCarac))
                    else:
                        serv.privmsg(canal,
                                     ("Commandes disponibles :"
                                     "{0}help reddit , "
                                     "{0}rateau,"
                                     "sinon, tentez de dire 'op plz' ...").format(cmdCarac))
    
                elif cmd == "ffs" :
                    serv.privmsg(canal, "Nom de Dieu de putain de bordel de merde de saloperie de connard d'enculé de ta mère")
                elif cmd == "chuck" :
                    try :
                        parser = HTMLParser()
                        r = requests.get("http://www.chucknorrisfacts.fr/api/get?data=tri:alea;nb:1")
                        rep = r.json()[0]['fact']
                        rep = parser.unescape(rep)
                        print(rep)
                        serv.privmsg(canal, rep.encode('utf8'))
                    except Exception  :
                        print str(Exception)
                        serv.privmsg(canal, "erreur :(")
                elif cmd == "thanos" and personne == "Titch"  :
                    liste = self.channels[canal].users()
                    random.shuffle(liste)
                    serv.privmsg(canal, "snap ! ")
                    cleanlist = []
                    for f in liste :
                        if f[0] in ["~", "&", "@", "%", "+"] and 'nardco' not in f :
                            cleanlist.append(no_hl(f))
                        elif 'nardco' not in f :
                            cleanlist.append(no_hl(f))
                    live = cleanlist[:len(liste)//2]
                    dead = cleanlist[len(liste)//2 + 1 :]
                    pp = dead[random.randint(0,len(dead) - 1)]
                    ts = live[random.randint(0,len(live) - 1)]
                    serv.nick('{0}{1}_'.format(pp[0],pp[2:] )
                    serv.privmsg(canal, "I don't feel so good mr {0}{1}".format(ts[0],ts[2:])
                    serv.nick('nardco')
                    serv.privmsg(canal, "Vivants : {0}".format(", ".join(live) ))
                    serv.privmsg(canal, "Morts : {0}".format(", ".join(dead) ))
                    #serv.mode(canal, "+" + len(live)*'v' + " "+" ".join(live))
                    #serv.mode(canal, "+m")
    
                elif cmd == "roll" :
                    content = split[1]
                    if len(content.split('d')) == 2 :
                        nbrDe = content.split('d')[0]
                        valDe = content.split('d')[1]
                        print(content, nbrDe, valDe)
                        res = ""
                        try :
                            for f in range(int(nbrDe)) :
                                res = res + " {} ".format(random.randint(1,int(valDe)))
                            serv.privmsg(canal, res)
                        except :
                            pass
    
                elif cmd == "rateau" :
                    serv.privmsg(canal, "{0} : {1}".format(personne, rateau.getRateau()))
                    
                elif cmd == "viieux" : 
                    serv.privmsg(canal, viieux.get_viieux())
    
                elif cmd == "kohlanta" : 
                    if (len(args) > 1 ) :
                        serv.privmsg(canal, kohlanta.kohlanta(args[1], canal))
    
                elif cmd == "new" :
                    if len(args)>1 :
                        if args[1] in personnalizedCmd.keys() :
                            serv.privmsg(canal, 'commande deja existante')
                        else :
                            newCmd = {}
                            newCmd['result'] = ' '.join(args[2:])
                            newCmd['author'] = personne
                            newCmd['channel'] = canal
                            personnalizedCmd[args[1]] = newCmd
                            print personnalizedCmd
                            serv.privmsg(canal, 'commande ajoutée : ${0}, par {1}, pour le chann {2}'.format(args[1], personne, canal))
                elif cmd == "del" :
                    if len(args) > 1 :
                        if args[1] in personnalizedCmd.keys() :
                            if personne == personnalizedCmd[args[1]]['author'] :
                                del personnalizedCmd[args[1]]
                                serv.privmsg(canal, 'done')
                            else :
                                serv.privmsg(canal, "vous n'etes pas l'auteur de cette commande !")
                elif cmd == "get" :
                    res = []
                    for f in personnalizedCmd.keys() :
                        if personnalizedCmd[f]["channel"] == canal :
                            res.append(f)
                    serv.privmsg(canal, 'commandes pour {0} : {1}'.format(canal, ", ".join(res)))
                            
    
                elif cmd == "debat" :
                    serv.privmsg(canal, philotron.genererSujet())
                elif cmd == "pipo" :
                    serv.privmsg(canal, pipotron.pipo())
    
                elif cmd == "np" : 
                    res = nordpresse.nordpresse()
                    serv.privmsg(canal, res)
                elif cmd == "commit" : 
                    res = commit.commit()
                    serv.privmsg(canal, res)
                elif cmd == "zertyu" : 
                    if len(args) > 2 :
                        if args[1] == "code" : 
                            serv.privmsg(canal, codage.encode(" ".join(args[2:])))
                        elif args[1] == "decode" :
                            serv.privmsg(canal, codage.decode(" ".join(args[2:])))
    
    
                elif cmd == "getsub":
                    res = red.get_new(self.fichier_reddit, canal)
                    for f in res:
                        serv.privmsg(canal, f)
    
                elif cmd == "sub":
                    bd = open(self.fichier_reddit, "r")
                    for f in bd:
                        try:
                            if canal == f.split("|")[0]:
                                serv.privmsg(canal, "Liste des subs pour " + canal + " : " + f.split("|")[1])
                        except:
                            pass
    
                elif cmd == "delsub":
                    sub = message.split(" ")[1]
                    bd = open(self.fichier_reddit, "r")
                    rem = 0
                    tmp = []
                    for f in bd:
                        tmp.append(f)
                        try:
                            if sub in f.split("|")[1] and canal == f.split("|")[0]:
                                rem = 1
                        except:
                            pass
                    bd.close()
                    if rem == 1:
                        bd = open(self.fichier_reddit, "w")
                        for f in tmp:
                            if canal == f.split("|")[0]:
                                h = f.split("|")[1]
                                h = h.split(",")
                                h.remove(sub)
                                g = f.split("|")[0] + "|" + ",".join(h)
                            else:
                                g = f
                            bd.write(g)
                        serv.privmsg(canal, "sub : " + sub + " enlevé de la bd pour " + canal)
                    else:
                        serv.privmsg(canal, "Erreur, le sub n'est pas dans la bd")
    
                elif cmd == "addsub":
                    sub = message.split(" ")[1]
                    bd = open(self.fichier_reddit, "r")
                    add = 1
                    tmp = []
                    for f in bd:
                        tmp.append(f)  # On ajoute la ligne -> tmpt est une image de la bd
                        try:
                            if sub in f.split("|")[1] and canal == f.split("|")[0]:
                                add = 0
                        except:
                            pass
                    bd.close()
                    if add == 1:
                        canalok = 0
                        bd = open(self.fichier_reddit, "w")
                        for f in tmp:
                            if canal == f.split("|")[0]:
                                g = f + sub + ","
                                canalok = 1
                            else:
                                g = f
                            bd.write(g)
                        if canalok == 0:
                            bd.write("\n" + canal + "|" + sub + ",")
                        bd.close()
                        serv.privmsg(canal, "Subreddit : " + sub + " ajouté a la bd pour " + canal)
                    else:
                        serv.privmsg(canal, "Subreddit deja dans la bd...")
    
                elif fuzz.ratio(cmd, "reddit") > 80 :
                    full = False
                    if len(args) > 1 :
                        sub = args[1]
                    else :
                        sub = "jokes"
                    if len(args) > 2 :
                        if "full" in args[2] :
                            full = True
                    if time.time() - self.reddit_temps > 3:
                        self.reddit_temps = time.time()
    
                        try:
                            tmp = red.joke(sub, full)
                        except:
                            tmp = red.joke()
                        try:
    
                            for f in tmp:
                                serv.privmsg(canal, f)
                                time.sleep(0.5)
                            time.sleep(1)
    
                        except:
                            serv.privmsg(canal, "oups, c'est cassé...")
                    else:
                        serv.privmsg(canal, personne + ": Merci de patienter :)")
                elif cmd in personnalizedCmd.keys() :
                    if personnalizedCmd[cmd]['channel'] == canal :
                        serv.privmsg(canal, personnalizedCmd[cmd]['result'])
    
    
    
    
    if __name__ == "__main__":
        Boooob().start()