Python IRC bot using Twisted

Jean-Paul Calderone exarkun at divmod.com
Tue Jul 3 14:01:22 CEST 2007


On Tue, 03 Jul 2007 09:46:59 -0000, ddtm <dr.death.tm at gmail.com> wrote:
>I'm using an example of IRC bot (_ttp://twistedmatrix.com/projects/
>words/documentation/examples/ircLogBot.py) to create my own bot. But I
>have a problem. I'm trying to make my bot send messages periodically.
>But I can't find a way of adding Timer or something similar to my code
>so that it could work. Could somebody modify an example to make IRC
>bot send anything to chat every 20 seconds?
>
>P.S. Timer should not lock the main program (I think it should work in
>other thread or so)
>P.P.S. Could somebody write a code of delay between messages too? In
>pseudocode it looks like this:
>  sleep(20)
>  sendMessage(channel,'lopata')
>This delay should be non-locking too.
>P.P.P.S. Sorry for my bad English (and for a noob question too)
>

You can use reactor.callLater to schedule a one-time event to happen at
some future point:

    reactor.callLater(20, sendMessage, channel, 'lopata')

There is also a utility class, twisted.internet.task.LoopingCall, which
you can use to schedule an event to occur repeatedly at some interval:

    call = LoopingCall(sendMessage, channel, 'lopata')
    loopDeferred = call.start(20)

You can read more about these APIs in the scheduling howto:

    http://twistedmatrix.com/projects/core/documentation/howto/time.html

Or you can refer to the generated API documentation:

http://twistedmatrix.com/documents/current/api/twisted.internet.interfaces.IReactorTime.html
http://twistedmatrix.com/documents/current/api/twisted.internet.task.LoopingCall.html

Hope this helps,

Jean-Paul



More information about the Python-list mailing list