带twisted的重复函数调用

2024-09-30 02:20:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似这样的基本IRC bot(见下文),我想做的是使用类似_5_mins函数,每5分钟调用一次LoopingCall

import sys
import re
from twisted.internet import reactor, task, defer, protocol
from twisted.python import log
from twisted.words.protocols import irc
from twisted.application import internet, service
import time

HOST, PORT = 'irc.freenode.net', 6667

class IrcProtocol(irc.IRCClient):
    nickname = 'BOTSNAME'
    password = 'NICKPASSWORD'
    timeout = 600.0

    def signedOn(self):
        pMess = "IDENTIFY %s" % self.password
        self.msg("NickServ",pMess)
        time.sleep(10)
        for channel in self.factory.channels:
            self.join(channel)

    def _5_mins(self):
        self.msg(self.factory.channels[0],"5 minutes have elapsed")

class IrcFactory(protocol.ReconnectingClientFactory):
    channels = ['#BOTCHANNEL']
    protocol = IrcProtocol

if __name__ == '__main__':
    reactor.connectTCP(HOST, PORT, IrcFactory())
    log.startLogging(sys.stdout)
    reactor.run()

elif __name__ == '__builtin__':
    application = service.Application('IrcBot')
    ircService = internet.TCPClient(HOST, PORT, IrcFactory())
    ircService.setServiceParent(application)

我如何改变signedOn函数与task.LoopingCall函数一起工作,或者有更好的方法吗?在

编辑:我真的很接近一个解决方案,下面是我所要做的

^{pr2}$

Tags: 函数fromimportselfhostapplicationportirc
1条回答
网友
1楼 · 发布于 2024-09-30 02:20:52
def signedOn(self):
    pMess = "IDENTIFY %s" % self.password
    self.msg("NickServ",pMess)
    time.sleep(10)
    for channel in self.factory.channels:
        self.join(channel)
    lc = task.LoopingCall(self._5_mins)
    lc.start(self.timeout)

相关问题 更多 >

    热门问题