python wxpy初体验

 朋友推荐的这个好玩的库,花了几天研究了下,发现挺有意思的。

效果截图

 放上去不知道为啥排版样式不好了,那就不放了

功能实现

1.好友验证信息带关键字自动通过,并发送欢迎语和功能菜单

2.按照发送关键字推送对应功能

3.好友聊天接入‘图灵机器人’,实现尬聊;选择每周几发送好运统计信息给自己

4.群聊被艾特自动回复、定时定群发送消息、转发定群定人定关键字消息到目的群聊

其他以后有需求再添加吧

实现思路

wxpy能模拟简单的微信操作,之前公司做锦鲤活动的时候就用的微信号拉人进群的操作(添加管理员微信,被拉进群,定时发送群聊消息,各个群同步消息),用wxpy简单模拟一下

扫描二维码关注公众号,回复: 4308050 查看本文章

环境准备

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座运势、脑筋急转弯、歇后语、绕口令、顺口溜体验更多功能
wxpy.ini

遇到的问题

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')

下载地址:等待上传

猜你喜欢

转载自www.cnblogs.com/mumu0802/p/10046684.html