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

help.js

Blame
  • Duplication à partir d'un projet inaccessible.
    nardco.py 17,91 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
    from  ensiee import ensiee
    
    # 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
    
                cmds = ['help', 'ecole', 'ffs', 'thanos', 'chuck', 'roll', 'rateau', 'viieux', 'kohlanta', 'new', 'del', 'get', 'debat', 'pipo', 'np', 'commit', 'zertyy', 'getsub', 'sub', 'delsub', 'addsub', 'reddit']
    
                most_likely = (cmd, 0)
                if cmd not in cmds : 
    
                    for f in cmds : 
                        ratio = fuzz.ratio(cmd, f)
                        if ratio > 60 and ratio > most_likely[1] : 
                            most_likely = (f, ratio)
                    cmd = most_likely[0]
    
    
                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}").format(', '.join(cmds)))
                elif cmd == "ecole" : 
                    if len(args) > 1 : 
                        serv.privmsg(canal, "Oui, vous êtes bien à l'{}".format(ensiee(args[1])))
                    else :
                        serv.privmsg(canal, "Oui, vous êtes bien à l'{}".format(ensiee()))
                    
                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}_'.format(pp))
                    serv.privmsg(canal, "I don't feel so good mr {0}".format(ts))
                    serv.nick('nardco')
                    live_ = []
                    dead_ = []
                    for f in live :
                        live_.append(no_hl(f))
                    for f in dead :
                        dead_.append(no_hl(f))
                    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 cmd == "reddit" :
                    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()