去年年初寫的微信問答工具,現在版本是否支持不清楚,這里只是做一下記錄
源代碼
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=1 # 一次發送的彩虹屁消息個數
game_power='開始游戲' # 游戲口令
players=[] # 所有玩家的信息
total_count= 5 # 總共需要答題數
questions_bank=[{title:'周郎計策安天下',answer:'賠了夫人又折兵'},{title:'九台壓路機壓壞了一台',answer:'八個壓路'},{title:'江東的百姓好脾氣',answer:'吳人能急'}]
# player=[{
# id:'',
# correct:0,
# lastA:''
# error:0,
# total:0
# }] # 玩家信息
# 請求方法
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
# questions_bank=[question,question]
# question:{ title:'題目',answer:'答案'}
def question(character):# 生成問題
id =character.get('id') # 玩家id
count = character.get('count') # 所答對的問題數
total = character.get('total')+1 # 所答題目總數
character['total']=total
r=random.randint(0,len(questions_bank)-1) # 隨機生成題目
question="第"+total+"道" +". "+ questions_bank[r].get('title')+" 下一句是?"
print(question) # 輸出 發送題目
fxx(id, question) # 發送題目
character['lastA'] =questions_bank[r].get('answer') # 將題目答案保存在玩家信息中
def judgeExist(single){
for i in range(len(players)):
if players[i].get("id") == single:
print("角色已存在")
return i
return -1 # 角色不存在
}
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 and data[2][0:3].find("gh_") == -1: #排除 群里發的消息 公眾號收到的消息
global players
print("私人消息")
seq = judgeExist(data[2]) # 判斷玩家是否存在,存在則返回下標,不存在則返回-1
if (data[6] == game_power) and (seq == -1):
pl = { 'id':data[2],'correct':0,'lastA':'','error':0,'total':0} # 創建角色信息
players.append(pl) # 添加到游戲中
question(pl) # 生成問題
if(seq !=-1):
if players[seq].get('lastA') ==data[6]: # 回答成功
players[seq]['correct']=players[seq].get('correct') +1
str1 = '回答正確'
print(str1)
fxx(data[2],str1)
else:
# 回答錯誤 罵人
players[seq]['error']=players[seq].get('error') +1
str2 = '回答錯誤,正確答案為'+players[seq].get('lastA')
print(str2)
status = requestText(zu_an_url)
print("消息是 ",status)
if status !=0:
try:
fxx(data[2], status)#發送消息 data[2]=微信id text[0:100]=請求后的消息
except:
# print("你真棒!")
fxx(data[2], "這都是送分題啊!")
else:
fxx(data[2], '網絡請求失敗')
total = players[seq].get('correct') + players[seq].get('error')
if total == total_count: # 需要解答的題目已經解答完成
if players[seq].get('error') == 0 # 沒有答錯
print("贊美1次")
status = requestText(chp_url)
print("消息是 ",status)
if status !=0:
try:
fxx(data[2], status)#發送消息 data[2]=微信id text[0:100]=請求后的消息
except:
# print("你真棒!")
fxx(data[2], "你真棒!")
else:
fxx(data[2], '網絡請求失敗')
fxx(data[2], "五道題目全部正確!")
fxx(data[2],"答題結束")
players.pop(seq)
# 游戲結束 刪除角色
else: # 解答完成 但存在答錯的題目
c = players[seq].get('error')
for i in range(c):
status = requestText(zu_an_url)
print("消息是 ",status)
if status !=0:
try:
fxx(data[2], status)#發送消息 data[2]=微信id text[0:100]=請求后的消息
except:
# print("你真棒!")
fxx(data[2], "這都是送分題啊!")
else:
fxx(data[2], '網絡請求失敗')
fxx(data[2], "五道題目全部完成")
fxx(data[2],"答題結束")
players.pop(seq)
else: # 繼續生成題目
question(players[seq])
threading.Thread(target=msgdata).start()#多線程收消息 處理
input("啟動微信")
PS: 代碼邏輯好像沒寫完,懶得寫了。
最后
相關鏈接:
微信自動回復彩虹屁或祖安語錄
原作者github項目地址為:
wechat-pc-hook3.0.0.57