
>>> g = bot.List('group', "456班")[0] # g 是一个 Group 对象(群“456班”)
>>> bot.List(g) # 返回 群“456班” 的成员列表
>>> bot.List(g, 'card=jack') # 返回 群“456班” 中名片为 “jack” 的成员列表
注意上面第三句不允许是 bot.List(g, card='jack') 的格式。
List 接口的内部执行顺序: 首先在 QQBot 的联系人内查找 tinfo 所代表的联系人列表;若内已有此列表,则在此列表内进行搜索,并返回一个包含 “此列表中所有和 cinfo 匹配的联系人” 的列表;若内没有此列表,则向 QQ 服务器请求数据获取联系人列表,获取成功后将联系人列表保存到内,然后再进行搜索并返回一个包含 “此列表中所有和 cinfo 匹配的联系人” 的列表;如果在向 QQ 服务器请求数据的过程中出错了,则打印相关的失败信息,并返回 None 。
List 接口返回值的含义: 返回一个非空列表表示 tinfo 所指定的联系人列表内所有和 cinfo 匹配的联系人;返回一个空列表表示该联系人列表内没有和 cinfo 匹配的联系人;返回 None 表示向 QQ 服务器请求联系人列表和资料失败,不知道是否有相匹配的联系人。
调用 List 接口后, 务必 先根据以上三种情况对返回值进行判断,然后再执行后续代码。
(2) bot.Update(tinfo) --> True/False
Update 接口的参数 tinfo 和 List 接口中的参数含义相同,调用此接口会立即向 QQ 服务器请求相应的联系人列表并更新联系人,并一直阻塞至更新成功。更新最慢的是好友列表,若好友较多可能会阻塞 5 ~ 10 秒。成员列表更新的较快,即便是 2000 人的大群,更新时间仅 1 ~ 2 秒。
若更新成功,返回 True ,否则,返回 False 。
示例:
# 更新 好友列表 :
>>> bot.Update('buddy')
# 更新 群列表 :
>>> bot.Update('group')
# 更新 某个群的成员列表 :
>>> gl = bot.List('group', "456班")
>>> if gl:
>>> g = gl[0]
>>> bot.Update(g)
(3) bot.SendTo(contact, content, resendOn1202=True) --> '向 xx 发消息成功'/'错误:...'
向联系人发送消息。第一个参数为 QContact 对象,第二个参数为消息内容。再次提醒: 只可以向 好友/群/讨论组 发消息, 不允许向 群成员/讨论组成员 发消息 。
可以在消息内容中嵌入“/微笑”等表情关键词来向对方发送表情,详见 facemap.py 。
若发送成功,返回字符串('向 xx 发消息成功')。否则,返回含错误原因的字符串('错误:...')。
发消息时可能会重复发消息,这是因为 QQ 服务器返回代码 1202 的原因。手机登录网页版qq帐号v2.1.17版已针对此问题在 bot.SendTo 接口中增加了一个参数: resendOn1202 ,若此参数为 True (默认值),则发消息时如果 QQ 服务器返回代码 1202 (表明发消息可能失败),还会继续发送 3 次,直至返回代码 0 , 若此参数为 False ,则不会尝试重发。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-65875-5.html
越南悲情不已