本周考虑到实现一个微信机器人的功能,研究了一下 wxpy 这个库

参考文档

简单的demo

例子1:获取聊天群里面所有@我的消息,并回复信息

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from wxpy import *

bot = Bot(cache_path=True)

# 机器人账号自身

myself = bot.self

# 给机器人自己发送消息

bot.self.send('Hello World!')

@bot.register(Group, TEXT)

def print_group_msg(msg):

if msg.is_at:

print(msg)

print(msg.text, type(msg.text))

msg.reply(u"你的内容是:**{0}**\n这是排骨的测试~~~".format(msg.text))

embed() # 阻塞进程

例子2:获取群成员,主要是Member这个类的分析

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from wxpy import *

bot = Bot(cache_path=True)

# 机器人账号自身

myself = bot.self

# 给机器人自己发送消息

bot.self.send(u'Hello World!')

group_fzr = bot.groups().search(u'***')[0]

group_zj = bot.groups().search(u'***')[0]

group_zzj = bot.groups().search(u'***')[0]

print(group_fzr, group_zj, group_zzj)

members_list = []

for fzr in group_fzr.members:

members_list.append(fzr)

# print fzr.is_friend, fzr.name, fzr.nick_name

for zj in group_zj.members:

members_list.append(zj)

# print zj.is_friend, zj.name, zj.nick_name

for zzj in group_zzj.members:

members_list.append(zzj)

# print zzj.is_friend, zzj.name, zzj.nick_name

print(len(members_list))

members_set = set(members_list)

print(len(members_set))

for mem in members_set:

# print mem.is_friend, mem.name, mem.nick_name

print mem.name

groups() 获取所有群组信息

search() 根据结果搜索

members() 获取到每个群人员的信息

is_friend 是否为好友

name 群昵称

nick_name 微信名

display_name

待分析的问题

群备注、用户备注群昵称、好友备注

例子3:群组成员信息 members_details=True 需要更新

from wxpy import *

bot = Bot(cache_path=True)

# 机器人账号自身

myself = bot.self

group_sjw = bot.groups().search(u'数据蛙互助学习社区')[0]

print(group_sjw)

group_sjw.update_group(members_details=True)

members_list = []

for mb in group_sjw.members:

members_list.append(mb)

print(len(members_list))

sex_dict = {

'male': 0,

'female': 0,

'none_type': 0

}

for mem in members_list:

if mem.sex == 1:

sex_dict['male'] += 1

elif mem.sex == 2:

sex_dict['female'] += 1

else:

sex_dict['none_type'] += 1

print(sex_dict)

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐