朋友推荐的这个好玩的库,花了几天研究了下,发现挺有意思的。
效果截图
放上去不知道为啥排版样式不好了,那就不放了
功能实现
1.好友验证信息带关键字自动通过,并发送欢迎语和功能菜单
2.按照发送关键字推送对应功能
3.好友聊天接入‘图灵机器人’,实现尬聊;选择每周几发送好运统计信息给自己
4.群聊被艾特自动回复、定时定群发送消息、转发定群定人定关键字消息到目的群聊
其他以后有需求再添加吧
实现思路
wxpy能模拟简单的微信操作,之前公司做锦鲤活动的时候就用的微信号拉人进群的操作(添加管理员微信,被拉进群,定时发送群聊消息,各个群同步消息),用wxpy简单模拟一下
环境准备
python 3.6 版本,用到的库:wxpy,configparser
实现过程
wxpy库文档:https://wxpy.readthedocs.io/zh/latest/bot.html
configparser参考:https://blog.csdn.net/harryzzz/article/details/78754670
关键代码
1 import time 2 from wxpy import * 3 import configparser 4 cp = configparser.ConfigParser() 5 # 配置文件目录 6 cp.read(r'F:\PythonDemo\Demo\wxpy.ini',encoding='utf-8') 7 8 # 配置信息 9 timing = cp.get('Group','timing') 10 timing_send = cp.get('Group','timing_send') 11 timing_group = cp.get('Group','timing_group') 12 forward_prefix = cp.get('Group','forward_prefix') 13 boss_name = cp.get('Group','boss_name') 14 boss_group = cp.get('Group','boss_group') 15 forward_group = cp.get('Group','forward_group') 16 boss_key = cp.get('Group','boss_key') 17 auto_reply_msg = cp.get('Group','auto_reply_msg') 18 auto_reply_group = cp.get('Group','auto_reply_group') 19 friend_key = cp.get('Friend','friend_key') 20 friend_content = cp.get('Friend','friend_content') 21 tuling_key = cp.get('Default','tuling_key') 22 person_url = cp.get('Function','person_url') 23 function_list = cp.get('Function','function_list') 24 other_function = cp.get('Function','other_function') 25 week = cp.getint('Group','week') 26 user_add_group = cp.get('Add_group','user_add_group') 27 img_path = cp.get('Default','img_path') 28 29 bot = Bot(console_qr=0, cache_path=True) 30 bot.enable_puid('wxpy_puid.pkl') 31 # 打赏的图片 32 pic = bot.upload_file(img_path) 33 34 # 每周发送好友信息给自己 35 def info_statistics(week): 36 if time.strftime('%w') == str(week): 37 friends_stats_text = bot.friends().stats_text() 38 bot.self.send_msg(friends_stats_text) 39 40 def add_group(user): 41 group = bot.groups().search(user_add_group)[0] 42 if user in group: 43 user.send('您已加入该群聊:<{}>'.format(group.nick_name)) 44 else: 45 group.remove_members(user,use_invitation=True) 46 47 # 主要功能列表 48 @bot.register(Friend,msg_types=TEXT) 49 def auto_reply_friendMsg(msg): 50 user = msg.sender 51 if '能干嘛' in msg.text: 52 user.send(function_list) 53 elif '哈哈' in msg.text: 54 add_group(user) 55 elif '进群' in msg.text: 56 add_group(user) 57 elif '博客' in msg.text: 58 user.send(person_url) 59 elif '打赏' in msg.text: 60 user.send_image(img_path) 61 elif '其他' in msg.text: 62 user.send(other_function) 63 else: 64 tuling = Tuling(api_key=tuling_key) 65 tuling.do_reply(msg) 66 67 # 好友验证带key就自动添加好友 68 @bot.register(msg_types=FRIENDS) 69 def auto_accept_friend(msg): 70 if friend_key in msg.text.lower(): 71 new_friend = bot.accept_friend(msg.card) 72 new_friend.send(friend_content) 73 74 # 自动回复群聊艾特消息 75 def auto_reply_groupMsg(msg): 76 group = ensure_one(bot.chats().search(auto_reply_group)) 77 if msg.is_at and msg.chat == group: 78 msg.reply(auto_reply_msg) 79 80 # 自动转发定组定人定关键字的消息到目的群聊 81 def auto_forward_bossMsg(msg): 82 src_group = ensure_one(bot.groups().search(boss_group)) 83 dst_group = ensure_one(bot.groups().search(forward_group)) 84 boss = ensure_one(src_group.search(boss_name)) 85 if boss_key in msg.text and msg.member == boss: 86 msg.forward(dst_group,prefix=forward_prefix) 87 88 # 定时发送消息到目的群聊 89 def auto_send_timeMsg(): 90 dst_group = bot.chats().search(timing_group)[0] 91 ti = time.localtime(time.time()) 92 dst_time = time.strftime('%H:%M:%S',ti) 93 if dst_time == timing: 94 dst_group.send(timing_send) 95 96 # 群聊支持的功能 97 @bot.register(Group,msg_types=TEXT) 98 def auto_ReplyForwardSend_groupMsg(msg): 99 auto_forward_bossMsg(msg) 100 auto_reply_groupMsg(msg) 101 auto_send_timeMsg() 102 103 if __name__ == '__main__': 104 # bot.join() 105 embed()
1 [Group] 2 #定时发送时间 3 timing = 00:00:00 4 #定时发送内容 5 timing_send = 测试一下 6 #定时发送群聊 7 timing_group = gysgys 8 9 #监控group里面boss发送的包含key的消息到forward_group里面(带前缀) 10 forward_prefix = boss通知: 11 boss_name = 测试 12 boss_key = 通知 13 boss_group = gysgys 14 forward_group = 有梦想的咸鱼们 15 16 #自动回复被group里面@的消息,回复内容为msg 17 auto_reply_msg = 好的 18 auto_reply_group = gysgys 19 #每周六定时发送好友统计信息 20 week = 6 21 22 [Friend] 23 #添加好友信息中包含key的时候回复content 24 friend_key = python 25 friend_content = 谢谢你长得那么好看还关注我~~ 回复关键字: 进群 博客 打赏 其他 继续我们的互撩吧(*^__^*) 26 27 [Default] 28 #基础信息,tuling的key和图片地址 29 tuling_key = 你的图灵key 30 img_path = F:\\1.jpg 31 32 [Add_group] 33 user_add_group = 34 35 [Function] 36 #博客地址 37 person_url = https://www.cnblogs.com/mumu0802/p/10032236.html 38 #功能列表 39 function_list = 回复关键字: 进群 博客 其他 打赏 继续我们的互撩吧(*^__^*) 40 #回复其他的时候获得的列表 41 other_function = 回复讲笑话、讲故事、XX座运势、脑筋急转弯、歇后语、绕口令、顺口溜体验更多功能
遇到的问题
1)TypeError: dump() missing 1 required positional argument: 'fp'
字典和json格式转换的时候遇到的,用法错误,需要用dumps
2)UnicodeEncodeError: 'latin-1' codec can't encode characters in position 50-54:
图灵API 说明里面要求要utf-8编码,s.encode('utf-8')即可
3) 一般是配置文件没有正确打开
4)UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 20: illegal multibyte sequence ---
cp = configparser.ConfigParser()
cp.read(r'F:\PythonDemo\Demo\wxpy.ini',encoding='utf-8')
下载地址:等待上传