Bonsoir,
Alors voila mon problème. J'utilise le script python supybot qui est un bot qui se connecte sur IRC et sur lequel on peut coder des plugins.
Sans entrer dans les détails, lorsque le bot se connecte au salon, on peut lui envoyer des commandes en privé. Le bot est donc à l'écoute de commandes.
Alors j'en ai crée une qui fait pleins de trucs et je voudrais qu'elle s'execute à intervalles de temps régulier.
J'ai donc pour cela commencé a faire une autre methode qui contient une vielle boucle while 1 avec un time.sleep et qui appelle la fonction de mise à jour que je veux faire executer a intervelles de temps réguliers.
Mais le seul probleme est que le bot gere une file d'attente de commandes et donc temps que la commande ne se termine pas impossible de lui en envoyer d'autre et notamment impossible d'arreter celle qu'on vient de lancer.
Alors j'aimerai savoir s'il y a une solution pour demarrer la fonction toutes les 60 secondes par exemple (sachant qu'elle prends 2 sec d'execution) mais que le programme retrouve la main.
Quelques bouts de code:
En fait cette classe est mon plugin et je voudrais lancer la méthode creerbotlist() a intervales réguliers mais que le bot puisse faire des choses entre temps.
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 class BotSearch(callbacks.Plugin): def __init__(self, irc): self.__parent = super(BotSearch, self) self.__parent.__init__(irc) self._fichier = "bots.php" ... def envoyerftp(self, server, login, password, fichier): s = ftplib.FTP(server, login, password) f = open(fichier,'rb') s.storbinary('STOR %s'%(fichier), f) try: f.close() except: self.log.info("Erreur Quit FTP") irc.error("Une erreure s'est produite avec le FTP.") def creerbotlist(self, irc, msg, args): """Génère le fichier php des bots présents sur le chan. <Aucuns arguments>""" ... channel = self._chan self.log.info('Récupération de la liste des bots présents.') L = list(irc.state.channels[channel].users) utils.sortBy(str.lower, L) ... irc.replySuccess() creerbotlist = wrap(creerbotlist, ["owner"])
Merci
Partager