SleekXMPP

来自百合仙子's Wiki
跳转到导航 跳转到搜索

SleekXMPP 是一个支持 Python 2.6+ 和 Python 3+ 的 XMPP 协议库,采用多线程设计。

常用操作

发送消息

send_message(self, mto, mbody, msubject=None, mtype=None, mhtml=None, mfrom=None, mnick=None)
mbody 是要发送的文本消息, mhtmlHTML消息(不需要<html>标签)。pidgin会识别HTML消息。

对于给好友的消息, mtype 应为 'chat' ,对于聊天室消息为 'groupchat'

改变状态

send_presence(self, pshow=None, pstatus=None, ppriority=None, pto=None, pfrom=None, ptype=None)
pshow 的取值见XMPP#联系人状态ptype 可以用来加/删好友。

添加/删除好友

send_presence_subscription(self, pto, pfrom=None, ptype='subscribe', pnick=None)

插件

注册插件

xmpp.registerPlugin('xep_0030') # Service Discovery

使用 self['xep_0030'] 来访问此插件对象。

MUC

要使用 MUC (聊天室),需要启用插件 xep_0045

# 获取插件对象
muc = self['xep_0045']
# 加入聊天室
muc.joinMUC(self, room, nick, maxhistory='0', password='', wait=False, pstatus=None, pshow=None)
# 离开聊天室
muc.leaveMUC(room, nick, msg='')
# 获取成员昵称列表(返回 dict_keys)
muc.getRoster(room)
# 邀请
muc.invite(room, jid, reason='')
# 已加入聊天室列表(返回 dict_keys)
muc.getJoinedRooms()

# 聊天室信息,返回字典
muc.rooms
# 可能的返回值
{'lily@conference.lilydjwg.cjb.net': {'Pythoner': {'affiliation': 'owner',
                                                   'jid': <sleekxmpp.xmlstream.jid.JID object at 0x9d9060c>,
                                                   'nick': 'Pythoner',
                                                   'role': 'moderator',
                                                   'room': 'lily@conference.lilydjwg.cjb.net',
                                                   'show': '',
                                                   'status': 'Pythoner'},
                                      'lilydjwg': {'affiliation': 'none',
                                                   'jid': <sleekxmpp.xmlstream.jid.JID object at 0x9d96f4c>,
                                                   'nick': 'lilydjwg',
                                                   'role': 'participant',
                                                   'room': 'lily@conference.lilydjwg.cjb.net',
                                                   'show': '',
                                                   'status': ''}}}

# 返回字典,在各个聊天室中的昵称
muc.ourNicks

发送和接收消息/状态信息和与单个好友聊天时一样,只是 message stanza 的 type 改成了 groupchat

self.send_message(mtype='groupchat', mto=room, mbody='test')

参见

外部链接