mirror of
https://github.com/KimigaiiWuyi/GenshinUID.git
synced 2025-06-03 05:59:51 +08:00
Merge pull request #18 from lgc2333/main
优化札记格式 优化实时便笺格式 添加实时便笺显示数据 修复百科无法使用的bug
This commit is contained in:
commit
b7e7a4e5e9
168
__init__.py
168
__init__.py
@ -21,18 +21,64 @@ FILE_PATH = os.path.dirname(__file__)
|
|||||||
FILE2_PATH = os.path.join(FILE_PATH,'mys')
|
FILE2_PATH = os.path.join(FILE_PATH,'mys')
|
||||||
Texture_PATH = os.path.join(FILE2_PATH,'texture2d')
|
Texture_PATH = os.path.join(FILE2_PATH,'texture2d')
|
||||||
|
|
||||||
|
avatar_json = {
|
||||||
|
"Albedo": "阿贝多",
|
||||||
|
"Ambor": "安柏",
|
||||||
|
"Barbara": "芭芭拉",
|
||||||
|
"Beidou": "北斗",
|
||||||
|
"Bennett": "班尼特",
|
||||||
|
"Chongyun": "重云",
|
||||||
|
"Diluc": "迪卢克",
|
||||||
|
"Diona": "迪奥娜",
|
||||||
|
"Eula": "优菈",
|
||||||
|
"Fischl": "菲谢尔",
|
||||||
|
"Ganyu": "甘雨",
|
||||||
|
"Hutao": "胡桃",
|
||||||
|
"Jean": "琴",
|
||||||
|
"Kazuha": "枫原万叶",
|
||||||
|
"Kaeya": "凯亚",
|
||||||
|
"Ayaka": "神里绫华",
|
||||||
|
"Keqing": "刻晴",
|
||||||
|
"Klee": "可莉",
|
||||||
|
"Lisa": "丽莎",
|
||||||
|
"Mona": "莫娜",
|
||||||
|
"Ningguang": "凝光",
|
||||||
|
"Noelle": "诺艾尔",
|
||||||
|
"Qiqi": "七七",
|
||||||
|
"Razor": "雷泽",
|
||||||
|
"Rosaria": "罗莎莉亚",
|
||||||
|
"Sucrose": "砂糖",
|
||||||
|
"Tartaglia": "达达利亚",
|
||||||
|
"Venti": "温迪",
|
||||||
|
"Xiangling": "香菱",
|
||||||
|
"Xiao": "魈",
|
||||||
|
"Xingqiu": "行秋",
|
||||||
|
"Xinyan": "辛焱",
|
||||||
|
"Yanfei": "烟绯",
|
||||||
|
"Zhongli": "钟离",
|
||||||
|
"Yoimiya": "宵宫",
|
||||||
|
"Sayu": "早柚",
|
||||||
|
"Shogun": "雷电将军",
|
||||||
|
"Aloy": "埃洛伊",
|
||||||
|
"Sara": "九条裟罗",
|
||||||
|
"Kokomi": "珊瑚宫心海"
|
||||||
|
}
|
||||||
|
|
||||||
daily_im = '''
|
daily_im = '''
|
||||||
|
*数据刷新可能存在一定延迟,请以当前游戏实际数据为准{}
|
||||||
==============
|
==============
|
||||||
(还剩{}补充满)
|
原粹树脂:{}/{}{}
|
||||||
==============
|
每日委托:{}/{} 奖励{}领取
|
||||||
原粹树脂:{}/160
|
周本减半:{}/{}
|
||||||
每日委托:{}/4
|
探索派遣:
|
||||||
探索派遣:{}/{}
|
总数/完成/上限:{}/{}/{}
|
||||||
========
|
|
||||||
{}'''
|
{}'''
|
||||||
|
|
||||||
month_im = '''
|
month_im = '''
|
||||||
==============
|
==============
|
||||||
|
{}
|
||||||
|
UID:{}
|
||||||
|
==============
|
||||||
本日获取原石:{}
|
本日获取原石:{}
|
||||||
本日获取摩拉:{}
|
本日获取摩拉:{}
|
||||||
==============
|
==============
|
||||||
@ -45,8 +91,8 @@ month_im = '''
|
|||||||
上月获取原石:{}
|
上月获取原石:{}
|
||||||
上月获取摩拉:{}
|
上月获取摩拉:{}
|
||||||
==============
|
==============
|
||||||
{}========
|
原石收入组成:
|
||||||
'''
|
{}=============='''
|
||||||
|
|
||||||
weapon_im = '''
|
weapon_im = '''
|
||||||
名称:{}
|
名称:{}
|
||||||
@ -55,8 +101,7 @@ weapon_im = '''
|
|||||||
介绍:{}
|
介绍:{}
|
||||||
攻击力:{}
|
攻击力:{}
|
||||||
{}:{}
|
{}:{}
|
||||||
{}
|
{}'''
|
||||||
'''
|
|
||||||
|
|
||||||
char_info_im ='''
|
char_info_im ='''
|
||||||
{}
|
{}
|
||||||
@ -67,8 +112,7 @@ char_info_im ='''
|
|||||||
生日:{}
|
生日:{}
|
||||||
命之座:{}
|
命之座:{}
|
||||||
cv:{}
|
cv:{}
|
||||||
介绍:{}
|
介绍:{}'''
|
||||||
'''
|
|
||||||
|
|
||||||
@sv.on_prefix('武器')
|
@sv.on_prefix('武器')
|
||||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||||
@ -242,12 +286,12 @@ async def _(bot:HoshinoBot, ev: CQEvent):
|
|||||||
lastmonth_mora = data['data']['month_data']['last_mora']
|
lastmonth_mora = data['data']['month_data']['last_mora']
|
||||||
group_str = ''
|
group_str = ''
|
||||||
for i in data['data']['month_data']['group_by']:
|
for i in data['data']['month_data']['group_by']:
|
||||||
group_str = group_str + i['action'] + ":" + str(i['num']) + "| " + "百分比:" + str(i['percent']) + "%" + '\n'
|
group_str = group_str + i['action'] + ":" + str(i['num']) + "(" + str(i['percent']) + "%)" + '\n'
|
||||||
|
|
||||||
im = month_im.format(day_stone,day_mora,lastday_stone,lastday_mora,month_stone,month_mora,lastmonth_stone,lastmonth_mora,group_str)
|
im = month_im.format(nickname,uid,day_stone,day_mora,lastday_stone,lastday_mora,month_stone,month_mora,lastmonth_stone,lastmonth_mora,group_str)
|
||||||
await bot.send(ev,im,at_sender=True)
|
await bot.send(ev,im,at_sender=True)
|
||||||
except:
|
except:
|
||||||
pass
|
await bot.send(ev,'未找到绑定信息',at_sender=True)
|
||||||
|
|
||||||
#群聊内 签到 功能
|
#群聊内 签到 功能
|
||||||
@sv.on_fullmatch('签到')
|
@sv.on_fullmatch('签到')
|
||||||
@ -259,7 +303,7 @@ 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:
|
except:
|
||||||
pass
|
await bot.send(ev,'未找到绑定信息',at_sender=True)
|
||||||
|
|
||||||
#群聊内 数据库v2 迁移至 数据库v3 的命令,一般只需要更新时执行一次
|
#群聊内 数据库v2 迁移至 数据库v3 的命令,一般只需要更新时执行一次
|
||||||
@sv.on_fullmatch('优化Cookies')
|
@sv.on_fullmatch('优化Cookies')
|
||||||
@ -469,51 +513,77 @@ async def sign(uid):
|
|||||||
return im
|
return im
|
||||||
|
|
||||||
#统计状态函数
|
#统计状态函数
|
||||||
async def daily(mode = "push",uid = None):
|
async def daily(mode="push", uid=None):
|
||||||
|
def seconds2hours(seconds: int) -> str:
|
||||||
|
m, s = divmod(int(seconds), 60)
|
||||||
|
h, m = divmod(m, 60)
|
||||||
|
return "%02d:%02d:%02d" % (h, m, s)
|
||||||
|
|
||||||
temp_list = []
|
temp_list = []
|
||||||
conn = sqlite3.connect('ID_DATA.db')
|
conn = sqlite3.connect('ID_DATA.db')
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
if mode == "push":
|
if mode == "push":
|
||||||
cursor = c.execute("SELECT * FROM NewCookiesTable WHERE StatusA != ?",("off",))
|
cursor = c.execute(
|
||||||
|
"SELECT * FROM NewCookiesTable WHERE StatusA != ?", ("off",))
|
||||||
c_data = cursor.fetchall()
|
c_data = cursor.fetchall()
|
||||||
elif mode == "ask":
|
elif mode == "ask":
|
||||||
c_data = ([uid,0,0,0,0,0,0],)
|
c_data = ([uid, 0, 0, 0, 0, 0, 0],)
|
||||||
|
|
||||||
for row in c_data:
|
for row in c_data:
|
||||||
raw_data = await GetDaily(str(row[0]))
|
raw_data = await GetDaily(str(row[0]))
|
||||||
dailydata = raw_data["data"]
|
dailydata = raw_data["data"]
|
||||||
|
current_resin = dailydata['current_resin']
|
||||||
|
|
||||||
resin_num = dailydata["current_resin"]
|
if current_resin >= row[6]:
|
||||||
task_num = dailydata["finished_task_num"]
|
tip = ''
|
||||||
travel_num = dailydata["current_expedition_num"]
|
|
||||||
max_travel_num = dailydata["max_expedition_num"]
|
|
||||||
travel_data = dailydata["expeditions"]
|
|
||||||
|
|
||||||
if resin_num >= row[6] :
|
|
||||||
|
|
||||||
re_time = dailydata["resin_recovery_time"]
|
|
||||||
m, s = divmod(int(re_time), 60)
|
|
||||||
h, m = divmod(m, 60)
|
|
||||||
time = "%02d小时%02d分钟%02d秒" % (h, m, s)
|
|
||||||
|
|
||||||
travel_str = ''
|
|
||||||
|
|
||||||
for i in travel_data:
|
|
||||||
name = i["avatar_side_icon"].split('/')[-1].split('.')[0].split('_')[-1]
|
|
||||||
statu = i['status']
|
|
||||||
if statu == "Finished":
|
|
||||||
travel_str = travel_str + f"{name} : 完成\n"
|
|
||||||
else:
|
|
||||||
remain_time = i['remained_time']
|
|
||||||
m1, s1 = divmod(int(remain_time), 60)
|
|
||||||
h1, m1 = divmod(m1, 60)
|
|
||||||
remain_time_str = "还剩%02d小时%02d分钟%02d秒" % (h1, m1, s1)
|
|
||||||
travel_str = travel_str + f"{name} : {remain_time_str}\n"
|
|
||||||
send_mes = daily_im.format(time,resin_num,task_num,travel_num,max_travel_num,travel_str)
|
|
||||||
if row[1] != 0:
|
if row[1] != 0:
|
||||||
send_mes = "你的树脂快满了!" + send_mes
|
tip = "\n==============\n你的树脂快满了!"
|
||||||
temp_list.append({"qid":row[2],"gid":row[3],"message":send_mes})
|
|
||||||
return temp_list
|
max_resin = dailydata['max_resin']
|
||||||
|
rec_time = ''
|
||||||
|
# print(dailydata)
|
||||||
|
if current_resin < 160:
|
||||||
|
resin_recovery_time = seconds2hours(
|
||||||
|
dailydata['resin_recovery_time'])
|
||||||
|
next_resin_rec_time = seconds2hours(
|
||||||
|
8 * 60 - ((dailydata['max_resin'] - dailydata['current_resin']) * 8 * 60 - int(dailydata['resin_recovery_time'])))
|
||||||
|
rec_time = f' ({next_resin_rec_time}/{resin_recovery_time})'
|
||||||
|
|
||||||
|
finished_task_num = dailydata['finished_task_num']
|
||||||
|
total_task_num = dailydata['total_task_num']
|
||||||
|
is_extra_got = '已' if dailydata['is_extra_task_reward_received'] else '未'
|
||||||
|
|
||||||
|
resin_discount_num_limit = dailydata['resin_discount_num_limit']
|
||||||
|
used_resin_discount_num = resin_discount_num_limit - \
|
||||||
|
dailydata['remain_resin_discount_num']
|
||||||
|
|
||||||
|
current_expedition_num = dailydata['current_expedition_num']
|
||||||
|
max_expedition_num = dailydata['max_expedition_num']
|
||||||
|
finished_expedition_num = 0
|
||||||
|
expedition_info: list[str] = []
|
||||||
|
for expedition in dailydata['expeditions']:
|
||||||
|
avatar: str = expedition['avatar_side_icon'][89:-4]
|
||||||
|
try:
|
||||||
|
avatar_name: str = avatar_json[avatar]
|
||||||
|
except KeyError:
|
||||||
|
avatar_name: str = avatar
|
||||||
|
|
||||||
|
if expedition['status'] == 'Finished':
|
||||||
|
expedition_info.append(f"{avatar_name} 探索完成")
|
||||||
|
finished_expedition_num += 1
|
||||||
|
else:
|
||||||
|
remained_timed: str = seconds2hours(
|
||||||
|
expedition['remained_time'])
|
||||||
|
expedition_info.append(
|
||||||
|
f"{avatar_name} 剩余时间{remained_timed}")
|
||||||
|
expedition_data = "\n".join(expedition_info)
|
||||||
|
|
||||||
|
send_mes = daily_im.format(tip, current_resin, max_resin, rec_time, finished_task_num, total_task_num, is_extra_got, used_resin_discount_num,
|
||||||
|
resin_discount_num_limit, current_expedition_num, finished_expedition_num, max_expedition_num, expedition_data)
|
||||||
|
|
||||||
|
temp_list.append(
|
||||||
|
{"qid": row[2], "gid": row[3], "message": send_mes})
|
||||||
|
return temp_list
|
||||||
|
|
||||||
async def weapon_wiki(name):
|
async def weapon_wiki(name):
|
||||||
data = await GetWeaponInfo(name)
|
data = await GetWeaponInfo(name)
|
||||||
|
4
getDB.py
4
getDB.py
@ -494,7 +494,7 @@ async def GetMysInfo(mysid,cookies = None):
|
|||||||
return im
|
return im
|
||||||
|
|
||||||
async def GetWeaponInfo(name):
|
async def GetWeaponInfo(name):
|
||||||
with open(os.path.join(INDEX_PATH,'weapons.json'), 'r') as f:
|
with open(os.path.join(INDEX_PATH,'weapons.json'), 'r', encoding='utf-8') as f:
|
||||||
weapon_index = json.loads(f.read())
|
weapon_index = json.loads(f.read())
|
||||||
weapon_data = weapon_index['names']
|
weapon_data = weapon_index['names']
|
||||||
|
|
||||||
@ -515,7 +515,7 @@ async def GetWeaponInfo(name):
|
|||||||
async def GetCharInfo(name,mode = 0):
|
async def GetCharInfo(name,mode = 0):
|
||||||
str = ""
|
str = ""
|
||||||
|
|
||||||
with open(os.path.join(INDEX_PATH,'characters.json'), 'r') as f:
|
with open(os.path.join(INDEX_PATH,'characters.json'), 'r', encoding='utf-8') as f:
|
||||||
char_index = json.loads(f.read())
|
char_index = json.loads(f.read())
|
||||||
char_data = char_index['names']
|
char_data = char_index['names']
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user