序言
去年年初做的这个demo,对于版本是否还支持不了解,这里只是记录一下
在github中发现了微信自动回复的脚本文件,在此基础上实现了一个集成了夸人和骂人一体的微信自动回复功能。
演示截图
使用说明和流程
使用说明
由于此前微信关闭了微信网页版,所以本脚本是通过dll注入的方式实现自动化,因此杀毒软件会报毒。在使用时需要将本脚本纳入信任此操作否则无法正常使用
配置环境
电脑需要的环境配置如下:
- 操作系统: 能兼容pc微信客户端的操作系统
如:windows 10
,windows server
- 语言环境:
python
版本v3.7以上,本博客使用的为v3.7.4版本 - pc微信版本:
v3.0.0.57
操作流程
在本文件的根目录下打开dos界面输入
python 文件名.py
就可以运行了。
对方发送对应的权限口令文字即可开始回复,同时设置了按时发送任务。
注意: 这里不推荐使用如git bash等其他终端,可能会出现终端显示中文乱码的情况。
import threading # 导入模块 3.7自带 threading 无需安装。
from ks import * #导入已经在文件夹的ks.pyd 模块 ks 无需insatll
import urllib.request
import time
import random
import ssl
from apscheduler.schedulers.background import BackgroundScheduler # 引入定时模块
ssl._create_default_https_context = ssl._create_unverified_context # 接口自签名验证抛错 取消证书验证
# url = 'http://api.tianapi.com/txapi/caihongpi/index?key=APIKEY'
chp_url = 'https://chp.shadiao.app/api.php' # 彩虹屁接口
zu_an_url = 'https://zuanbot.com/api.php?level=min&lang=zh_cn' # 祖安语录
chp_send_count=2 # 一次发送的彩虹屁消息个数
chp_nameArray = [''] # 微信id添加名单 彩虹屁语录使用 白名单 存入对应用户的wx_id
zu_anPowerArray=[''] # 祖安语录白名单 存入对应用户的wx_id
# 需要自动回复的id,wx_id用于回复
# mutex = threading.RLock() # 创建一个类属性锁
open_chp_power='开启彩虹屁' # 开启彩虹权限口令
close_chp_power='关闭彩虹屁' # 关闭彩虹权限口令
open_zu_an_power='开启祖安语录' # 开启祖安权限口令
close_zu_an_power='关闭祖安语录' # 关闭祖安权限口令
# 定时发送任务
def setTimeSend(wx_id='',tmp=''):
# wx_id=''
# print(wx_id)
for i in range(8):
status = requestText(chp_url)
print("消息是 ",status)
if status !=0:
try:
fxx(wx_id, status)
except:
print("error")
else:
fxx(wx_id, '网络请求失败')
fxx(wx_id, tmp)
# 请求方法
def requestText(_url):
time.sleep(0.5) # 休眠0.5s
req = urllib.request.Request(_url)
resp = urllib.request.urlopen(req)
content = resp.read()
contentece=content.decode('utf-8') # 编码输出
if(contentece):
print(contentece)
return contentece
return 0
def msgdata(): # 监听消息实例 通过消息来判断
print("kaishi")
msger = jtxx() #回调内部方法。如pycharm报红色字体。可以忽视。照样运行
for data in msger: #打印方法
print(data) #这里回调所有消息。可以直接使用
if data[0]=="msgdp": #消息内容
if data[5]=="0": #1代表发送消息 0代表收到消息
if data[2].find("@chatroom") != -1: # 群里发的消息
print("群里发的消息")
if data[2][0:3].find("gh_") != -1: #公众号收到的消息
print("公众号消息")
if data[2].find("@chatroom") == -1 and data[2][0:3].find("gh_") == -1: #排除 群里发的消息 公众号收到的消息
print("私人消息")
global chp_nameArray
global zu_anPowerArray
if data[6] == open_chp_power and data[2] not in chp_nameArray:
newName = data[2]
chp_nameArray.append(newName)
fxx(data[2], '彩虹屁已开启')
if data[6] == close_chp_power and data[2] in chp_nameArray:
reName = data[2]
chp_nameArray.remove(reName)
fxx(data[2], '彩虹屁已关闭')
if data[6] == open_zu_an_power and data[2] not in zu_anPowerArray:
newName = data[2]
zu_anPowerArray.append(newName)
fxx(data[2], '祖安语录已开启!')
if data[6] == close_zu_an_power and data[2] in zu_anPowerArray:
reName = data[2]
zu_anPowerArray.remove(reName)
fxx(data[2], '祖安语录已关闭')
if data[2] in chp_nameArray or data[2] in zu_anPowerArray: # 表示 用户id 存在彩虹屁白名单或者祖安白名单中则发送语句
for i in range(chp_send_count):
choose_url=''
ra=random.randint(1,10)
if ra<=5:# 表示点数小于6则彩虹屁
if data[2] in chp_nameArray: # 允许彩虹屁
choose_url = chp_url
else: # 不允许彩虹屁
choose_url = zu_an_url
else: # 表示点数大于5则骂人
if data[2] in zu_anPowerArray: # 允许祖安语录
choose_url = zu_an_url
else: # 不允许祖安语录
choose_url = chp_url
status = requestText(choose_url)
print("消息是 ",status)
if status !=0:
try:
fxx(data[2], status)#发送消息 data[2]=微信id text[0:100]=请求后的消息
except:
print("error")
else:
fxx(data[2], '尽管网络请求失败,但我仍想告诉你 你很重要')
# 无效
# if data[5]=="1": # 发送信息时也请求
# print("发送消息")
# status = requestText(chp_url)
# if status !=0:
# fxx(data[2], status)#发送消息 data[2]=微信id text[0:100]=请求后的消息
scheduler = BackgroundScheduler() # 后台运行
# 从2021年2月17日到2021年2月28日期间(不包括2月28日)
# 每天7:30 12:30 22:30 自动发送对应微信id的消息(早安,午安,晚安)
scheduler.add_job(setTimeSend, 'cron', hour=7, minute=30, start_date='2021-02-17',end_date='2021-02-28',args=['填入微信id','早安'])
scheduler.add_job(setTimeSend, 'cron', hour=12, minute=30, start_date='2021-02-17',end_date='2021-02-28',args=['填入微信id','午安'])
scheduler.add_job(setTimeSend, 'cron', hour=22, minute=30, start_date='2021-02-17',end_date='2021-02-28',args=['填入微信id','晚安'])
#
scheduler.start()
threading.Thread(target=msgdata).start()#多线程收消息 处理
input("启动微信")
最后
十分感谢自动回复脚本的作者,原作者github
项目地址为: