规范引号

This commit is contained in:
student_2333 2022-04-03 21:47:42 +08:00
parent 8fd1ad6e8f
commit cfc755dc0a
6 changed files with 1511 additions and 1507 deletions

View File

@ -12,17 +12,18 @@
<a><img src="https://s2.loli.net/2022/02/01/QlS4piWXw5rZO3D.png"></a>
</p>
## 丨我该如何安装该插件?
+ 如果你使用的是[Go-cqhttp](https://github.com/Mrs4s/go-cqhttp) & [HoshinoBot](https://github.com/Ice-Cirno/HoshinoBot)**安装方法查看[此处](https://github.com/KimigaiiWuyi/GenshinUID/wiki#%E4%B8%A8%E5%AE%89%E8%A3%85hoshinobot-)**。
+ 如果你使用的是[Go-cqhttp](https://github.com/Mrs4s/go-cqhttp) & [NoneBot2](https://github.com/nonebot/nonebot2)**安装方法查看[此处](https://github.com/KimigaiiWuyi/GenshinUID/wiki#%E4%B8%A8%E5%AE%89%E8%A3%85nonebot2)**。(**开发者正在使用**
+ 如果你使用的是[Go-cqhttp](https://github.com/Mrs4s/go-cqhttp)
& [HoshinoBot](https://github.com/Ice-Cirno/HoshinoBot)**安装方法查看[此处](https://github.com/KimigaiiWuyi/GenshinUID/wiki#%E4%B8%A8%E5%AE%89%E8%A3%85hoshinobot-)**。
+ 如果你使用的是[Go-cqhttp](https://github.com/Mrs4s/go-cqhttp)
& [NoneBot2](https://github.com/nonebot/nonebot2)**安装方法查看[此处](https://github.com/KimigaiiWuyi/GenshinUID/wiki#%E4%B8%A8%E5%AE%89%E8%A3%85nonebot2)**。(**开发者正在使用**
+ 如果你想在QQ官方的频道Bot使用此插件你需要**做好以下准备**
- 拥有QQ频道机器人的开发者账号类型私域
- 拥有已经备案好的服务器地址(视情况后期官方放开本地图片发送而定)
- **腾讯频道Bot官方的文档**,查看[此处](https://bot.q.qq.com/wiki/#)
- 安装方法:基于官方的[PythonSDK](https://github.com/tencent-connect/botpy),本插件的安装方法可自行摸索。
- 拥有QQ频道机器人的开发者账号类型私域
- 拥有已经备案好的服务器地址(视情况后期官方放开本地图片发送而定)
- **腾讯频道Bot官方的文档**,查看[此处](https://bot.q.qq.com/wiki/#)
- 安装方法:基于官方的[PythonSDK](https://github.com/tencent-connect/botpy),本插件的安装方法可自行摸索。
## 丨我该如何获取Cookies[#92](https://github.com/KimigaiiWuyi/GenshinUID/issues/92)[@RemKeeper](https://github.com/RemKeeper)
@ -73,8 +74,10 @@ if (ask == true) {
- [PaimonBot](https://github.com/XiaoMiku01/PaimonBot) - 插件原始代码来自于它
- [YuanShen_User_Info](https://github.com/Womsxd/YuanShen_User_Info) - 米游社API来自于它
- *[MiniGG](https://www.minigg.cn/)* - Wiki API来自于它
- [@MingxuanGame](https://github.com/MingxuanGame) - [Nonebot2-beta1](https://github.com/KimigaiiWuyi/GenshinUID/tree/nonebot2-beta1)分支新建与维护
- [@shirokurakana](https://github.com/shirokurakana) - [Nonebot2-beta1分支的修复与优化](https://github.com/KimigaiiWuyi/GenshinUID/pull/118)
- [@MingxuanGame](https://github.com/MingxuanGame)
- [Nonebot2-beta1](https://github.com/KimigaiiWuyi/GenshinUID/tree/nonebot2-beta1)分支新建与维护
- [@shirokurakana](https://github.com/shirokurakana)
- [Nonebot2-beta1分支的修复与优化](https://github.com/KimigaiiWuyi/GenshinUID/pull/118)
- [@AMEKENN](https://github.com/AMEKENN) - 米游社签到部分的代码指导
- [@lgc233](https://github.com/lgc2333) - 众多优秀PR贡献
- [@RemKeeper](https://github.com/RemKeeper) - 简易Cookies获取文档
@ -88,4 +91,5 @@ if (ask == true) {
+ 如果本插件对你有帮助不要忘了点个Star~
+ 本项目仅供学习使用,请勿用于商业用途
+ [爱发电](https://afdian.net/@KimigaiiWuyi)
+ [GPL-3.0 License](https://github.com/KimigaiiWuyi/GenshinUID/blob/main/LICENSE) © [@KimigaiiWuyi](https://github.com/KimigaiiWuyi)
+ [GPL-3.0 License](https://github.com/KimigaiiWuyi/GenshinUID/blob/main/LICENSE)
© [@KimigaiiWuyi](https://github.com/KimigaiiWuyi)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -7,47 +7,47 @@ from httpx import AsyncClient
from get_data import old_version_get_ds_token, random_hex
# 米游社的API列表
bbs_Cookieurl = "https://webapi.account.mihoyo.com/Api/cookie_accountinfo_by_loginticket?login_ticket={}"
bbs_Cookieurl2 = "https://api-takumi.mihoyo.com/auth/api/getMultiTokenByLoginTicket" \
"?login_ticket={}&token_types=3&uid={}"
bbs_Taskslist = "https://bbs-api.mihoyo.com/apihub/sapi/getUserMissionsState" # 获取任务列表
bbs_Signurl = "https://bbs-api.mihoyo.com/apihub/sapi/signIn?gids={}" # post
bbs_Listurl = "https://bbs-api.mihoyo.com/post/api/getForumPostList?" \
"forum_id={}&is_good=false&is_hot=false&page_size=20&sort_type=1"
bbs_Detailurl = "https://bbs-api.mihoyo.com/post/api/getPostFull?post_id={}"
bbs_Shareurl = "https://bbs-api.mihoyo.com/apihub/api/getShareConf?entity_id={}&entity_type=1"
bbs_Likeurl = "https://bbs-api.mihoyo.com/apihub/sapi/upvotePost" # post json
bbs_Cookieurl = 'https://webapi.account.mihoyo.com/Api/cookie_accountinfo_by_loginticket?login_ticket={}'
bbs_Cookieurl2 = 'https://api-takumi.mihoyo.com/auth/api/getMultiTokenByLoginTicket' \
'?login_ticket={}&token_types=3&uid={}'
bbs_Taskslist = 'https://bbs-api.mihoyo.com/apihub/sapi/getUserMissionsState' # 获取任务列表
bbs_Signurl = 'https://bbs-api.mihoyo.com/apihub/sapi/signIn?gids={}' # post
bbs_Listurl = 'https://bbs-api.mihoyo.com/post/api/getForumPostList?' \
'forum_id={}&is_good=false&is_hot=false&page_size=20&sort_type=1'
bbs_Detailurl = 'https://bbs-api.mihoyo.com/post/api/getPostFull?post_id={}'
bbs_Shareurl = 'https://bbs-api.mihoyo.com/apihub/api/getShareConf?entity_id={}&entity_type=1'
bbs_Likeurl = 'https://bbs-api.mihoyo.com/apihub/sapi/upvotePost' # post json
mihoyobbs_List = [{
"id": "1",
"forumId": "1",
"name": "崩坏3",
"url": "https://bbs.mihoyo.com/bh3/"
'id' : '1',
'forumId': '1',
'name' : '崩坏3',
'url' : 'https://bbs.mihoyo.com/bh3/'
}, {
"id": "2",
"forumId": "26",
"name": "原神",
"url": "https://bbs.mihoyo.com/ys/"
'id' : '2',
'forumId': '26',
'name' : '原神',
'url' : 'https://bbs.mihoyo.com/ys/'
}, {
"id": "3",
"forumId": "30",
"name": "崩坏2",
"url": "https://bbs.mihoyo.com/bh2/"
'id' : '3',
'forumId': '30',
'name' : '崩坏2',
'url' : 'https://bbs.mihoyo.com/bh2/'
}, {
"id": "4",
"forumId": "37",
"name": "未定事件簿",
"url": "https://bbs.mihoyo.com/wd/"
'id' : '4',
'forumId': '37',
'name' : '未定事件簿',
'url' : 'https://bbs.mihoyo.com/wd/'
}, {
"id": "5",
"forumId": "34",
"name": "大别野",
"url": "https://bbs.mihoyo.com/dby/"
'id' : '5',
'forumId': '34',
'name' : '大别野',
'url' : 'https://bbs.mihoyo.com/dby/'
}, {
"id": "6",
"forumId": "52",
"name": "崩坏:星穹铁道",
"url": "https://bbs.mihoyo.com/sr/"
'id' : '6',
'forumId': '52',
'name' : '崩坏:星穹铁道',
'url' : 'https://bbs.mihoyo.com/sr/'
}]
@ -58,26 +58,26 @@ def random_text(num: int) -> str:
class MihoyoBBSCoin:
def __init__(self, cookies):
self.headers = {
"DS": old_version_get_ds_token(True),
"cookie": cookies,
"x-rpc-client_type": "2",
"x-rpc-app_version": "2.7.0",
"x-rpc-sys_version": "6.0.1",
"x-rpc-channel": "mihoyo",
"x-rpc-device_id": random_hex(32),
"x-rpc-device_name": random_text(random.randint(1, 10)),
"x-rpc-device_model": "Mi 10",
"Referer": "https://app.mihoyo.com",
"Host": "bbs-api.mihoyo.com",
"User-Agent": "okhttp/4.8.0"
'DS' : old_version_get_ds_token(True),
'cookie' : cookies,
'x-rpc-client_type' : '2',
'x-rpc-app_version' : '2.7.0',
'x-rpc-sys_version' : '6.0.1',
'x-rpc-channel' : 'mihoyo',
'x-rpc-device_id' : random_hex(32),
'x-rpc-device_name' : random_text(random.randint(1, 10)),
'x-rpc-device_model': 'Mi 10',
'Referer' : 'https://app.mihoyo.com',
'Host' : 'bbs-api.mihoyo.com',
'User-Agent' : 'okhttp/4.8.0'
}
self.Task_do = {
"bbs_Sign": False,
"bbs_Read_posts": False,
"bbs_Read_posts_num": 3,
"bbs_Like_posts": False,
"bbs_Like_posts_num": 5,
"bbs_Share": False
'bbs_Sign' : False,
'bbs_Read_posts' : False,
'bbs_Read_posts_num': 3,
'bbs_Like_posts' : False,
'bbs_Like_posts_num': 5,
'bbs_Share' : False
}
self.mihoyobbs_List_Use = []
self.Today_getcoins = 0
@ -92,145 +92,145 @@ class MihoyoBBSCoin:
read = await self.read_posts()
like = await self.like_posts()
share = await self.share_post()
im = start + "\n" + sign + "\n" + read + "\n" + like + "\n" + share
im = start + '\n' + sign + '\n' + read + '\n' + like + '\n' + share
return im
async def load_mihoyo_bbs_list_use(self):
for i in [2, 5]:
for k in mihoyobbs_List:
if i == int(k["id"]):
if i == int(k['id']):
self.mihoyobbs_List_Use.append(k)
# 获取任务列表,用来判断做了哪些任务
async def get_tasks_list(self):
# log.info("正在获取任务列表")
# log.info('正在获取任务列表')
async with AsyncClient() as client:
req = await client.get(url=bbs_Taskslist, headers=self.headers)
data = req.json()
if "err" in data["message"] or data["retcode"] == -100:
return "你的Cookies已失效。"
# log.error("获取任务列表失败你的cookie可能已过期请重新设置cookie。")
if 'err' in data['message'] or data['retcode'] == -100:
return '你的Cookies已失效。'
# log.error('获取任务列表失败你的cookie可能已过期请重新设置cookie。')
else:
self.Today_getcoins = data["data"]["can_get_points"]
self.Today_have_getcoins = data["data"]["already_received_points"]
self.Have_coins = data["data"]["total_points"]
self.Today_getcoins = data['data']['can_get_points']
self.Today_have_getcoins = data['data']['already_received_points']
self.Have_coins = data['data']['total_points']
# 如果当日可获取米游币数量为0直接判断全部任务都完成了
if self.Today_getcoins == 0:
self.Task_do["bbs_Sign"] = True
self.Task_do["bbs_Read_posts"] = True
self.Task_do["bbs_Like_posts"] = True
self.Task_do["bbs_Share"] = True
self.Task_do['bbs_Sign'] = True
self.Task_do['bbs_Read_posts'] = True
self.Task_do['bbs_Like_posts'] = True
self.Task_do['bbs_Share'] = True
else:
# 如果第0个大于或等于62则直接判定任务没做
if data["data"]["states"][0]["mission_id"] >= 62:
# log.info(f"新的一天,今天可以获得{self.Today_getcoins}个米游币")
if data['data']['states'][0]['mission_id'] >= 62:
# log.info(f'新的一天,今天可以获得{self.Today_getcoins}个米游币')
pass
else:
# log.info(f"似乎还有任务没完成,今天还能获得{self.Today_getcoins}")
for i in data["data"]["states"]:
# log.info(f'似乎还有任务没完成,今天还能获得{self.Today_getcoins}')
for i in data['data']['states']:
# 58是讨论区签到
if i["mission_id"] == 58:
if i["is_get_award"]:
self.Task_do["bbs_Sign"] = True
if i['mission_id'] == 58:
if i['is_get_award']:
self.Task_do['bbs_Sign'] = True
# 59是看帖子
elif i["mission_id"] == 59:
if i["is_get_award"]:
self.Task_do["bbs_Read_posts"] = True
elif i['mission_id'] == 59:
if i['is_get_award']:
self.Task_do['bbs_Read_posts'] = True
else:
self.Task_do["bbs_Read_posts_num"] -= i["happened_times"]
self.Task_do['bbs_Read_posts_num'] -= i['happened_times']
# 60是给帖子点赞
elif i["mission_id"] == 60:
if i["is_get_award"]:
self.Task_do["bbs_Like_posts"] = True
elif i['mission_id'] == 60:
if i['is_get_award']:
self.Task_do['bbs_Like_posts'] = True
else:
self.Task_do["bbs_Like_posts_num"] -= i["happened_times"]
self.Task_do['bbs_Like_posts_num'] -= i['happened_times']
# 61是分享帖子
elif i["mission_id"] == 61:
if i["is_get_award"]:
self.Task_do["bbs_Share"] = True
elif i['mission_id'] == 61:
if i['is_get_award']:
self.Task_do['bbs_Share'] = True
# 分享帖子,是最后一个任务,到这里了下面都是一次性任务,直接跳出循环
break
return "开始执行~"
return '开始执行~'
# 获取要帖子列表
async def get_list(self) -> list:
temp_list = []
print("正在获取帖子列表......")
print('正在获取帖子列表......')
async with AsyncClient() as client:
req = await client.get(url=bbs_Listurl.format(self.mihoyobbs_List_Use[0]["forumId"]), headers=self.headers)
req = await client.get(url=bbs_Listurl.format(self.mihoyobbs_List_Use[0]['forumId']), headers=self.headers)
data = req.json()
for n in range(5):
temp_list.append([data["data"]["list"][n]["post"]["post_id"], data["data"]["list"][n]["post"]["subject"]])
# log.info("已获取{}个帖子".format(len(temp_list)))
temp_list.append([data['data']['list'][n]['post']['post_id'], data['data']['list'][n]['post']['subject']])
# log.info('已获取{}个帖子'.format(len(temp_list)))
return temp_list
# 进行签到操作
async def signing(self):
if self.Task_do["bbs_Sign"]:
return "讨论区任务已经完成过了~"
if self.Task_do['bbs_Sign']:
return '讨论区任务已经完成过了~'
else:
for i in self.mihoyobbs_List_Use:
async with AsyncClient() as client:
req = await client.post(url=bbs_Signurl.format(i["id"]), data={}, headers=self.headers)
req = await client.post(url=bbs_Signurl.format(i['id']), data={}, headers=self.headers)
data = req.json()
if "err" not in data["message"]:
if 'err' not in data['message']:
time.sleep(random.randint(2, 8))
else:
return "你的Cookies已失效。"
return "已完成签到任务~"
return '你的Cookies已失效。'
return '已完成签到任务~'
# 看帖子
async def read_posts(self):
if self.Task_do["bbs_Read_posts"]:
return "看帖任务已经完成过了~"
if self.Task_do['bbs_Read_posts']:
return '看帖任务已经完成过了~'
else:
num_ok = 0
for i in range(self.Task_do["bbs_Read_posts_num"]):
for i in range(self.Task_do['bbs_Read_posts_num']):
async with AsyncClient() as client:
req = await client.get(url=bbs_Detailurl.format(self.postsList[i][0]), headers=self.headers)
data = req.json()
if data["message"] == "OK":
if data['message'] == 'OK':
num_ok += 1
time.sleep(random.randint(2, 8))
return "已完成看帖任务~共计成功{}次~".format(str(num_ok))
return '已完成看帖任务~共计成功{}次~'.format(str(num_ok))
# 点赞
async def like_posts(self):
if self.Task_do["bbs_Like_posts"]:
return "点赞任务已经完成过了~"
if self.Task_do['bbs_Like_posts']:
return '点赞任务已经完成过了~'
else:
num_ok = 0
num_cancel = 0
for i in range(self.Task_do["bbs_Like_posts_num"]):
for i in range(self.Task_do['bbs_Like_posts_num']):
async with AsyncClient() as client:
req = await client.post(url=bbs_Likeurl, headers=self.headers,
json={"post_id": self.postsList[i][0], "is_cancel": False})
json={'post_id': self.postsList[i][0], 'is_cancel': False})
data = req.json()
if data["message"] == "OK":
if data['message'] == 'OK':
num_ok += 1
# 判断取消点赞是否打开
if True:
time.sleep(random.randint(2, 8))
async with AsyncClient() as client:
req = await client.post(url=bbs_Likeurl, headers=self.headers,
json={"post_id": self.postsList[i][0], "is_cancel": True})
json={'post_id': self.postsList[i][0], 'is_cancel': True})
data = req.json()
if data["message"] == "OK":
if data['message'] == 'OK':
num_cancel += 1
time.sleep(random.randint(2, 8))
return "已完成点赞任务~共计点赞{}次,取消点赞{}次~".format(str(num_ok), str(num_cancel))
return '已完成点赞任务~共计点赞{}次,取消点赞{}次~'.format(str(num_ok), str(num_cancel))
# 分享操作
async def share_post(self):
if self.Task_do["bbs_Share"]:
return "分享任务已经完成过了~"
if self.Task_do['bbs_Share']:
return '分享任务已经完成过了~'
else:
for _ in range(3):
async with AsyncClient() as client:
req = await client.get(url=bbs_Shareurl.format(self.postsList[0][0]), headers=self.headers)
data = req.json()
if data["message"] == "OK":
return "已完成分享任务~获得10米游币~"
if data['message'] == 'OK':
return '已完成分享任务~获得10米游币~'
else:
time.sleep(random.randint(2, 8))
time.sleep(random.randint(2, 8))

View File

@ -19,50 +19,50 @@ INDEX_PATH = os.path.join(FILE2_PATH, 'index')
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": "凝光",
"Noel": "诺艾尔",
"Qiqi": "七七",
"Razor": "雷泽",
"Rosaria": "罗莎莉亚",
"Sucrose": "砂糖",
"Tartaglia": "达达利亚",
"Venti": "温迪",
"Xiangling": "香菱",
"Xiao": "",
"Xingqiu": "行秋",
"Xinyan": "辛焱",
"Yanfei": "烟绯",
"Zhongli": "钟离",
"Yoimiya": "宵宫",
"Sayu": "早柚",
"Shogun": "雷电将军",
"Aloy": "埃洛伊",
"Sara": "九条裟罗",
"Kokomi": "珊瑚宫心海",
"Shenhe": "申鹤"
'Albedo' : '阿贝多',
'Ambor' : '安柏',
'Barbara' : '芭芭拉',
'Beidou' : '北斗',
'Bennett' : '班尼特',
'Chongyun' : '重云',
'Diluc' : '迪卢克',
'Diona' : '迪奥娜',
'Eula' : '优菈',
'Fischl' : '菲谢尔',
'Ganyu' : '甘雨',
'Hutao' : '胡桃',
'Jean' : '',
'Kazuha' : '枫原万叶',
'Kaeya' : '凯亚',
'Ayaka' : '神里绫华',
'Keqing' : '刻晴',
'Klee' : '可莉',
'Lisa' : '丽莎',
'Mona' : '莫娜',
'Ningguang': '凝光',
'Noel' : '诺艾尔',
'Qiqi' : '七七',
'Razor' : '雷泽',
'Rosaria' : '罗莎莉亚',
'Sucrose' : '砂糖',
'Tartaglia': '达达利亚',
'Venti' : '温迪',
'Xiangling': '香菱',
'Xiao' : '',
'Xingqiu' : '行秋',
'Xinyan' : '辛焱',
'Yanfei' : '烟绯',
'Zhongli' : '钟离',
'Yoimiya' : '宵宫',
'Sayu' : '早柚',
'Shogun' : '雷电将军',
'Aloy' : '埃洛伊',
'Sara' : '九条裟罗',
'Kokomi' : '珊瑚宫心海',
'Shenhe' : '申鹤'
}
daily_im = '''
daily_im = """
*数据刷新可能存在一定延迟请以当前游戏实际数据为准{}
==============
原粹树脂{}/{}{}
@ -72,9 +72,9 @@ daily_im = '''
参量质变仪{}
探索派遣
总数/完成/上限{}/{}/{}
{}'''
{}"""
month_im = '''
month_im = """
==============
{}
UID{}
@ -92,15 +92,15 @@ UID{}
上月获取摩拉{}
==============
原石收入组成
{}=============='''
{}=============="""
weapon_im = '''【名称】:{}
weapon_im = """【名称】:{}
类型{}
稀有度{}
介绍{}
攻击力{}{}{}'''
攻击力{}{}{}"""
char_info_im = '''{}
char_info_im = """{}
稀有度{}
武器{}
元素{}
@ -108,9 +108,9 @@ char_info_im = '''{}
生日{}
命之座{}
cv{}
介绍{}'''
介绍{}"""
artifacts_im = '''{}
artifacts_im = """{}
稀有度{}
2件套{}
4件套{}
@ -118,54 +118,54 @@ artifacts_im = '''【{}】
{}{}
{}{}
{}{}
{}{}'''
{}{}"""
food_im = '''{}
food_im = """{}
稀有度{}
食物类型{}
食物类别{}
效果{}
介绍{}
材料
{}'''
{}"""
audio_json = '''{
"357":["357_01","357_02","357_03"],
"1000000":["1000000_01","1000000_02","1000000_03","1000000_04","1000000_05","1000000_06","1000000_07"],
"1000001":["1000001_01","1000001_02","1000001_03"],
"1000002":["1000002_01","1000002_02","1000002_03"],
"1000100":["1000100_01","1000100_02","1000100_03","1000100_04","1000100_05"],
"1000101":["1000101_01","1000101_02","1000101_03","1000101_04","1000101_05","1000101_06"],
"1000200":["1000200_01","1000200_02","1000200_03"],
"1010201":["1010201_01"],
"1000300":["1000300_01","1000300_02"],
"1000400":["1000400_01","1000400_02","1000400_03"],
"1000500":["1000500_01","1000500_02","1000500_03"],
"1010000":["1010000_01","1010000_02","1010000_03","1010000_04","1010000_05"],
"1010001":["1010001_01","1010001_02"],
"1010100":["1010100_01","1010100_02","1010100_03","1010100_04","1010100_05"],
"1010200":["1010200_01","1010200_02","1010200_03","1010200_04","1010200_05"],
"1010300":["1010300_01","1010300_02","1010300_03","1010300_04","1010300_05"],
"1010301":["1010301_01","1010301_02","1010301_03","1010301_04","1010301_05"],
"1010400":["1010400_01","1010400_02","1010400_03"],
"1020000":["1020000_01"]
}'''
audio_json = """{
'357':['357_01','357_02','357_03'],
'1000000':['1000000_01','1000000_02','1000000_03','1000000_04','1000000_05','1000000_06','1000000_07'],
'1000001':['1000001_01','1000001_02','1000001_03'],
'1000002':['1000002_01','1000002_02','1000002_03'],
'1000100':['1000100_01','1000100_02','1000100_03','1000100_04','1000100_05'],
'1000101':['1000101_01','1000101_02','1000101_03','1000101_04','1000101_05','1000101_06'],
'1000200':['1000200_01','1000200_02','1000200_03'],
'1010201':['1010201_01'],
'1000300':['1000300_01','1000300_02'],
'1000400':['1000400_01','1000400_02','1000400_03'],
'1000500':['1000500_01','1000500_02','1000500_03'],
'1010000':['1010000_01','1010000_02','1010000_03','1010000_04','1010000_05'],
'1010001':['1010001_01','1010001_02'],
'1010100':['1010100_01','1010100_02','1010100_03','1010100_04','1010100_05'],
'1010200':['1010200_01','1010200_02','1010200_03','1010200_04','1010200_05'],
'1010300':['1010300_01','1010300_02','1010300_03','1010300_04','1010300_05'],
'1010301':['1010301_01','1010301_02','1010301_03','1010301_04','1010301_05'],
'1010400':['1010400_01','1010400_02','1010400_03'],
'1020000':['1020000_01']
}"""
char_adv_im = '''{}
char_adv_im = """{}
五星武器{}
四星武器{}
三星武器{}
圣遗物
{}'''
{}"""
async def weapon_adv(name):
char_adv_path = os.path.join(FILE_PATH, "Genshin All Char.xlsx")
char_adv_path = os.path.join(FILE_PATH, 'Genshin All Char.xlsx')
# char_adv_path = FILE_PATH
wb = load_workbook(char_adv_path)
ws = wb.active
weapon_name = ""
weapon_name = ''
char_list = []
for c in range(2, 5):
for r in range(2, 300):
@ -177,19 +177,19 @@ async def weapon_adv(name):
if char_list:
im = ','.join(char_list)
im = im + "可能会用到【{}".format(weapon_name)
im = im + '可能会用到【{}'.format(weapon_name)
else:
im = "没有角色能使用【{}".format(weapon_name)
im = '没有角色能使用【{}'.format(weapon_name)
return im
async def char_adv(name):
char_name = None
char_adv_path = os.path.join(FILE_PATH, "Genshin All Char.xlsx")
char_adv_path = os.path.join(FILE_PATH, 'Genshin All Char.xlsx')
# char_adv_path = FILE_PATH
wb = load_workbook(char_adv_path)
ws = wb.active
char_list = ws["A"]
char_list = ws['A']
index = None
for i in char_list:
if i.value:
@ -198,68 +198,68 @@ async def char_adv(name):
index = i.row
char_name = i.value
if index:
weapon_5star = ""
weapon_5star = ''
for i in range(index, index + 5):
if ws.cell(i, 2).value:
weapon_5star += ws.cell(i, 2).value + ">"
if weapon_5star != "":
weapon_5star += ws.cell(i, 2).value + '>'
if weapon_5star != '':
weapon_5star = weapon_5star[:-1]
else:
weapon_5star = "无推荐"
weapon_5star = '无推荐'
weapon_4star = ""
weapon_4star = ''
for i in range(index, index + 5):
if ws.cell(i, 3).value:
weapon_4star += ws.cell(i, 3).value + ">"
if weapon_4star != "":
weapon_4star += ws.cell(i, 3).value + '>'
if weapon_4star != '':
weapon_4star = weapon_4star[:-1]
else:
weapon_4star = "无推荐"
weapon_4star = '无推荐'
weapon_3star = ""
weapon_3star = ''
for i in range(index, index + 5):
if ws.cell(i, 4).value:
weapon_3star += ws.cell(i, 4).value + ">"
if weapon_3star != "":
weapon_3star += ws.cell(i, 4).value + '>'
if weapon_3star != '':
weapon_3star = weapon_3star[:-1]
else:
weapon_3star = "无推荐"
weapon_3star = '无推荐'
artifacts = ""
artifacts = ''
for i in range(index, index + 5):
if ws.cell(i, 5).value:
if ws.cell(i, 6).value:
artifacts += ws.cell(i, 5).value + "*2" + ws.cell(i, 6).value + "*2" + "\n"
artifacts += ws.cell(i, 5).value + '*2' + ws.cell(i, 6).value + '*2' + '\n'
else:
artifacts += ws.cell(i, 5).value + "*4" + "\n"
artifacts += ws.cell(i, 5).value + '*4' + '\n'
if artifacts != "":
if artifacts != '':
artifacts = artifacts[:-1]
else:
artifacts = "无推荐"
artifacts = '无推荐'
im = char_adv_im.format(char_name, weapon_5star, weapon_4star, weapon_3star, artifacts)
return im
async def deal_ck(mes, qid):
if "stoken" in mes:
login_ticket = re.search(r"login_ticket=([0-9a-zA-Z]+)", mes).group(0).split('=')[1]
uid = await select_db(qid, "uid")
# mys_id = re.search(r"login_uid=([0-9]+)", mes).group(0).split('=')[1]
if 'stoken' in mes:
login_ticket = re.search(r'login_ticket=([0-9a-zA-Z]+)', mes).group(0).split('=')[1]
uid = await select_db(qid, 'uid')
# mys_id = re.search(r'login_uid=([0-9]+)', mes).group(0).split('=')[1]
ck = await owner_cookies(uid[0])
mys_id = re.search(r"account_id=(\d*)", ck).group(0).split('=')[1]
mys_id = re.search(r'account_id=(\d*)', ck).group(0).split('=')[1]
raw_data = await get_stoken_by_login_ticket(login_ticket, mys_id)
stoken = raw_data["data"]["list"][0]["token"]
s_cookies = "stuid={};stoken={}".format(mys_id, stoken)
stoken = raw_data['data']['list'][0]['token']
s_cookies = 'stuid={};stoken={}'.format(mys_id, stoken)
await stoken_db(s_cookies, uid[0])
return "添加Stoken成功"
return '添加Stoken成功'
else:
aid = re.search(r"account_id=(\d*)", mes)
aid = re.search(r'account_id=(\d*)', mes)
mysid_data = aid.group(0).split('=')
mysid = mysid_data[1]
cookie = ';'.join(filter(lambda x: x.split('=')[0] in [
"cookie_token", "account_id"], [i.strip() for i in mes.split(';')]))
'cookie_token', 'account_id'], [i.strip() for i in mes.split(';')]))
mys_data = await get_mihoyo_bbs_info(mysid, cookie)
for i in mys_data['data']['list']:
if i['game_id'] != 2:
@ -270,7 +270,7 @@ async def deal_ck(mes, qid):
c = conn.cursor()
try:
c.execute("DELETE from CookiesCache where uid=? or mysid = ?", (uid, mysid))
c.execute('DELETE from CookiesCache where uid=? or mysid = ?', (uid, mysid))
except:
pass
@ -296,8 +296,8 @@ async def award(uid):
group_str = ''
for i in data['data']['month_data']['group_by']:
group_str = group_str + \
i['action'] + "" + str(i['num']) + \
"" + str(i['percent']) + "%" + '\n'
i['action'] + '' + str(i['num']) + \
'' + str(i['percent']) + '%' + '\n'
im = month_im.format(nickname, uid, day_stone, day_mora, lastday_stone, lastday_mora,
month_stone, month_mora, lastmonth_stone, lastmonth_mora, group_str)
@ -322,73 +322,73 @@ async def audio_wiki(name, message):
if _audioid in tmp_json:
tmp_json[_audioid].remove(audioid1)
if name == "列表":
imgmes = 'base64://' + b64encode(open(os.path.join(INDEX_PATH, "语音.png"), "rb").read()).decode()
if name == '列表':
imgmes = 'base64://' + b64encode(open(os.path.join(INDEX_PATH, '语音.png'), 'rb').read()).decode()
return imgmes
elif name == "":
return "请输入角色名。"
elif name == '':
return '请输入角色名。'
else:
audioid = re.findall(r"[0-9]+", message)[0]
audioid = re.findall(r'[0-9]+', message)[0]
try:
audio = await get(audioid)
except:
return "语音获取失败"
return '语音获取失败'
if audio:
audios = 'base64://' + b64encode(audio.getvalue()).decode()
return audios
else:
return "没有找到语音请检查语音ID与角色名是否正确如无误则可能未收录该语音"
return '没有找到语音请检查语音ID与角色名是否正确如无误则可能未收录该语音'
async def artifacts_wiki(name):
data = await get_misc_info("artifacts", name)
if "errcode" in data:
im = "该圣遗物不存在。"
data = await get_misc_info('artifacts', name)
if 'errcode' in data:
im = '该圣遗物不存在。'
else:
star = ""
for i in data["rarity"]:
star = star + i + "星、"
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"])
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 get_misc_info("foods", name)
if "errcode" in data:
im = "该食物不存在。"
data = await get_misc_info('foods', name)
if 'errcode' in data:
im = '该食物不存在。'
else:
ingredients = ""
ingredients = ''
food_temp = {}
for i in data["ingredients"]:
if i["name"] not in food_temp:
food_temp[i["name"]] = i["count"]
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"]
food_temp[i['name']] = food_temp[i['name']] + i['count']
for i in food_temp:
ingredients += i + ":" + str(food_temp[i]) + "\n"
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)
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 get_misc_info("enemies", name)
if "errcode" in raw_data:
im = "该原魔不存在。"
raw_data = await get_misc_info('enemies', name)
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)
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
@ -404,43 +404,43 @@ async def sign(uid):
sign_info['total_sign_day']) - 1]['name']
getnum = sign_list['data']['awards'][int(
sign_info['total_sign_day']) - 1]['cnt']
get_im = f"本次签到获得{getitem}x{getnum}"
if status == "OK" and sign_info['is_sign'] == True:
mes_im = "签到成功"
get_im = f'本次签到获得{getitem}x{getnum}'
if status == 'OK' and sign_info['is_sign'] == True:
mes_im = '签到成功'
else:
mes_im = status
sign_missed = sign_info['sign_cnt_missed']
im = mes_im + "!" + "\n" + get_im + "\n" + f"本月漏签次数:{sign_missed}"
im = mes_im + '!' + '\n' + get_im + '\n' + f'本月漏签次数:{sign_missed}'
except:
im = "签到失败请检查Cookies是否失效。"
im = '签到失败请检查Cookies是否失效。'
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)
return '%02d:%02d:%02d' % (h, m, s)
temp_list = []
conn = sqlite3.connect('ID_DATA.db')
c = conn.cursor()
c_data = None
if mode == "push":
if mode == 'push':
cursor = c.execute(
"SELECT * FROM NewCookiesTable WHERE StatusA != ?", ("off",))
'SELECT * FROM NewCookiesTable WHERE StatusA != ?', ('off',))
c_data = cursor.fetchall()
elif mode == "ask":
elif mode == 'ask':
c_data = ([uid, 0, 0, 0, 0, 0, 0],)
for row in c_data:
raw_data = await get_daily_data(str(row[0]))
if raw_data["retcode"] != 0:
if raw_data['retcode'] != 0:
temp_list.append(
{"qid": row[2], "gid": row[3], "message": "你的推送状态有误可能是uid绑定错误或没有在米游社打开“实时便筏”功能。"})
{'qid': row[2], 'gid': row[3], 'message': '你的推送状态有误可能是uid绑定错误或没有在米游社打开“实时便筏”功能。'})
else:
dailydata = raw_data["data"]
dailydata = raw_data['data']
current_resin = dailydata['current_resin']
current_expedition_num = dailydata['current_expedition_num']
@ -455,32 +455,32 @@ async def daily(mode="push", uid=None):
avatar_name: str = avatar
if expedition['status'] == 'Finished':
expedition_info.append(f"{avatar_name} 探索完成")
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}")
f'{avatar_name} 剩余时间{remained_timed}')
if dailydata['transformer']['recovery_time']['reached']:
transformer_status = "可用"
transformer_status = '可用'
else:
transformer_time = dailydata['transformer']['recovery_time']
transformer_status = "还剩{}{}小时{}分钟可用".format(transformer_time['Day'], transformer_time['Hour'],
transformer_status = '还剩{}{}小时{}分钟可用'.format(transformer_time['Day'], transformer_time['Hour'],
transformer_time['Minute'])
# 推送条件检查,在指令查询时 row[6] 为 0 ,而自动推送时 row[6] 为 140这样保证用指令查询时必回复
# 说实话我仔细看了一会才理解…
if current_resin >= row[6] or dailydata["max_home_coin"] - dailydata["current_home_coin"] <= 100:
if current_resin >= row[6] or dailydata['max_home_coin'] - dailydata['current_home_coin'] <= 100:
tip = ''
tips = []
if current_resin >= row[6] != 0:
tips.append("你的树脂快满了!")
if dailydata["max_home_coin"] - dailydata["current_home_coin"] <= 100:
tips.append("你的洞天宝钱快满了!")
tips.append('你的树脂快满了!')
if dailydata['max_home_coin'] - dailydata['current_home_coin'] <= 100:
tips.append('你的洞天宝钱快满了!')
if finished_expedition_num == current_expedition_num:
tips.append("你的所有探索派遣完成了!") # emmmm
tips.append('你的所有探索派遣完成了!') # emmmm
if tips:
tips.insert(0, '\n==============')
tip = '\n'.join(tips)
@ -505,13 +505,13 @@ async def daily(mode="push", uid=None):
dailydata['remain_resin_discount_num']
home_coin = f'{dailydata["current_home_coin"]}/{dailydata["max_home_coin"]}'
if dailydata["current_home_coin"] < dailydata["max_home_coin"]:
coin_rec_time = seconds2hours(int(dailydata["home_coin_recovery_time"]))
coin_add_speed = math.ceil((dailydata["max_home_coin"] - dailydata["current_home_coin"]) / (
int(dailydata["home_coin_recovery_time"]) / 60 / 60))
if dailydata['current_home_coin'] < dailydata['max_home_coin']:
coin_rec_time = seconds2hours(int(dailydata['home_coin_recovery_time']))
coin_add_speed = math.ceil((dailydata['max_home_coin'] - dailydata['current_home_coin']) / (
int(dailydata['home_coin_recovery_time']) / 60 / 60))
home_coin += f'{coin_rec_time}{coin_add_speed}/h'
expedition_data = "\n".join(expedition_info)
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, home_coin, transformer_status,
@ -519,12 +519,12 @@ async def daily(mode="push", uid=None):
max_expedition_num, expedition_data)
temp_list.append(
{"qid": row[2], "gid": row[3], "message": send_mes})
{'qid': row[2], 'gid': row[3], 'message': send_mes})
return temp_list
async def mihoyo_coin(qid, s_cookies=None):
uid = await select_db(qid, mode="uid")
uid = await select_db(qid, mode='uid')
uid = uid[0]
if s_cookies is None:
s_cookies = await get_stoken(uid)
@ -533,12 +533,12 @@ async def mihoyo_coin(qid, s_cookies=None):
get_coin = coin.MihoyoBBSCoin(s_cookies)
im = await get_coin.task_run()
else:
im = "你还没有绑定Stoken~"
im = '你还没有绑定Stoken~'
return im
async def get_event_pic():
img_path = os.path.join(FILE2_PATH, "event.jpg")
img_path = os.path.join(FILE2_PATH, 'event.jpg')
while True:
if os.path.exists(img_path):
f = open(img_path, 'rb')
@ -553,68 +553,68 @@ async def get_event_pic():
async def weapon_wiki(name, level=None):
data = await get_weapon_info(name)
if "errcode" in data:
im = "武器不存在。"
if 'errcode' in data:
im = '武器不存在。'
elif level:
data2 = await get_weapon_info(name, level)
if data["substat"] != "":
sp = data["substat"] + "" + '%.1f%%' % (data2["specialized"] * 100) \
if data["substat"] != "元素精通" else data["substat"] + "" + str(math.floor(data2["specialized"]))
if data['substat'] != '':
sp = data['substat'] + '' + '%.1f%%' % (data2['specialized'] * 100) \
if data['substat'] != '元素精通' else data['substat'] + '' + str(math.floor(data2['specialized']))
else:
sp = ""
im = (data["name"] + "\n等级:" + str(data2["level"]) + "(突破" + str(data2["ascension"]) + "" +
"\n攻击力:" + str(round(data2["attack"])) + "\n" + sp)
sp = ''
im = (data['name'] + '\n等级:' + str(data2['level']) + '(突破' + str(data2['ascension']) + '' +
'\n攻击力:' + str(round(data2['attack'])) + '\n' + sp)
else:
name = data['name']
_type = data['weapontype']
star = data['rarity'] + ""
star = data['rarity'] + ''
info = data['description']
atk = str(data['baseatk'])
sub_name = data['substat']
if data['subvalue'] != "":
if data['subvalue'] != '':
sub_val = (data['subvalue'] +
'%') if sub_name != '元素精通' else data['subvalue']
sub = "\n" + "" + sub_name + "" + sub_val
sub = '\n' + '' + sub_name + '' + sub_val
else:
sub = ""
sub = ''
if data['effectname'] != "":
if data['effectname'] != '':
raw_effect = data['effect']
rw_ef = []
for i in range(len(data['r1'])):
now = ''
for j in range(1, 6):
now = now + data['r{}'.format(j)][i] + "/"
now = now + data['r{}'.format(j)][i] + '/'
now = now[:-1]
rw_ef.append(now)
raw_effect = raw_effect.format(*rw_ef)
effect = "\n" + "" + data['effectname'] + "" + "" + raw_effect
effect = '\n' + '' + data['effectname'] + '' + '' + raw_effect
else:
effect = ""
effect = ''
im = weapon_im.format(name, _type, star, info, atk,
sub, effect)
return im
async def char_wiki(name, mode="char", level=None):
async def char_wiki(name, mode='char', level=None):
im = ''
data = await get_char_info(name, mode, level if mode == "char" else None)
if mode == "char":
data = await get_char_info(name, mode, level if mode == 'char' else None)
if mode == 'char':
if isinstance(data, list):
im = ','.join(data)
elif "errcode" in data:
im = "不存在该角色或类型。"
elif 'errcode' in data:
im = '不存在该角色或类型。'
elif level:
data2 = await get_char_info(name, mode)
sp = data2["substat"] + "" + '%.1f%%' % (data["specialized"] * 100) if data2["substat"] != "元素精通" else \
data2["substat"] + "" + str(math.floor(data["specialized"]))
im = (data2["name"] + "\n等级:" + str(data["level"]) + "\n血量:" + str(math.floor(data["hp"])) +
"\n攻击力:" + str(math.floor(data["attack"])) + "\n防御力:" + str(math.floor(data["defense"])) +
"\n" + sp)
sp = data2['substat'] + '' + '%.1f%%' % (data['specialized'] * 100) if data2['substat'] != '元素精通' else \
data2['substat'] + '' + str(math.floor(data['specialized']))
im = (data2['name'] + '\n等级:' + str(data['level']) + '\n血量:' + str(math.floor(data['hp'])) +
'\n攻击力:' + str(math.floor(data['attack'])) + '\n防御力:' + str(math.floor(data['defense'])) +
'\n' + sp)
else:
name = data['title'] + '' + data['name']
star = data['rarity']
_type = data["weapontype"]
_type = data['weapontype']
element = data['element']
up_val = data['substat']
bdday = data['birthday']
@ -623,142 +623,142 @@ async def char_wiki(name, mode="char", level=None):
info = data['description']
im = char_info_im.format(
name, star, _type, element, up_val, bdday, polar, cv, info)
elif mode == "costs":
elif mode == 'costs':
if isinstance(data[1], list):
im = ','.join(data[1])
elif "errcode" in data[1]:
im = "不存在该角色或类型。"
elif 'errcode' in data[1]:
im = '不存在该角色或类型。'
else:
im = "【天赋材料(一份)】\n{}\n【突破材料】\n{}"
im1 = ""
im2 = ""
im = '【天赋材料(一份)】\n{}\n【突破材料】\n{}'
im1 = ''
im2 = ''
talent_temp = {}
talent_cost = data[1]
for i in talent_cost.values():
for j in i:
if j["name"] not in talent_temp:
talent_temp[j["name"]] = j["count"]
if j['name'] not in talent_temp:
talent_temp[j['name']] = j['count']
else:
talent_temp[j["name"]] = talent_temp[j["name"]] + j["count"]
talent_temp[j['name']] = talent_temp[j['name']] + j['count']
for k in talent_temp:
im1 = im1 + k + ":" + str(talent_temp[k]) + "\n"
im1 = im1 + k + ':' + str(talent_temp[k]) + '\n'
temp = {}
cost = data[0]
for i in range(1, 7):
for j in cost["ascend{}".format(i)]:
if j["name"] not in temp:
temp[j["name"]] = j["count"]
for j in cost['ascend{}'.format(i)]:
if j['name'] not in temp:
temp[j['name']] = j['count']
else:
temp[j["name"]] = temp[j["name"]] + j["count"]
temp[j['name']] = temp[j['name']] + j['count']
for k in temp:
im2 = im2 + k + ":" + str(temp[k]) + "\n"
im2 = im2 + k + ':' + str(temp[k]) + '\n'
im = im.format(im1, im2)
elif mode == "constellations":
if "errcode" in data:
im = "不存在该角色或命座数量。"
elif mode == 'constellations':
if 'errcode' in data:
im = '不存在该角色或命座数量。'
else:
im = "" + data["c{}".format(level)]['name'] + "" + "" + \
"\n" + data["c{}".format(level)]['effect'].replace("*", "")
elif mode == "talents":
if "errcode" in data:
im = "不存在该角色。"
im = '' + data['c{}'.format(level)]['name'] + '' + '' + \
'\n' + data['c{}'.format(level)]['effect'].replace('*', '')
elif mode == 'talents':
if 'errcode' in data:
im = '不存在该角色。'
else:
if 7 >= 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 = ""
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]:
for i in data['attributes']['parameters']:
temp = ''
for k in data['attributes']['parameters'][i]:
if str(k).count('.') == 1:
temp += "%.2f%%" % (k * 100) + "/"
temp += '%.2f%%' % (k * 100) + '/'
else:
temp = k
break
data["attributes"]["parameters"][i] = temp[:-1]
data['attributes']['parameters'][i] = temp[:-1]
for i in data["attributes"]["labels"]:
#i = i.replace("{","{{")
i = re.sub(r':[a-zA-Z0-9]+}', "}", i)
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 += i + '\n'
skill_detail = skill_detail.format(**data["attributes"]["parameters"])
skill_detail = skill_detail.format(**data['attributes']['parameters'])
"""
mes_list = []
parameters = []
add_switch = True
for i in data["attributes"]["parameters"]:
for index, j in enumerate(data["attributes"]["parameters"][i]):
for i in data['attributes']['parameters']:
for index, j in enumerate(data['attributes']['parameters'][i]):
if add_switch:
parameters.append({})
if str(j).count('.') == 1 and j <= 20:
parameters[index].update({i: "%.2f%%" % (j * 100)})
parameters[index].update({i: '%.2f%%' % (j * 100)})
elif str(j).count('.') == 1:
parameters[index].update({i: "%.2f" % (j * 100)})
parameters[index].update({i: '%.2f' % (j * 100)})
else:
parameters[index].update({i: j})
add_switch = False
for k in data["attributes"]["labels"]:
k = re.sub(r':[a-zA-Z0-9]+}', "}", k)
skill_detail += k + "\n"
for k in data['attributes']['labels']:
k = re.sub(r':[a-zA-Z0-9]+}', '}', k)
skill_detail += k + '\n'
skill_detail = skill_detail[:-1]
for i in range(1, 10):
if i % 2 != 0:
skill_info = skill_info.replace("**", "", 1)
skill_info = skill_info.replace('**', '', 1)
else:
skill_info = skill_info.replace("**", "", 1)
skill_info = skill_info.replace('**', '', 1)
mes_list.append({
"type": "node",
"data": {
"name": "小仙",
"uin": "3399214199",
"content": "" + skill_name + "" + "\n" + skill_info
'type': 'node',
'data': {
'name' : '小仙',
'uin' : '3399214199',
'content': '' + skill_name + '' + '\n' + skill_info
}
})
for index, i in enumerate(parameters):
mes = skill_detail.format(**i)
node_data = {
"type": "node",
"data": {
"name": "小仙",
"uin": "3399214199",
"content": "lv." + str(index + 1) + "\n" + mes
'type': 'node',
'data': {
'name' : '小仙',
'uin' : '3399214199',
'content': 'lv.' + str(index + 1) + '\n' + mes
}
}
mes_list.append(node_data)
im = mes_list
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)
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 = "不存在该天赋。"
im = '不存在该天赋。'
return im