Bonjour à vous,

Il y a quelques années, j'avais créer un petit bot irc, pour pouvoir me connecter sur 4 serveurs en même temps. C'étais avec la bibliothèque <import irclib> qui aujourd'hui est rendu <pypeul>
Donc, plus rien fonctionne aujourd'hui.

Je me suis dit, tant qu'à recommencer, aussi bien prendre un autre, comme twisted.

J'ai été capable de tout créer, sauf les exceptions.

-Nickname already in use,
-Connection failed, refused by other side,
-Connection Failed, timeout
... etc.

Je vais prendre l'Example de la documentation.
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
 
from twisted.words.protocols import irc
from twisted.internet import defer, endpoints, protocol, reactor, task
from twisted.python import log
from twisted.internet.endpoints import TCP4ClientEndpoint 
from txsocksx.client import SOCKS5ClientEndpoint
 
list_server = ['se.quakenet.org', 'us.undernet.org', 'unaddress_qui_marche_pas', 'unautre.com']
 
class MomBot(irc.IRCClient):
    def _get_nickname(self):
        return self.factory.nickname
    nickname = property(_get_nickname)
 
    def signedOn(self):
        self.join(self.factory.channel)
        print "Signed on as %s." % (self.nickname,)
 
    def joined(self, channel):
        print "Joined %s." % (channel,)
 
    def privmsg(self, user, channel, message):
        print message
 
class MomBotFactory(protocol.ClientFactory):
    protocol = MomBot
 
    def __init__(self, channel, nickname):
        self.channel = channel
        self.nickname = nickname
 
    def clientConnectionLost(self, connector, reason):
        print "Lost connection (%s), reconnecting." % (reason,)
        connector.connect()
 
    def clientConnectionFailed(self, connector, reason):
        print "Could not connect: %s" % (reason,)
 
def connIRC(irc_server, irc_port, channel, nickname):
 
    puttyEndPoint = TCP4ClientEndpoint(reactor, irc_server, irc_port)
    d = puttyEndPoint.connect(MomBotFactory('#' + channel, nickname))
    d.addCallbacks(printCall, printErr)
 
def printCall(*args, **kwargs):
    print args, kwargs
    print 'Response received'
 
def printErr(failure):
    print type(failure.value), failure
    if failure.value == 'ConnectionRefusedError':
      print'Connection refuse... re-essaie dans 15secondes.'
      #Comment re-essayer?
      #time.sleep(15)
      #main()
 
    if failure.value == 'NicknameAlreadyInUse':
      #Chager de nickname et recommencer..
 
if __name__ == '__main__':
  for e in list_server:
    print'Connection vers: %s' % (e)
 
    connIRC(e, 6667, 'channelABC', 'mynickname')
  #Ici comment récupérer l'information..
  reactor.run()
Comment, attraper les erreurs et dire au reactor de recommencer.

J'ai essayé avec des try: except:

J'ai essayer de créer un func:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
def main(server, port, channel, nickname):
  connIRC(server, port, channel, nickname)
 
#Que je mit dans la func:  printErr()
Quelqu'un pourrait m'expliquer ou me donner un petit example

Dans la documentation, il récupère l'erreur mais je vois pas ce qu'ils font avec..

Au début j'essayais en mettant reactor.run() pour chaque connection, mais j'ai vue que la LOOP, sert qu'une fois.

J'espère avoir été précis,

Merci de votre aide.