Oreilly XMPP示例代码

时间:2011-06-28 15:25:42

标签: xmpp

我正在读这本书Oreilly XMPP权威指南

第2章中的Theres和示例代码,用于EchoBot

我想知道如何测试这段代码......

def main():

bot = EchoBot("echobot@wonderland.lit/HelloWorld", "mypass")
bot.run()

类EchoBot(object):

def __init__(self, jid, password):
    self.xmpp = sleekxmpp.ClientXMPP(jid, password)
    self.xmpp.add_event_handler("session_start", self.handleXMPPConnected)
    self.xmpp.add_event_handler("message", self.handleIncomingMessage)

def run(self):
    self.xmpp.connect()
    self.xmpp.process(threaded=False)

def handleXMPPConnected(self, event):
    self.xmpp.sendPresence(pstatus="Send me a message")

def handleIncomingMessage(self, message):
    self.xmpp.sendMessage(message["jid"], message["message"])

我安装了sleekxmpp,在jabber.org上创建了一个帐户,并用myusername@jabber.org/HelloWorld和mypass替换了echobot@wonderland.lit/HelloWorld和mypassword

但是当我运行这段代码时......它似乎什么也没做。它终止了。 有什么遗失吗?

2 个答案:

答案 0 :(得分:1)

此示例代码不适用于新版本的SleekXMPP库,因为 API已更改

你机器人的最后一行应该是:

    self.xmpp.sendMessage(message["from"], message["body"])

SleekXMPP库的作者解释了示例代码中所需的更改:https://github.com/fritzy/SleekXMPP/wiki/XMPP%3A-The-Definitive-Guide

答案 1 :(得分:0)

为了测试echo bot,您可以打开另一个Jabber客户端(例如Psi或Kopete),将echo bot添加到您的名单中,然后您就可以像在任何其他IM场景中一样聊天,只有echo bot会回复您发送的消息。

但请务必访问https://github.com/fritzy/SleekXMPP/wiki/XMPP%3A-The-Definitive-Guide以查看图书示例的最新版本。