如何通过python设置GChat或jabber状态?现在我有了这个:
import xmpp
new_status = "blah blah blah"
login = 'email'
pwd = 'password'
cnx = xmpp.Client('gmail.com')
cnx.connect( server=('talk.google.com',5223) )
cnx.auth(login, pwd, 'botty')
pres = xmpp.Presence()
pres.setStatus(new_status)
cnx.send(pres)
执行,但状态未更新。我知道我已成功连接到服务器,因为我可以向其他人发送聊天消息。我在这里做错了什么?
答案 0 :(得分:1)
您可能需要查看此文件:
http://steliosm.net/projects/picaxejabber/picaxe_xmpp.py
修改强> 我的不好,第一个答案是脱离背景,我误读了你的代码。
cnx.sendInitPresence()
我猜你没有发送你的初始状态......
答案 1 :(得分:1)
注意:想对那些想要做这个帖子中提到的内容的人提一下。如果一个人不熟悉XMPP协议和节,那么可能会错过一些设置正确状态所需的信息。 xmpppy模块文档似乎没有明确说明设置状态的步骤。
设置初始状态最简单,如此主题中之前的帖子所示。它设置可用的默认用户(类型)。不确定默认的“状态”和“显示”状态是什么,假设为空白或“可用”。
但是,在通过定义要发送状态的新状态对象来设置新状态时,如果使用默认值(无参数)初始化对象,如此处的原始帖子中那样,要发送的状态对象(或节)不完整,因为它没有定义适当的存在“类型”。因此,根据您正在使用的XMPP服务器,它可能会也可能不会正确进行设置。
初始化新状态状态对象的正确方法如下:
offPres = xmpp.Presence(typ='unavailable',show='unavailable',status='unavailable')
或者仅仅是以下内容,如果在“可用/在线”和“不可用/离线”之间切换,无需登录和关闭XMPP IM会话,我们不关心状态/显示状态显示的内容(即您看到的与状态相关联的标签,例如“离线 - 离开”与“离线”。
offPres = xmpp.Presence(typ='unavailable')
对于自定义状态,如DND,Away,Out to Lunch等,这会变得有点棘手。我自己并不是很熟悉XMPP但是假设您将指定状态并显示状态值(例如DND,Away),同时将在线类型设置为“可用”或“不可用”,具体取决于您是希望以这种方式出现还是不
并且基于xmpppy文档,您只能在对象的初始化时指定存在类型,之后不能更改它。但您可以在初始化后更改状态并显示状态对象的状态。这是在原始帖子中显示的。对于show state,有一个匹配的 setShow 方法,就像 setStatus 一样。
发送存在与原始帖子相同。