SleekXMPP
跳转到导航
跳转到搜索
SleekXMPP 是一个支持 Python 2.6+ 和 Python 3+ 的 XMPP 协议库,采用多线程设计。
常用操作
发送消息
send_message(self, mto, mbody, msubject=None, mtype=None, mhtml=None, mfrom=None, mnick=None)
mbody是要发送的文本消息,mhtml是HTML消息(不需要<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')