python – Jabber bot – 如何获得联系人的可用性?

我需要使用
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:我没有测试过代码,但它应该与此非常相似.

点赞