On 10/05/2015 11:12 PM, Glyph Lefkowitz wrote:

On Oct 5, 2015, at 2:33 AM, peter <commercial...@yahoo.de <mailto:commercial...@yahoo.de>> wrote:

my bot inherits from irc.IRCClient, when it sends a message to another user who isnt online irc_ERR_NOSUCHNICK(self, prefix, command) is called.
how can i react to that message, my code is called with:


class mybot(irc.IRCClient):
...
if __name__ == "__main__":

   factory = XdccBotFactory( channel, nickname, xdccbot, xdccrequests )
   reactor.connectTCP( server, 6667, factory )



in irc_ERR_NOSUCHNICK... i got:
error_message = "%s bot is not connected to server" % now.strftime("%Y-%m-%d %H:%M:%S")
   log.warning(error_message)


which works.
but what i really would like to have is:


if __name__ == "__main__":

   factory = XdccBotFactory( channel, nickname, xdccbot, xdccrequests )
   reactor.connectTCP( server, 6667, factory )

   if "bot not online":
       "send message to antoher user"


so basically i need the information that irc_ERR_... was called after the reactor was started.
how do you do that?

 1. Use Endpoints
    <https://twistedmatrix.com/documents/15.4.0/core/howto/endpoints.html>
    so you get a nice `Deferred´ back from connectTCP.
 2. Add a callback to that Deferred.
 3. Add a method to `XdccBotFactory´ that returns a `Deferred´ that
    fires when its message is successfully sent and acknowledged, and
    then add a callback to /that/ `Deferred´.


If you were to use inlineCallbacks to inline the callbacks you're adding into one function, it might look something like this:

@inlineCallbacks
*def* main(reactor):
    factory = XdccBotFactory(channel, nickname, xdccbot, xdccrequests)
    endpoint = clientFromString(reactor, "...")
    bot = *yield* endpoint.connect(factory)
    online = *yield* bot.isBotOnline()
*if* online:
        "send message to another user"
*else*:
"ok"

Does this make sense?

-glyph



_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

im sure youre solution is just fine, could you show me how you would contruct isBotOnline? im assuming that code would go into the class "mybot", next to irc_ERR_NOSUCKNICK?


_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to