我需要使用
python设置一个jabber bot,它将根据几个联系人的在线/离线可用性发送消息.
我一直在研究pyxmpp和xmpppy,但找不到任何方法(至少没有直接的方法)来检查给定联系人的状态.
关于如何实现这一点的任何指针?
理想情况下,我想要像bot.status_of(“contact1@gmail.com”)返回“在线”
最佳答案 我不认为这是可能的,因为联系人的存在(包含有关其可用性的信息)是由机器人异步接收的.
您必须编写一个在线处理函数并在连接中注册它.只要从联系人收到状态,就会调用此函数.呼叫参数将告诉您联系人是否在线.根据它,您可以将消息发送给联系人.
使用xmpppy你可以这样做:
def connect(jid, password, res, server, proxy, use_srv):
conn = xmpp.Client(jid.getDomain())
if not conn.connect(server=server, proxy=proxy, use_srv=use_srv):
log( 'unable to connect to server.')
return None
if not conn.auth(jid.getNode(), password, res):
log( 'unable to authorize with server.')
return None
conn.RegisterHandler( 'presence', callback_presence)
return conn
conn = connect(...)
def callback_presence(sess, pres):
if pres.getStatus() == "online":
msg = xmpp.Message(pres.getFrom(), "Hi!")
conn.send(msg)
PS:我没有测试过代码,但它应该与此非常相似.