微信自動回復彩虹屁或祖安語錄


序言

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM