I'm trying to make a simple AIM bot that, in addition to responding when
I talk to it, can also send me a message on its own initiative. My code
is based on SkippyTalkBot [1], but I confess that I don't understand it
very well, and though I've been crawling the Twisted documentation for a
few days now, it's still rather mysterious to me.
So I'm at a loss as to how to add an "idle" function that will allow my
bot to periodically see whether it has something new to say to the user.
My code looks like this:
class B(oscar.BOSConnection):
capabilities = [oscar.CAP_CHAT]
...
def receiveMessage(self, user, multiparts, flags):
"respond to an incoming message from the user"
# (by calling self.sendMessage)
...
class OA(oscar.OscarAuthenticator):
BOSClass = B
protocol.ClientCreator(reactor, OA, SN, PASS,
icq=icqMode).connectTCP(*hostport)
reactor.run()
Now, from trawling the docs, I guess that I want to call
reactor.callWhenRunning... but then I'd like to pass in a bound method
of my B class, so it can call sendMessage on myself. But I'm stumped as
to how my B class is even being instantiated, let alone how to get a
reference to that instance. And the callWhenRunning idea is only a wild
guess and probably wrong.
I'm sure the answer is in the Twisted docs or examples somewhere, but I
haven't been able to find it. Will someone have pity and share a clue?
Thanks,
- Joe
[1] http://www.gilesgoatboy.org/python/skippy.html
_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python