[Twisted-Python] IRCClient (ircLogBot.py) send a message every 5 minutes
Laurens Vets
laurens at daemon.be
Mon Apr 6 18:27:50 MDT 2015
On 2015-03-30 13:39, Glyph Lefkowitz wrote:
>> On Mar 26, 2015, at 11:18 AM, Laurens Vets <laurens at daemon.be> wrote:
>>
>> Hello,
>>
>> I'm trying to get to know the Twisted framework by extending the
>> ircLogBot.py example. I want to be able to get a list of all names in
>> a channel (by sending NAMES) and I want to rerun this every 5 minutes.
>>
>> I've been able to get the NAMES on a channel join by doing this in
>> LogBot:
>>
>> def joined(self, channel):
>> self.names(channel)
>>
>> def names(self, channel):
>> self.sendLine("NAMES %s" % channel)
>>
>> def irc_unknown(self, prefix, command, params):
>> if command == 'RPL_NAMREPLY':
>> self.handle_namereply(*params)
>>
>> def handle_namereply(self, myname, channeltype, channelname, users):
>> self.logger.log("Handling namereply %r %r %r %r" % (myname,
>> channeltype, channelname, users))
>>
>> The problem I face is that I have no idea where to put a LoopingCall
>> to run this same command every 5 minutes. Where would be the best
>> place to place this?
>
> I would probably start such a LoopingCall in LogBot.connectionMade,
> and make sure to stop it in LogBot.connectionLost. That way only an
> active connection will attempt to send NAMES to itself.
>
> Does that make sense for your application?
>
> Thanks for using Twisted,
I created the call in LogBot.joined as I need to be joined in a channel
before I can send the NAMES command. Does that sound right? I'll also
stop it in in connectionLost. I did not think of that, thanks! :)
Next stop: adding a database connection.
Thank you for making Twisted! :)
-Laurens
More information about the Twisted-Python
mailing list