Bonsoir,

J'ai trouvé un script de base pour faire un bot irc en python.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from ircbot import SingleServerIRCBot
from irclib import nm_to_n, nm_to_h, irc_lower, ip_numstr_to_quad, ip_quad_to_numstr
 
class TestBot(SingleServerIRCBot):
    def __init__(self, channel, nickname, server, port=6667):
        SingleServerIRCBot.__init__(self, [(server, port)], nickname, nickname)
        self.channel = channel
 
    def on_nicknameinuse(self, c, e):
        c.nick(c.get_nickname() + "_")
 
    def on_welcome(self, c, e):
        c.join(self.channel)
 
    def on_privmsg(self, c, e):
        self.do_command(e, e.arguments()[0])
 
    def on_pubmsg(self, c, e):
        a = e.arguments()[0].split(":", 1)
        if len(a) > 1 and irc_lower(a[0]) == irc_lower(self.connection.get_nickname()):
            self.do_command(e, a[1].strip())
        return
 
    def on_dccmsg(self, c, e):
        c.privmsg("You said: " + e.arguments()[0])
 
    def on_dccchat(self, c, e):
        if len(e.arguments()) != 2:
            return
        args = e.arguments()[1].split()
        if len(args) == 4:
            try:
                address = ip_numstr_to_quad(args[2])
                port = int(args[3])
            except ValueError:
                return
            self.dcc_connect(address, port)
 
    def do_command(self, e, cmd):
        nick = nm_to_n(e.source())
        c = self.connection
 
        if cmd == "disconnect":
            self.disconnect()
        elif cmd == "die":
            self.die()
        elif cmd == "stats":
            for chname, chobj in self.channels.items():
                c.notice(nick, "--- Channel statistics ---")
                c.notice(nick, "Channel: " + chname)
                users = chobj.users()
                users.sort()
                c.notice(nick, "Users: " + ", ".join(users))
                opers = chobj.opers()
                opers.sort()
                c.notice(nick, "Opers: " + ", ".join(opers))
                voiced = chobj.voiced()
                voiced.sort()
                c.notice(nick, "Voiced: " + ", ".join(voiced))
        elif cmd == "dcc":
            dcc = self.dcc_listen()
            c.ctcp("DCC", nick, "CHAT chat %s %d" % (
                ip_quad_to_numstr(dcc.localaddress),
                dcc.localport))
        else:
            c.notice(nick, "Not understood: " + cmd)
 
def main():
    server=raw_input("Sur quel serveur voulez-vous vous connecter ?:  ")
    channel=raw_input("Quel chan allez-vous rejoindre ?:  ")
    channel="#"+channel
    port=input("Quel est le port ?:   ")
    nickname=raw_input("Quel nom va votre bot ?:  ")
    bot = TestBot(channel,nickname,server,port)
    bot.start()
 
if __name__ == "__main__":
    main()
Ce code marche mais le script part en boucle infini à cause du .start() et j'aimerai avoir la main dans IDLE pour pouvoir lui faire exécuter les fonctions mises plus haut.

J'ai essayé le .stop() mais cela ne fonctionne pas ou alors je l'ai mal mis.

Donc je suis bloqué, si quelqu'un a la solution....

Merci d'avance.