序言
去年年初做的這個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
項目地址為: