注意:想向那些想要做这个线程中提到的事情的人提及这一点。如果不熟悉 XMPP 协议和节,可能会错过一些设置正确状态所需的信息。xmpppy 模块文档似乎没有明确阐明设置存在的步骤。
设置初始状态是最简单的,如本主题之前的帖子所示。它设置用户可用的默认存在(类型)。不确定默认的“状态”和“显示”状态是什么,也假设为空白或“可用”。
然而,当通过定义一个新的出席对象来发送状态来设置新的状态时,如果你用默认值(无参数)初始化对象,就像这里的原始帖子一样,要发送的出席对象(或节)是不完整的,因为它没有t 定义适当的存在“类型”。因此,根据您正在使用的 XMPP 服务器,它可能会或可能不会正确地进行设置。
初始化新的存在状态对象的正确方法是这样的:
offPres = xmpp.Presence(typ='unavailable',show='unavailable',status='unavailable')
或者只是以下,如果在“可用/在线”和“不可用/离线”之间切换而无需登录和关闭 XMPP IM 会话,我们不关心状态/显示状态显示的内容(即您的标签查看与状态相关的信息,例如“离线 - 离开”与“离线”)。
offPres = xmpp.Presence(typ='unavailable')
对于DND、离开、外出午餐等自定义状态,这有点棘手。我本人对 XMPP 并不十分熟悉,但假设您会指定状态并显示状态值(例如 DND、Away),同时将状态类型设置为“可用”或“不可用”,具体取决于您是否希望以这种方式出现或不是。
并且基于 xmpppy 文档,您只能在对象初始化时指定存在类型,之后不能更改它。但是您可以在初始化后更改状态并显示状态对象的状态。这是按照原始帖子所示完成的。对于显示状态,有一个匹配的setShow方法,就像setStatus一样。
发送出席信息与原帖相同。