mirror of
https://github.com/KimigaiiWuyi/GenshinUID.git
synced 2025-05-31 04:30:29 +08:00
修复:同步新的WikiAPI接口;优化:错误提示.
This commit is contained in:
parent
5f3d37852a
commit
83b548c2f2
670
__init__.py
670
__init__.py
@ -1,24 +1,15 @@
|
||||
from .getDB import (CheckDB, GetAward, GetCharInfo, GetDaily, GetMysInfo, GetAudioInfo,
|
||||
GetSignInfo, GetSignList, GetWeaponInfo, MysSign, OpenPush,
|
||||
connectDB, cookiesDB, deletecache, selectDB, get_alots)
|
||||
from .getImg import draw_abyss0_pic, draw_abyss_pic, draw_event_pic, draw_pic, draw_wordcloud
|
||||
from .getMes import foods_wiki, artifacts_wiki, enemies_wiki, sign, daily, weapon_wiki, char_wiki, audio_wiki, award, deal_ck
|
||||
from .getDB import (CheckDB, OpenPush, connectDB, deletecache, selectDB, get_alots)
|
||||
from .getImg import (draw_abyss0_pic, draw_abyss_pic, draw_event_pic, draw_pic, draw_wordcloud)
|
||||
from .getMes import (foods_wiki, artifacts_wiki, enemies_wiki, sign, daily, weapon_wiki, char_wiki, audio_wiki, award, deal_ck)
|
||||
|
||||
from nonebot import *
|
||||
from hoshino import Service,R,priv,util
|
||||
from hoshino.typing import MessageSegment,CQEvent, HoshinoBot
|
||||
|
||||
import requests,random,os,json,re,time,datetime,string,base64,math
|
||||
|
||||
import threading
|
||||
import hoshino
|
||||
import asyncio
|
||||
import hashlib
|
||||
import sqlite3
|
||||
from io import BytesIO
|
||||
import urllib
|
||||
import requests,traceback
|
||||
from base64 import b64encode
|
||||
import sqlite3,random,traceback,os,re
|
||||
import base64
|
||||
|
||||
sv = Service('genshinuid')
|
||||
bot = get_bot()
|
||||
@ -30,108 +21,147 @@ Texture_PATH = os.path.join(FILE2_PATH,'texture2d')
|
||||
|
||||
@sv.on_prefix('语音')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
message = ev.message.extract_plain_text()
|
||||
message = message.replace(' ', "")
|
||||
name = ''.join(re.findall('[\u4e00-\u9fa5]', message))
|
||||
im = await audio_wiki(name,message)
|
||||
|
||||
try:
|
||||
message = ev.message.extract_plain_text()
|
||||
message = message.replace(' ', "")
|
||||
name = ''.join(re.findall('[\u4e00-\u9fa5]', message))
|
||||
im = await audio_wiki(name,message)
|
||||
await bot.send(ev,im)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
await bot.send(ev,"不存在该语音ID或者不存在该角色。")
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
@sv.on_fullmatch('活动列表')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
img_path = os.path.join(FILE2_PATH,"event.jpg")
|
||||
while(1):
|
||||
if os.path.exists(img_path):
|
||||
f=open(img_path,'rb')
|
||||
ls_f = base64.b64encode(f.read()).decode()
|
||||
imgmes = 'base64://' + ls_f
|
||||
f.close()
|
||||
im = f"[CQ:image,file={imgmes}]"
|
||||
break
|
||||
else:
|
||||
await draw_event_pic()
|
||||
await bot.send(ev,im)
|
||||
try:
|
||||
img_path = os.path.join(FILE2_PATH,"event.jpg")
|
||||
while(1):
|
||||
if os.path.exists(img_path):
|
||||
f=open(img_path,'rb')
|
||||
ls_f = base64.b64encode(f.read()).decode()
|
||||
imgmes = 'base64://' + ls_f
|
||||
f.close()
|
||||
im = f"[CQ:image,file={imgmes}]"
|
||||
break
|
||||
else:
|
||||
await draw_event_pic()
|
||||
await bot.send(ev,im)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
@sv.on_fullmatch('御神签')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
qid = ev.sender["user_id"]
|
||||
raw_data = await get_alots(qid)
|
||||
im = base64.b64decode(raw_data).decode("utf-8")
|
||||
await bot.send(ev,im)
|
||||
try:
|
||||
qid = ev.sender["user_id"]
|
||||
raw_data = await get_alots(qid)
|
||||
im = base64.b64decode(raw_data).decode("utf-8")
|
||||
await bot.send(ev,im)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
@sv.on_prefix('材料')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
message = ev.message.extract_plain_text()
|
||||
message = message.replace(' ', "")
|
||||
im = await char_wiki(message,"costs")
|
||||
await bot.send(ev,im)
|
||||
try:
|
||||
message = ev.message.extract_plain_text()
|
||||
message = message.replace(' ', "")
|
||||
im = await char_wiki(message,"costs")
|
||||
await bot.send(ev,im)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
@sv.on_prefix('原魔')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
message = ev.message.extract_plain_text()
|
||||
im = await enemies_wiki(message)
|
||||
await bot.send(ev,im)
|
||||
try:
|
||||
message = ev.message.extract_plain_text()
|
||||
im = await enemies_wiki(message)
|
||||
await bot.send(ev,im)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
@sv.on_prefix('食物')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
message = ev.message.extract_plain_text()
|
||||
im = await foods_wiki(message)
|
||||
await bot.send(ev,im)
|
||||
try:
|
||||
message = ev.message.extract_plain_text()
|
||||
im = await foods_wiki(message)
|
||||
await bot.send(ev,im)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
@sv.on_prefix('圣遗物')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
message = ev.message.extract_plain_text()
|
||||
im = await artifacts_wiki(message)
|
||||
await bot.send(ev,im)
|
||||
try:
|
||||
message = ev.message.extract_plain_text()
|
||||
im = await artifacts_wiki(message)
|
||||
await bot.send(ev,im)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
@sv.on_prefix('天赋')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
message = ev.message.extract_plain_text()
|
||||
name = ''.join(re.findall('[\u4e00-\u9fa5]', message))
|
||||
num = re.findall(r"[0-9]+", message)
|
||||
if len(num) == 1:
|
||||
im = await char_wiki(name,"talents",num[0])
|
||||
else:
|
||||
im = "参数不正确。"
|
||||
await bot.send(ev,im)
|
||||
try:
|
||||
message = ev.message.extract_plain_text()
|
||||
name = ''.join(re.findall('[\u4e00-\u9fa5]', message))
|
||||
num = re.findall(r"[0-9]+", message)
|
||||
if len(num) == 1:
|
||||
im = await char_wiki(name,"talents",num[0])
|
||||
else:
|
||||
im = "参数不正确。"
|
||||
await bot.send(ev,im)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
@sv.on_prefix('武器')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
message = ev.message.extract_plain_text()
|
||||
name = ''.join(re.findall('[\u4e00-\u9fa5]', message))
|
||||
level = re.findall(r"[0-9]+", message)
|
||||
if len(level) == 1:
|
||||
im = await weapon_wiki(name,level=level[0])
|
||||
else:
|
||||
im = await weapon_wiki(name)
|
||||
await bot.send(ev,im,at_sender=True)
|
||||
try:
|
||||
message = ev.message.extract_plain_text()
|
||||
name = ''.join(re.findall('[\u4e00-\u9fa5]', message))
|
||||
level = re.findall(r"[0-9]+", message)
|
||||
if len(level) == 1:
|
||||
im = await weapon_wiki(name,level=level[0])
|
||||
else:
|
||||
im = await weapon_wiki(name)
|
||||
await bot.send(ev,im,at_sender=True)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
@sv.on_prefix('角色')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
message = ev.message.extract_plain_text()
|
||||
message = message.replace(' ', "")
|
||||
name = ''.join(re.findall('[\u4e00-\u9fa5]', message))
|
||||
level = re.findall(r"[0-9]+", message)
|
||||
if len(level) == 1:
|
||||
im = await char_wiki(name,"char",level=level[0])
|
||||
else:
|
||||
im = await char_wiki(name)
|
||||
await bot.send(ev,im)
|
||||
try:
|
||||
message = ev.message.extract_plain_text()
|
||||
message = message.replace(' ', "")
|
||||
name = ''.join(re.findall('[\u4e00-\u9fa5]', message))
|
||||
level = re.findall(r"[0-9]+", message)
|
||||
if len(level) == 1:
|
||||
im = await char_wiki(name,"char",level=level[0])
|
||||
else:
|
||||
im = await char_wiki(name)
|
||||
await bot.send(ev,im)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
@sv.on_prefix('命座')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
message = ev.message.extract_plain_text()
|
||||
num = int(re.findall(r"\d+", message)[0]) # str
|
||||
m = ''.join(re.findall('[\u4e00-\u9fa5]', message))
|
||||
if num<= 0 or num >6:
|
||||
await bot.send(ev,"你家{}有{}命?".format(m,num),at_sender = True)
|
||||
else:
|
||||
im = await char_wiki(m, "constellations", num)
|
||||
await bot.send(ev,im,at_sender=True)
|
||||
try:
|
||||
message = ev.message.extract_plain_text()
|
||||
num = int(re.findall(r"\d+", message)[0]) # str
|
||||
m = ''.join(re.findall('[\u4e00-\u9fa5]', message))
|
||||
if num<= 0 or num >6:
|
||||
await bot.send(ev,"你家{}有{}命?".format(m,num),at_sender = True)
|
||||
else:
|
||||
im = await char_wiki(m, "constellations", num)
|
||||
await bot.send(ev,im,at_sender=True)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
#每日零点清空cookies使用缓存
|
||||
@sv.scheduled_job('cron', hour='0')
|
||||
@ -144,10 +174,14 @@ async def delete():
|
||||
|
||||
@sv.on_fullmatch('全部重签')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
if ev.user_id not in bot.config.SUPERUSERS:
|
||||
return
|
||||
await bot.send(ev,"已开始执行")
|
||||
await dailysign()
|
||||
try:
|
||||
if ev.user_id not in bot.config.SUPERUSERS:
|
||||
return
|
||||
await bot.send(ev,"已开始执行")
|
||||
await dailysign()
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
#每日零点半进行米游社签到
|
||||
@sv.scheduled_job('cron', hour='0',minute="30")
|
||||
@ -213,15 +247,15 @@ async def setting(ctx):
|
||||
await deal_ck(mes,userid)
|
||||
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message=f'添加Cookies成功!\nCookies属于个人重要信息,如果你是在不知情的情况下添加,请马上修改米游社账户密码,保护个人隐私!\n————\n如果需要【开启自动签到】和【开启推送】还需要使用命令“绑定uid”绑定你的uid。\n例如:绑定uid123456789。')
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message=f'校验失败!请输入正确的Cookies!')
|
||||
traceback.print_exc()
|
||||
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message='校验失败!请输入正确的Cookies!\n错误信息为{}'.format(e))
|
||||
elif '开启推送' in message:
|
||||
try:
|
||||
uid = await selectDB(userid,mode = "uid")
|
||||
im = await OpenPush(int(uid[0]),userid,"on","StatusA")
|
||||
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message=im)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
traceback.print_exc()
|
||||
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message="未找到uid绑定记录。")
|
||||
elif '关闭推送' in message:
|
||||
try:
|
||||
@ -229,7 +263,7 @@ async def setting(ctx):
|
||||
im = await OpenPush(int(uid[0]),userid,"off","StatusA")
|
||||
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message=im)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
traceback.print_exc()
|
||||
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message="未找到uid绑定记录。")
|
||||
elif '开启自动签到' in message:
|
||||
try:
|
||||
@ -237,7 +271,7 @@ async def setting(ctx):
|
||||
im = await OpenPush(int(uid[0]),userid,"on","StatusB")
|
||||
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message=im)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
traceback.print_exc()
|
||||
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message="未找到uid绑定记录。")
|
||||
elif '关闭自动签到' in message:
|
||||
try:
|
||||
@ -245,92 +279,100 @@ async def setting(ctx):
|
||||
im = await OpenPush(int(uid[0]),userid,"off","StatusA")
|
||||
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message=im)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
traceback.print_exc()
|
||||
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message="未找到uid绑定记录。")
|
||||
|
||||
#群聊开启 自动签到 和 推送树脂提醒 功能
|
||||
@sv.on_prefix('开启')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
message = ev.message.extract_plain_text()
|
||||
m = ''.join(re.findall('[\u4e00-\u9fa5]',message))
|
||||
|
||||
qid = ev.sender["user_id"]
|
||||
at = re.search(r"\[CQ:at,qq=(\d*)\]", message)
|
||||
try:
|
||||
message = ev.message.extract_plain_text()
|
||||
m = ''.join(re.findall('[\u4e00-\u9fa5]',message))
|
||||
|
||||
qid = ev.sender["user_id"]
|
||||
at = re.search(r"\[CQ:at,qq=(\d*)\]", message)
|
||||
|
||||
if m == "自动签到":
|
||||
try:
|
||||
if at and qid in bot.config.SUPERUSERS:
|
||||
qid = at.group(1)
|
||||
elif at and at.group(1) != qid:
|
||||
await bot.send(ev,"你没有权限。",at_sender=True)
|
||||
return
|
||||
else:
|
||||
pass
|
||||
gid = ev.group_id
|
||||
uid = await selectDB(ev.sender['user_id'],mode = "uid")
|
||||
im = await OpenPush(int(uid[0]),ev.sender['user_id'],str(gid),"StatusB")
|
||||
await bot.send(ev,im,at_sender=True)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
await bot.send(ev,"未绑定uid信息!",at_sender=True)
|
||||
elif m == "推送":
|
||||
try:
|
||||
if at and qid in bot.config.SUPERUSERS:
|
||||
qid = at.group(1)
|
||||
elif at and at.group(1) != qid:
|
||||
await bot.send(ev,"你没有权限。",at_sender=True)
|
||||
return
|
||||
else:
|
||||
pass
|
||||
gid = ev.group_id
|
||||
uid = await selectDB(ev.sender['user_id'],mode = "uid")
|
||||
im = await OpenPush(int(uid[0]),ev.sender['user_id'],str(gid),"StatusA")
|
||||
await bot.send(ev,im,at_sender=True)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
await bot.send(ev,"未绑定uid信息!",at_sender=True)
|
||||
if m == "自动签到":
|
||||
try:
|
||||
if at and qid in bot.config.SUPERUSERS:
|
||||
qid = at.group(1)
|
||||
elif at and at.group(1) != qid:
|
||||
await bot.send(ev,"你没有权限。",at_sender=True)
|
||||
return
|
||||
else:
|
||||
pass
|
||||
gid = ev.group_id
|
||||
uid = await selectDB(ev.sender['user_id'],mode = "uid")
|
||||
im = await OpenPush(int(uid[0]),ev.sender['user_id'],str(gid),"StatusB")
|
||||
await bot.send(ev,im,at_sender=True)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"未绑定uid信息!",at_sender=True)
|
||||
elif m == "推送":
|
||||
try:
|
||||
if at and qid in bot.config.SUPERUSERS:
|
||||
qid = at.group(1)
|
||||
elif at and at.group(1) != qid:
|
||||
await bot.send(ev,"你没有权限。",at_sender=True)
|
||||
return
|
||||
else:
|
||||
pass
|
||||
gid = ev.group_id
|
||||
uid = await selectDB(ev.sender['user_id'],mode = "uid")
|
||||
im = await OpenPush(int(uid[0]),ev.sender['user_id'],str(gid),"StatusA")
|
||||
await bot.send(ev,im,at_sender=True)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"未绑定uid信息!",at_sender=True)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
#群聊关闭 自动签到 和 推送树脂提醒 功能
|
||||
@sv.on_prefix('关闭')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
message = ev.message.extract_plain_text()
|
||||
m = ''.join(re.findall('[\u4e00-\u9fa5]',message))
|
||||
try:
|
||||
message = ev.message.extract_plain_text()
|
||||
m = ''.join(re.findall('[\u4e00-\u9fa5]',message))
|
||||
|
||||
qid = ev.sender["user_id"]
|
||||
at = re.search(r"\[CQ:at,qq=(\d*)\]", message)
|
||||
qid = ev.sender["user_id"]
|
||||
at = re.search(r"\[CQ:at,qq=(\d*)\]", message)
|
||||
|
||||
if m == "自动签到":
|
||||
try:
|
||||
if at and qid in bot.config.SUPERUSERS:
|
||||
qid = at.group(1)
|
||||
elif at and at.group(1) != qid:
|
||||
await bot.send(ev,"你没有权限。",at_sender=True)
|
||||
return
|
||||
else:
|
||||
pass
|
||||
gid = ev.group_id
|
||||
uid = await selectDB(ev.sender['user_id'],mode = "uid")
|
||||
im = await OpenPush(int(uid[0]),ev.sender['user_id'],"off","StatusB")
|
||||
await bot.send(ev,im,at_sender=True)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
await bot.send(ev,"未绑定uid信息!",at_sender=True)
|
||||
elif m == "推送":
|
||||
try:
|
||||
if at and qid in bot.config.SUPERUSERS:
|
||||
qid = at.group(1)
|
||||
elif at and at.group(1) != qid:
|
||||
await bot.send(ev,"你没有权限。",at_sender=True)
|
||||
return
|
||||
else:
|
||||
pass
|
||||
gid = ev.group_id
|
||||
uid = await selectDB(ev.sender['user_id'],mode = "uid")
|
||||
im = await OpenPush(int(uid[0]),ev.sender['user_id'],"off","StatusA")
|
||||
await bot.send(ev,im,at_sender=True)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
await bot.send(ev,"未绑定uid信息!",at_sender=True)
|
||||
if m == "自动签到":
|
||||
try:
|
||||
if at and qid in bot.config.SUPERUSERS:
|
||||
qid = at.group(1)
|
||||
elif at and at.group(1) != qid:
|
||||
await bot.send(ev,"你没有权限。",at_sender=True)
|
||||
return
|
||||
else:
|
||||
pass
|
||||
gid = ev.group_id
|
||||
uid = await selectDB(ev.sender['user_id'],mode = "uid")
|
||||
im = await OpenPush(int(uid[0]),ev.sender['user_id'],"off","StatusB")
|
||||
await bot.send(ev,im,at_sender=True)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"未绑定uid信息!",at_sender=True)
|
||||
elif m == "推送":
|
||||
try:
|
||||
if at and qid in bot.config.SUPERUSERS:
|
||||
qid = at.group(1)
|
||||
elif at and at.group(1) != qid:
|
||||
await bot.send(ev,"你没有权限。",at_sender=True)
|
||||
return
|
||||
else:
|
||||
pass
|
||||
gid = ev.group_id
|
||||
uid = await selectDB(ev.sender['user_id'],mode = "uid")
|
||||
im = await OpenPush(int(uid[0]),ev.sender['user_id'],"off","StatusA")
|
||||
await bot.send(ev,im,at_sender=True)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"未绑定uid信息!",at_sender=True)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
#群聊内 每月统计 功能
|
||||
@sv.on_fullmatch('每月统计')
|
||||
@ -342,7 +384,7 @@ async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
im = await award(uid)
|
||||
await bot.send(ev,im,at_sender=True)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,'未找到绑定信息',at_sender=True)
|
||||
|
||||
#群聊内 签到 功能
|
||||
@ -355,14 +397,18 @@ async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
im = await sign(uid)
|
||||
await bot.send(ev,im,at_sender=True)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,'未找到绑定信息',at_sender=True)
|
||||
|
||||
#群聊内 校验Cookies 是否正常的功能,不正常自动删掉
|
||||
@sv.on_fullmatch('校验全部Cookies')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
im = await CheckDB()
|
||||
await bot.send(ev,im)
|
||||
try:
|
||||
im = await CheckDB()
|
||||
await bot.send(ev,im)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
#群聊内 查询当前树脂状态以及派遣状态 的命令
|
||||
@sv.on_fullmatch('当前状态')
|
||||
@ -373,7 +419,7 @@ async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
mes = await daily("ask",uid)
|
||||
im = mes[0]['message']
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
traceback.print_exc()
|
||||
im = "没有找到绑定信息。"
|
||||
|
||||
await bot.send(ev,im, at_sender=True)
|
||||
@ -381,153 +427,173 @@ async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
#群聊内 查询uid 的命令
|
||||
@sv.on_prefix('uid')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
image = re.search(r"\[CQ:image,file=(.*),url=(.*)\]", str(ev.message))
|
||||
message = ev.message.extract_plain_text()
|
||||
uid = re.findall(r"\d+", message)[0] # str
|
||||
m = ''.join(re.findall('[\u4e00-\u9fa5]',message))
|
||||
if m == "深渊":
|
||||
try:
|
||||
if len(re.findall(r"\d+", message)) == 2:
|
||||
floor_num = re.findall(r"\d+", message)[1]
|
||||
im = await draw_abyss_pic(uid,ev.sender['nickname'],floor_num,image)
|
||||
try:
|
||||
image = re.search(r"\[CQ:image,file=(.*),url=(.*)\]", str(ev.message))
|
||||
message = ev.message.extract_plain_text()
|
||||
uid = re.findall(r"\d+", message)[0] # str
|
||||
m = ''.join(re.findall('[\u4e00-\u9fa5]',message))
|
||||
if m == "深渊":
|
||||
try:
|
||||
if len(re.findall(r"\d+", message)) == 2:
|
||||
floor_num = re.findall(r"\d+", message)[1]
|
||||
im = await draw_abyss_pic(uid,ev.sender['nickname'],floor_num,image)
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
else:
|
||||
im = await draw_abyss0_pic(uid,ev.sender['nickname'],image)
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except Exception as e:
|
||||
await bot.send("获取失败,有可能是数据状态有问题,\n{}\n请检查后台输出。".format(e))
|
||||
traceback.print_exc()
|
||||
elif m == "上期深渊":
|
||||
try:
|
||||
if len(re.findall(r"\d+", message)) == 2:
|
||||
floor_num = re.findall(r"\d+", message)[1]
|
||||
im = await draw_abyss_pic(uid,ev.sender['nickname'],floor_num,image,2,"2")
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
else:
|
||||
im = await draw_abyss0_pic(uid,ev.sender['nickname'],image,2,"2")
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except Exception as e:
|
||||
await bot.send("获取失败,有可能是数据状态有问题,\n{}\n请检查后台输出。".format(e))
|
||||
traceback.print_exc()
|
||||
else:
|
||||
try:
|
||||
im = await draw_pic(uid,ev.sender['nickname'],image,2)
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
else:
|
||||
im = await draw_abyss0_pic(uid,ev.sender['nickname'],image)
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
await bot.send(ev,'深渊输入错误!')
|
||||
elif m == "上期深渊":
|
||||
try:
|
||||
if len(re.findall(r"\d+", message)) == 2:
|
||||
floor_num = re.findall(r"\d+", message)[1]
|
||||
im = await draw_abyss_pic(uid,ev.sender['nickname'],floor_num,image,2,"2")
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
else:
|
||||
im = await draw_abyss0_pic(uid,ev.sender['nickname'],image,2,"2")
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
await bot.send(ev,'深渊输入错误!')
|
||||
else:
|
||||
try:
|
||||
im = await draw_pic(uid,ev.sender['nickname'],image,2)
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
await bot.send(ev,'输入错误!')
|
||||
except Exception as e:
|
||||
await bot.send("获取失败,有可能是数据状态有问题,\n{}\n请检查后台输出。".format(e))
|
||||
traceback.print_exc()
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
#群聊内 绑定uid 的命令,会绑定至当前qq号上
|
||||
@sv.on_prefix('绑定uid')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
message = ev.message.extract_plain_text()
|
||||
uid = re.findall(r"\d+", message)[0] # str
|
||||
await connectDB(ev.sender['user_id'],uid)
|
||||
await bot.send(ev,'绑定uid成功!', at_sender=True)
|
||||
try:
|
||||
message = ev.message.extract_plain_text()
|
||||
uid = re.findall(r"\d+", message)[0] # str
|
||||
await connectDB(ev.sender['user_id'],uid)
|
||||
await bot.send(ev,'绑定uid成功!', at_sender=True)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
#群聊内 绑定米游社通行证 的命令,会绑定至当前qq号上,和绑定uid不冲突,两者可以同时绑定
|
||||
@sv.on_prefix('绑定mys')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
message = ev.message.extract_plain_text()
|
||||
mys = re.findall(r"\d+", message)[0] # str
|
||||
await connectDB(ev.sender['user_id'],None,mys)
|
||||
await bot.send(ev,'绑定米游社id成功!', at_sender=True)
|
||||
try:
|
||||
message = ev.message.extract_plain_text()
|
||||
mys = re.findall(r"\d+", message)[0] # str
|
||||
await connectDB(ev.sender['user_id'],None,mys)
|
||||
await bot.send(ev,'绑定米游社id成功!', at_sender=True)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
#群聊内 绑定过uid/mysid的情况下,可以查询,默认优先调用米游社通行证,多出世界等级一个参数
|
||||
@sv.on_prefix('查询')
|
||||
async def _(bot, ev):
|
||||
image = re.search(r"\[CQ:image,file=(.*),url=(.*)\]", str(ev.message))
|
||||
at = re.search(r"\[CQ:at,qq=(\d*)\]", str(ev.raw_message.strip()))
|
||||
message = ev.message.extract_plain_text()
|
||||
if at:
|
||||
qid = at.group(1)
|
||||
mi =await bot.get_group_member_info(group_id=ev.group_id, user_id=qid)
|
||||
nickname = mi["nickname"]
|
||||
uid = await selectDB(qid)
|
||||
else:
|
||||
nickname = ev.sender['nickname']
|
||||
uid = await selectDB(ev.sender['user_id'])
|
||||
|
||||
m = ''.join(re.findall('[\u4e00-\u9fa5]',message))
|
||||
if uid:
|
||||
if m == "深渊":
|
||||
try:
|
||||
if len(re.findall(r"\d+", message)) == 1:
|
||||
floor_num = re.findall(r"\d+", message)[0]
|
||||
im = await draw_abyss_pic(uid[0],nickname,floor_num,image,uid[1])
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
else:
|
||||
im = await draw_abyss0_pic(uid[0],nickname,image,uid[1])
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
await bot.send(ev,'输入错误!')
|
||||
elif m == "上期深渊":
|
||||
try:
|
||||
if len(re.findall(r"\d+", message)) == 1:
|
||||
floor_num = re.findall(r"\d+", message)[0]
|
||||
im = await draw_abyss_pic(uid[0],nickname,floor_num,image,uid[1],"2")
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
else:
|
||||
im = await draw_abyss0_pic(uid[0],nickname,image,uid[1],"2")
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
await bot.send(ev,'深渊输入错误!')
|
||||
elif m == "词云":
|
||||
try:
|
||||
im = await draw_wordcloud(uid[0],image,uid[1])
|
||||
await bot.send(ev,im, at_sender=True)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
await bot.send(ev,'遇到错误!')
|
||||
elif m == "":
|
||||
try:
|
||||
bg = await draw_pic(uid[0],nickname,image,uid[1])
|
||||
await bot.send(ev, bg, at_sender=True)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
await bot.send(ev,'输入错误!')
|
||||
try:
|
||||
image = re.search(r"\[CQ:image,file=(.*),url=(.*)\]", str(ev.message))
|
||||
at = re.search(r"\[CQ:at,qq=(\d*)\]", str(ev.raw_message.strip()))
|
||||
message = ev.message.extract_plain_text()
|
||||
if at:
|
||||
qid = at.group(1)
|
||||
mi =await bot.get_group_member_info(group_id=ev.group_id, user_id=qid)
|
||||
nickname = mi["nickname"]
|
||||
uid = await selectDB(qid)
|
||||
else:
|
||||
pass
|
||||
else:
|
||||
await bot.send(ev,'未找到绑定记录!')
|
||||
nickname = ev.sender['nickname']
|
||||
uid = await selectDB(ev.sender['user_id'])
|
||||
|
||||
m = ''.join(re.findall('[\u4e00-\u9fa5]',message))
|
||||
if uid:
|
||||
if m == "深渊":
|
||||
try:
|
||||
if len(re.findall(r"\d+", message)) == 1:
|
||||
floor_num = re.findall(r"\d+", message)[0]
|
||||
im = await draw_abyss_pic(uid[0],nickname,floor_num,image,uid[1])
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
else:
|
||||
im = await draw_abyss0_pic(uid[0],nickname,image,uid[1])
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except Exception as e:
|
||||
await bot.send("获取失败,有可能是数据状态有问题,\n{}\n请检查后台输出。".format(e))
|
||||
traceback.print_exc()
|
||||
elif m == "上期深渊":
|
||||
try:
|
||||
if len(re.findall(r"\d+", message)) == 1:
|
||||
floor_num = re.findall(r"\d+", message)[0]
|
||||
im = await draw_abyss_pic(uid[0],nickname,floor_num,image,uid[1],"2")
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
else:
|
||||
im = await draw_abyss0_pic(uid[0],nickname,image,uid[1],"2")
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except Exception as e:
|
||||
await bot.send("获取失败,有可能是数据状态有问题,\n{}\n请检查后台输出。".format(e))
|
||||
traceback.print_exc()
|
||||
elif m == "词云":
|
||||
try:
|
||||
im = await draw_wordcloud(uid[0],image,uid[1])
|
||||
await bot.send(ev,im, at_sender=True)
|
||||
except Exception as e:
|
||||
await bot.send("获取失败,有可能是数据状态有问题,\n{}\n请检查后台输出。".format(e))
|
||||
traceback.print_exc()
|
||||
elif m == "":
|
||||
try:
|
||||
bg = await draw_pic(uid[0],nickname,image,uid[1])
|
||||
await bot.send(ev, bg, at_sender=True)
|
||||
except Exception as e:
|
||||
await bot.send("获取失败,有可能是数据状态有问题,\n{}\n请检查后台输出。".format(e))
|
||||
traceback.print_exc()
|
||||
else:
|
||||
pass
|
||||
else:
|
||||
await bot.send(ev,'未找到绑定记录!')
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
||||
|
||||
#群聊内 查询米游社通行证 的命令
|
||||
@sv.on_prefix('mys')
|
||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||
image = re.search(r"\[CQ:image,file=(.*),url=(.*)\]", str(ev.message))
|
||||
message = ev.message.extract_plain_text()
|
||||
uid = re.findall(r"\d+", message)[0] # str
|
||||
m = ''.join(re.findall('[\u4e00-\u9fa5]',message))
|
||||
if m == "深渊":
|
||||
try:
|
||||
if len(re.findall(r"\d+", message)) == 2:
|
||||
floor_num = re.findall(r"\d+", message)[1]
|
||||
im = await draw_abyss_pic(uid,ev.sender['nickname'],floor_num,image,3)
|
||||
try:
|
||||
image = re.search(r"\[CQ:image,file=(.*),url=(.*)\]", str(ev.message))
|
||||
message = ev.message.extract_plain_text()
|
||||
uid = re.findall(r"\d+", message)[0] # str
|
||||
m = ''.join(re.findall('[\u4e00-\u9fa5]',message))
|
||||
if m == "深渊":
|
||||
try:
|
||||
if len(re.findall(r"\d+", message)) == 2:
|
||||
floor_num = re.findall(r"\d+", message)[1]
|
||||
im = await draw_abyss_pic(uid,ev.sender['nickname'],floor_num,image,3)
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
else:
|
||||
im = await draw_abyss0_pic(uid,ev.sender['nickname'],image,3)
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except Exception as e:
|
||||
await bot.send("获取失败,有可能是数据状态有问题,\n{}\n请检查后台输出。".format(e))
|
||||
traceback.print_exc()
|
||||
elif m == "上期深渊":
|
||||
try:
|
||||
if len(re.findall(r"\d+", message)) == 1:
|
||||
floor_num = re.findall(r"\d+", message)[0]
|
||||
im = await draw_abyss_pic(uid,ev.sender['nickname'],floor_num,image,3,"2")
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
else:
|
||||
im = await draw_abyss0_pic(uid,ev.sender['nickname'],image,3,"2")
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except Exception as e:
|
||||
await bot.send("获取失败,有可能是数据状态有问题,\n{}\n请检查后台输出。".format(e))
|
||||
traceback.print_exc()
|
||||
else:
|
||||
try:
|
||||
im = await draw_pic(uid,ev.sender['nickname'],image,3)
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
else:
|
||||
im = await draw_abyss0_pic(uid,ev.sender['nickname'],image,3)
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
await bot.send(ev,'深渊输入错误!')
|
||||
elif m == "上期深渊":
|
||||
try:
|
||||
if len(re.findall(r"\d+", message)) == 1:
|
||||
floor_num = re.findall(r"\d+", message)[0]
|
||||
im = await draw_abyss_pic(uid,ev.sender['nickname'],floor_num,image,3,"2")
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
else:
|
||||
im = await draw_abyss0_pic(uid,ev.sender['nickname'],image,3,"2")
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
await bot.send(ev,'深渊输入错误!')
|
||||
else:
|
||||
try:
|
||||
im = await draw_pic(uid,ev.sender['nickname'],image,3)
|
||||
await bot.send(ev, im, at_sender=True)
|
||||
except Exception as e:
|
||||
print(e.with_traceback)
|
||||
await bot.send(ev,'输入错误!')
|
||||
except Exception as e:
|
||||
await bot.send("获取失败,有可能是数据状态有问题,\n{}\n请检查后台输出。".format(e))
|
||||
traceback.print_exc()
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
await bot.send(ev,"发生错误 {},请检查后台输出。".format(e))
|
57
getDB.py
57
getDB.py
@ -1,18 +1,11 @@
|
||||
import sqlite3
|
||||
import sys,datetime,urllib
|
||||
|
||||
from httpx import AsyncClient
|
||||
from shutil import copyfile
|
||||
|
||||
from nonebot import *
|
||||
from bs4 import BeautifulSoup
|
||||
import sqlite3
|
||||
import requests,random,os,json,re
|
||||
import hoshino
|
||||
import asyncio
|
||||
import time
|
||||
import time,datetime,urllib
|
||||
import string
|
||||
import hashlib
|
||||
import base64
|
||||
|
||||
mhyVersion = "2.11.1"
|
||||
|
||||
@ -277,8 +270,7 @@ async def cookiesDB(uid,Cookies,qid):
|
||||
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
|
||||
|
||||
async def OwnerCookies(uid):
|
||||
conn = sqlite3.connect('ID_DATA.db')
|
||||
c = conn.cursor()
|
||||
@ -344,6 +336,7 @@ async def GetDaily(Uid,ServerID="cn_gf01"):
|
||||
'Referer': 'https://webstatic.mihoyo.com/',
|
||||
"Cookie": await OwnerCookies(Uid)})
|
||||
data = json.loads(req.text)
|
||||
#print(data)
|
||||
return data
|
||||
except requests.exceptions.SSLError:
|
||||
try:
|
||||
@ -612,38 +605,34 @@ async def GetAudioInfo(name,audioid,language = "cn"):
|
||||
async def GetWeaponInfo(name,level = None):
|
||||
async with AsyncClient() as client:
|
||||
req = await client.get(
|
||||
url="https://api.minigg.cn/weapons?query=" + name + "&stats=" + level if level else "https://api.minigg.cn/weapons?query=" + name,
|
||||
url="https://info.minigg.cn/weapons?query=" + name + "&stats=" + level if level else "https://info.minigg.cn/weapons?query=" + name,
|
||||
headers={
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36',
|
||||
'Referer': 'https://genshin.minigg.cn/index.html'})
|
||||
data = jsonfy(req.text)
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'})
|
||||
data = json.loads(req.text)
|
||||
return data
|
||||
|
||||
async def GetMiscInfo(mode,name):
|
||||
url = "https://api.minigg.cn/{}?query={}".format(mode,urllib.parse.quote(name, safe=''))
|
||||
url = "https://info.minigg.cn/{}?query={}".format(mode,urllib.parse.quote(name, safe=''))
|
||||
async with AsyncClient() as client:
|
||||
req = await client.get(
|
||||
url = url,
|
||||
headers={
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
|
||||
'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
|
||||
'accept-encoding':'gzip, deflate, br'})
|
||||
print(req.text)
|
||||
data = jsonfy(req.text)
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'})
|
||||
data = json.loads(req.text)
|
||||
return data
|
||||
|
||||
async def GetCharInfo(name,mode = "char",level = None):
|
||||
url2 = None
|
||||
data2 = None
|
||||
baseurl = "https://api.minigg.cn/characters?query="
|
||||
baseurl = "https://info.minigg.cn/characters?query="
|
||||
if mode == "talents":
|
||||
url = "https://api.minigg.cn/talents?query=" + name
|
||||
url = "https://info.minigg.cn/talents?query=" + name
|
||||
elif mode == "constellations":
|
||||
url = "https://api.minigg.cn/constellations?query=" + name
|
||||
url = "https://info.minigg.cn/constellations?query=" + name
|
||||
elif mode == "costs":
|
||||
url = baseurl + name + "&costs=1"
|
||||
url2 = "https://api.minigg.cn/talents?query=" + name + "&costs=1"
|
||||
url3 = "https://api.minigg.cn/talents?query=" + name + "&matchCategories=true"
|
||||
url2 = "https://info.minigg.cn/talents?query=" + name + "&costs=1"
|
||||
url3 = "https://info.minigg.cn/talents?query=" + name + "&matchCategories=true"
|
||||
elif level:
|
||||
url = baseurl + name + "&stats=" + level
|
||||
else:
|
||||
@ -656,8 +645,8 @@ async def GetCharInfo(name,mode = "char",level = None):
|
||||
headers={
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36',
|
||||
'Referer': 'https://genshin.minigg.cn/index.html'})
|
||||
data2 = jsonfy(req.text)
|
||||
if data2 != "undefined":
|
||||
data2 = json.loads(req.text)
|
||||
if "errcode" not in data2:
|
||||
pass
|
||||
else:
|
||||
async with AsyncClient() as client:
|
||||
@ -666,7 +655,7 @@ async def GetCharInfo(name,mode = "char",level = None):
|
||||
headers={
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36',
|
||||
'Referer': 'https://genshin.minigg.cn/index.html'})
|
||||
data2 = req.text
|
||||
data2 = json.loads(req.text)
|
||||
|
||||
async with AsyncClient() as client:
|
||||
req = await client.get(
|
||||
@ -675,8 +664,8 @@ async def GetCharInfo(name,mode = "char",level = None):
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36',
|
||||
'Referer': 'https://genshin.minigg.cn/index.html'})
|
||||
try:
|
||||
data = jsonfy(req.text)
|
||||
if data != "undefined":
|
||||
data = json.loads(req.text)
|
||||
if "errcode" not in data:
|
||||
pass
|
||||
else:
|
||||
async with AsyncClient() as client:
|
||||
@ -685,7 +674,7 @@ async def GetCharInfo(name,mode = "char",level = None):
|
||||
headers={
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36',
|
||||
'Referer': 'https://genshin.minigg.cn/index.html'})
|
||||
data = req.text
|
||||
data = json.loads(req.text)
|
||||
except:
|
||||
data = None
|
||||
return data if data2 == None else [data,data2]
|
||||
@ -705,8 +694,10 @@ async def GetGenshinEvent(mode = "List"):
|
||||
data = json.loads(req.text)
|
||||
return data
|
||||
|
||||
'''
|
||||
def jsonfy(s:str)->object:
|
||||
s = s.replace("stats: [Function (anonymous)]","").replace("(","(").replace(")",")")
|
||||
#此函数将不带双引号的json的key标准化
|
||||
obj = eval(s, type('js', (dict,), dict(__getitem__=lambda s, n: n))())
|
||||
return obj
|
||||
return obj
|
||||
'''
|
||||
|
203
getMes.py
203
getMes.py
@ -2,9 +2,9 @@ import math,sqlite3,re,os,random,requests,json
|
||||
from base64 import b64encode
|
||||
from io import BytesIO
|
||||
|
||||
from .getDB import (CheckDB, GetAward, GetCharInfo, GetDaily, GetMysInfo, GetAudioInfo,
|
||||
GetSignInfo, GetSignList, GetWeaponInfo, MysSign, OpenPush,
|
||||
connectDB, cookiesDB, deletecache, selectDB, get_alots, GetMiscInfo)
|
||||
from .getDB import ( GetAward, GetCharInfo, GetDaily, GetMysInfo, GetAudioInfo,
|
||||
GetSignInfo, GetSignList, GetWeaponInfo, MysSign,
|
||||
cookiesDB, GetMiscInfo)
|
||||
|
||||
FILE_PATH = os.path.dirname(__file__)
|
||||
FILE2_PATH = os.path.join(FILE_PATH, 'mys')
|
||||
@ -110,8 +110,7 @@ artifacts_im = '''【{}】
|
||||
【{}】:{}
|
||||
【{}】:{}
|
||||
【{}】:{}
|
||||
【{}】:{}
|
||||
'''
|
||||
【{}】:{}'''
|
||||
|
||||
food_im = '''【{}】
|
||||
【稀有度】:{}
|
||||
@ -119,8 +118,8 @@ food_im = '''【{}】
|
||||
【食物类别】:{}
|
||||
【效果】:{}
|
||||
【介绍】:{}
|
||||
【材料】:{}
|
||||
'''
|
||||
【材料】:
|
||||
{}'''
|
||||
|
||||
audio_json = '''{
|
||||
"357":["357_01","357_02","357_03"],
|
||||
@ -159,11 +158,10 @@ async def deal_ck(mes,qid):
|
||||
conn = sqlite3.connect('ID_DATA.db')
|
||||
c = conn.cursor()
|
||||
|
||||
test = c.execute("SELECT count(*) FROM sqlite_master WHERE type='table' AND name = 'CookiesCache'")
|
||||
if test == 0:
|
||||
pass
|
||||
else:
|
||||
try:
|
||||
c.execute("DELETE from CookiesCache where uid=? or mysid = ?",(uid,mysid))
|
||||
except:
|
||||
pass
|
||||
|
||||
conn.commit()
|
||||
conn.close()
|
||||
@ -225,39 +223,47 @@ async def audio_wiki(name,message):
|
||||
|
||||
async def artifacts_wiki(name):
|
||||
data = await GetMiscInfo("artifacts",name)
|
||||
star = ""
|
||||
for i in data["rarity"]:
|
||||
star = star + i + "星、"
|
||||
star = star[:-1]
|
||||
im = artifacts_im.format(data["name"],star,data["2pc"],data["4pc"],data["flower"]["name"],data["flower"]["description"],
|
||||
data["plume"]["name"],data["plume"]["description"],data["sands"]["name"],data["sands"]["description"],
|
||||
data["goblet"]["name"],data["goblet"]["description"],data["circlet"]["name"],data["circlet"]["description"])
|
||||
if "errcode" in data:
|
||||
im = "该圣遗物不存在。"
|
||||
else:
|
||||
star = ""
|
||||
for i in data["rarity"]:
|
||||
star = star + i + "星、"
|
||||
star = star[:-1]
|
||||
im = artifacts_im.format(data["name"],star,data["2pc"],data["4pc"],data["flower"]["name"],data["flower"]["description"],
|
||||
data["plume"]["name"],data["plume"]["description"],data["sands"]["name"],data["sands"]["description"],
|
||||
data["goblet"]["name"],data["goblet"]["description"],data["circlet"]["name"],data["circlet"]["description"])
|
||||
return im
|
||||
|
||||
async def foods_wiki(name):
|
||||
data = await GetMiscInfo("foods",name)
|
||||
ingredients = ""
|
||||
food_temp = {}
|
||||
for i in data["ingredients"]:
|
||||
if i["name"] not in food_temp:
|
||||
food_temp[i["name"]] = i["count"]
|
||||
else:
|
||||
food_temp[i["name"]] = food_temp[i["name"]] + i["count"]
|
||||
print(food_temp)
|
||||
for i in food_temp:
|
||||
ingredients += i + ":" + str(food_temp[i]) + "\n"
|
||||
ingredients = ingredients[:-1]
|
||||
im = food_im.format(data["name"],data["rarity"],data["foodtype"],data["foodfilter"],data["effect"],data["description"],ingredients)
|
||||
if "errcode" in data:
|
||||
im = "该食物不存在。"
|
||||
else:
|
||||
ingredients = ""
|
||||
food_temp = {}
|
||||
for i in data["ingredients"]:
|
||||
if i["name"] not in food_temp:
|
||||
food_temp[i["name"]] = i["count"]
|
||||
else:
|
||||
food_temp[i["name"]] = food_temp[i["name"]] + i["count"]
|
||||
for i in food_temp:
|
||||
ingredients += i + ":" + str(food_temp[i]) + "\n"
|
||||
ingredients = ingredients[:-1]
|
||||
im = food_im.format(data["name"],data["rarity"],data["foodtype"],data["foodfilter"],data["effect"],data["description"],ingredients)
|
||||
return im
|
||||
|
||||
async def enemies_wiki(name):
|
||||
raw_data = await GetMiscInfo("enemies",name)
|
||||
reward = ""
|
||||
for i in raw_data["rewardpreview"]:
|
||||
reward += i["name"] + ":" + str(i["count"]) if "count" in i.keys() else i["name"] + ":" + "可能"
|
||||
reward += "\n"
|
||||
im = "【{}】\n——{}——\n类型:{}\n信息:{}\n掉落物:\n{}".format(raw_data["name"],raw_data["specialname"],
|
||||
raw_data["category"],raw_data["description"],reward)
|
||||
if "errcode" in raw_data:
|
||||
im = "该原魔不存在。"
|
||||
else:
|
||||
reward = ""
|
||||
for i in raw_data["rewardpreview"]:
|
||||
reward += i["name"] + ":" + str(i["count"]) if "count" in i.keys() else i["name"] + ":" + "可能"
|
||||
reward += "\n"
|
||||
im = "【{}】\n——{}——\n类型:{}\n信息:{}\n掉落物:\n{}".format(raw_data["name"],raw_data["specialname"],
|
||||
raw_data["category"],raw_data["description"],reward)
|
||||
return im
|
||||
|
||||
# 签到函数
|
||||
@ -330,15 +336,15 @@ async def daily(mode="push", uid=None):
|
||||
expedition_info.append(
|
||||
f"{avatar_name} 剩余时间{remained_timed}")
|
||||
|
||||
if current_resin >= row[6] or dailydata["max_home_coin"] - dailydata["current_home_coin"] <= 100 or finished_expedition_num >0:
|
||||
if current_resin >= row[6] or dailydata["max_home_coin"] - dailydata["current_home_coin"] <= 100:
|
||||
tip = ''
|
||||
|
||||
if current_resin >= row[6] and row[6] != 0:
|
||||
tip += "\n==============\n你的树脂快满了!"
|
||||
if dailydata["max_home_coin"] - dailydata["current_home_coin"] <= 100:
|
||||
tip += "\n==============\n你的洞天宝钱快满了!"
|
||||
if finished_expedition_num >0:
|
||||
tip += "\n==============\n你有探索派遣完成了!"
|
||||
#if finished_expedition_num >0:
|
||||
# tip += "\n==============\n你有探索派遣完成了!"
|
||||
max_resin = dailydata['max_resin']
|
||||
rec_time = ''
|
||||
# print(dailydata)
|
||||
@ -374,8 +380,10 @@ async def daily(mode="push", uid=None):
|
||||
|
||||
async def weapon_wiki(name,level = None):
|
||||
data = await GetWeaponInfo(name)
|
||||
if level:
|
||||
data2 = await GetWeaponInfo(name,level+"plus" if level else level)
|
||||
if "errcode" in data:
|
||||
im = "武器不存在。"
|
||||
elif level:
|
||||
data2 = await GetWeaponInfo(name,level)
|
||||
if data["substat"] != "":
|
||||
sp = data["substat"] + ":" + '%.1f%%' % (data2["specialized"] * 100) if data["substat"] != "元素精通" else data["substat"] + ":" + str(math.floor(data2["specialized"]))
|
||||
else:
|
||||
@ -416,12 +424,10 @@ async def weapon_wiki(name,level = None):
|
||||
async def char_wiki(name, mode="char", level=None):
|
||||
data = await GetCharInfo(name, mode, level if mode == "char" else None)
|
||||
if mode == "char":
|
||||
if isinstance(data,str):
|
||||
raw_data = data.replace("[","").replace("\n","").replace("]","").replace(" ","").replace("'","").split(',')
|
||||
if data.replace("\n","").replace(" ","") == "undefined":
|
||||
im = "不存在该角色或类型。"
|
||||
else:
|
||||
im = ','.join(raw_data)
|
||||
if isinstance(data,list):
|
||||
im = ','.join(data)
|
||||
elif "errcode" in data:
|
||||
im = "不存在该角色或类型。"
|
||||
elif level:
|
||||
data2 = await GetCharInfo(name, mode)
|
||||
sp = data2["substat"] + ":" + '%.1f%%' % (data["specialized"] * 100) if data2["substat"] != "元素精通" else data2["substat"] + ":" + str(math.floor(data["specialized"]))
|
||||
@ -441,19 +447,17 @@ async def char_wiki(name, mode="char", level=None):
|
||||
im = char_info_im.format(
|
||||
name, star, type, element, up_val, bdday, polar, cv, info)
|
||||
elif mode == "costs":
|
||||
if isinstance(data[1],str):
|
||||
raw_data = data[1].replace("[","").replace("\n","").replace("]","").replace(" ","").replace("'","").split(',')
|
||||
if data[1].replace("\n","").replace(" ","") == "undefined":
|
||||
im = "不存在该角色或类型。"
|
||||
else:
|
||||
im = ','.join(raw_data)
|
||||
if isinstance(data[1],list):
|
||||
im = ','.join(data[1])
|
||||
elif "errcode" in data[1]:
|
||||
im = "不存在该角色或类型。"
|
||||
else:
|
||||
im = "【天赋材料(一份)】\n{}\n【突破材料】\n{}"
|
||||
im1 = ""
|
||||
im2 = ""
|
||||
|
||||
talent_temp = {}
|
||||
talent_cost = data[1]["costs"]
|
||||
talent_cost = data[1]
|
||||
for i in talent_cost.values():
|
||||
for j in i:
|
||||
if j["name"] not in talent_temp:
|
||||
@ -477,46 +481,55 @@ async def char_wiki(name, mode="char", level=None):
|
||||
|
||||
im = im.format(im1,im2)
|
||||
elif mode == "constellations":
|
||||
im = "【" + data["c{}".format(level)]['name'] + "】" + ":" + \
|
||||
"\n" + data["c{}".format(level)]['effect'].replace("*", "")
|
||||
elif mode == "talents":
|
||||
if int(level) <= 3 :
|
||||
if level == "1":
|
||||
data = data["combat1"]
|
||||
elif level == "2":
|
||||
data = data["combat2"]
|
||||
elif level == "3":
|
||||
data = data["combat3"]
|
||||
skill_name = data["name"]
|
||||
skill_info = data["info"]
|
||||
skill_detail = ""
|
||||
|
||||
for i in data["attributes"]["parameters"]:
|
||||
temp = ""
|
||||
for k in data["attributes"]["parameters"][i]:
|
||||
temp += "%.2f%%" % (k * 100) + "/"
|
||||
data["attributes"]["parameters"][i] = temp[:-1]
|
||||
|
||||
for i in data["attributes"]["labels"]:
|
||||
#i = i.replace("{","{{")
|
||||
i = re.sub(r':[a-zA-Z0-9]+}', "}", i)
|
||||
#i.replace(r':[a-zA-Z0-9]+}','}')
|
||||
skill_detail += i + "\n"
|
||||
|
||||
skill_detail = skill_detail.format(**data["attributes"]["parameters"])
|
||||
|
||||
im = "【{}】\n{}\n————\n{}".format(skill_name,skill_info,skill_detail)
|
||||
|
||||
if "errcode" in data:
|
||||
im = "不存在该角色或命座数量。"
|
||||
else:
|
||||
if level == "4":
|
||||
data = data["passive1"]
|
||||
elif level == "5":
|
||||
data = data["passive2"]
|
||||
elif level == "6":
|
||||
data = data["passive3"]
|
||||
elif level == "7":
|
||||
data = data["passive4"]
|
||||
skill_name = data["name"]
|
||||
skill_info = data["info"]
|
||||
im = "【{}】\n{}".format(skill_name,skill_info)
|
||||
im = "【" + data["c{}".format(level)]['name'] + "】" + ":" + \
|
||||
"\n" + data["c{}".format(level)]['effect'].replace("*", "")
|
||||
elif mode == "talents":
|
||||
if "errcode" in data:
|
||||
im = "不存在该角色。"
|
||||
else:
|
||||
if int(level) <=6 and int(level) > 0:
|
||||
if int(level) <= 3 :
|
||||
if level == "1":
|
||||
data = data["combat1"]
|
||||
elif level == "2":
|
||||
data = data["combat2"]
|
||||
elif level == "3":
|
||||
data = data["combat3"]
|
||||
skill_name = data["name"]
|
||||
skill_info = data["info"]
|
||||
skill_detail = ""
|
||||
|
||||
for i in data["attributes"]["parameters"]:
|
||||
temp = ""
|
||||
for k in data["attributes"]["parameters"][i]:
|
||||
temp += "%.2f%%" % (k * 100) + "/"
|
||||
data["attributes"]["parameters"][i] = temp[:-1]
|
||||
|
||||
for i in data["attributes"]["labels"]:
|
||||
#i = i.replace("{","{{")
|
||||
i = re.sub(r':[a-zA-Z0-9]+}', "}", i)
|
||||
#i.replace(r':[a-zA-Z0-9]+}','}')
|
||||
skill_detail += i + "\n"
|
||||
|
||||
skill_detail = skill_detail.format(**data["attributes"]["parameters"])
|
||||
|
||||
im = "【{}】\n{}\n————\n{}".format(skill_name,skill_info,skill_detail)
|
||||
|
||||
else:
|
||||
if level == "4":
|
||||
data = data["passive1"]
|
||||
elif level == "5":
|
||||
data = data["passive2"]
|
||||
elif level == "6":
|
||||
data = data["passive3"]
|
||||
elif level == "7":
|
||||
data = data["passive4"]
|
||||
skill_name = data["name"]
|
||||
skill_info = data["info"]
|
||||
im = "【{}】\n{}".format(skill_name,skill_info)
|
||||
else:
|
||||
im = "不存在该天赋。"
|
||||
return im
|
Loading…
x
Reference in New Issue
Block a user