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