微信自动回复彩虹屁或祖安语录

序言

去年年初做的这个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项目地址为:

posted @ 2022-02-13 16:36  DAmarkday  阅读(948)  评论(0编辑  收藏  举报