新增:校验全部Stoken

This commit is contained in:
KimgiaiiWuyi 2022-07-02 00:57:36 +08:00
parent 5e1555ff21
commit d454fe5bfe
2 changed files with 80 additions and 1 deletions

View File

@ -813,6 +813,27 @@ async def check_cookies(bot: HoshinoBot, ev: CQEvent):
logger.exception('Cookie校验错误')
# 群聊内 校验Stoken 是否正常的功能,不正常自动删掉
@sv.on_fullmatch('校验全部Stoken')
async def check_stoken(bot: HoshinoBot, ev: CQEvent):
try:
raw_mes = await check_stoken_db()
im = raw_mes[0]
await bot.send(ev, im)
for i in raw_mes[1]:
await bot.send_private_msg(user_id=i[0],
message='您绑定的Stokenuid{})已失效,以下功能将会受到影响:\n'
'gs开启自动米游币开始获取米游币。\n'
'重新添加后需要重新开启自动米游币。'.format(i[1]))
await asyncio.sleep(3 + random.randint(1, 3))
except ActionFailed as e:
await bot.send(ev, '机器人发送消息失败:{}'.format(e))
logger.exception('发送Cookie校验信息失败')
except Exception as e:
await bot.send(ev, '发生错误 {},请检查后台输出。'.format(e))
logger.exception('Cookie校验错误')
# 群聊内 查询当前树脂状态以及派遣状态 的命令
@sv.on_fullmatch('当前状态')
async def send_daily_data(bot: HoshinoBot, ev: CQEvent):

View File

@ -17,6 +17,7 @@ from nonebot import logger
mhyVersion = '2.11.1'
o_url = 'https://api-takumi.mihoyo.com'
n_url = 'https://api-takumi-record.mihoyo.com'
bbs_Taskslist = 'https://bbs-api.mihoyo.com/apihub/sapi/getUserMissionsState'
BASE_PATH = os.path.dirname(__file__)
BASE2_PATH = os.path.join(BASE_PATH, 'mihoyo_bbs')
@ -125,6 +126,7 @@ async def check_db():
mys_data['data']['list'].remove(i)
return_str = return_str + f'uid{row[0]}/mys{mihoyo_id}的Cookies是正常的\n'
normal_num += 1
logger.info(f'uid{row[0]}/mys{mihoyo_id}的Cookies是正常的')
except:
invalid_str = invalid_str + f'uid{row[0]}的Cookies是异常的已删除该条Cookies\n'
return_str = return_str + f'uid{row[0]}的Cookies是异常的已删除该条Cookies\n'
@ -134,11 +136,67 @@ async def check_db():
c.execute('DELETE from CookiesCache where Cookies=?', (row[1],))
except:
pass
logger.info(f'uid{row[0]}的Cookies是异常的已删除该条Cookies')
if len(c_data) > 9:
return_str = '正常Cookies数量{}\n{}'.format(str(normal_num),
'失效cookies:\n' + invalid_str if invalid_str else '无失效Cookies')
'失效cookies:\n' + invalid_str if invalid_str else '无失效Cookies')
conn.commit()
conn.close()
logger.info('已完成Cookies检查')
logger.info(f'正常Cookies数量{str(normal_num)}')
logger.info(f'失效cookies:\n' + invalid_str if invalid_str else '无失效Cookies')
return [return_str, invalid_list]
async def check_stoken_db():
def random_text(num: int) -> str:
return ''.join(random.sample(string.ascii_lowercase + string.digits, num))
return_str = str()
normal_num = 0
invalid_str = ''
invalid_list = []
conn = sqlite3.connect('ID_DATA.db')
c = conn.cursor()
cursor = c.execute('SELECT UID,Stoken,QID from NewCookiesTable')
c_data = cursor.fetchall()
for row in c_data:
if row[1] is None:
continue
async with AsyncClient() as client:
req = await client.get(url=bbs_Taskslist,
headers = {
'DS' : old_version_get_ds_token(True),
'cookie' : row[1],
'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'
})
data = req.json()
if 'err' in data['message'] or data['retcode'] == -100:
invalid_str = invalid_str + f'uid{row[0]}的Stoken是异常的已删除该条Stoken\n'
return_str = return_str + f'uid{row[0]}的Stoken是异常的已删除该条Stoken\n'
invalid_list.append([row[2], row[0]])
c.execute('UPDATE NewCookiesTable SET Stoken = ? WHERE UID=?', (None, row[0]))
logger.info(f'uid{row[0]}的Stoken是异常的已删除该条Stoken')
else:
return_str = return_str + f'uid{row[0]}的Stoken是正常的\n'
logger.info(f'uid{row[0]}的Stoken是正常的')
normal_num += 1
if len(c_data) > 9:
return_str = '正常Stoken数量{}\n{}'.format(str(normal_num),
'失效Stoken:\n' + invalid_str if invalid_str else '无失效Stoken')
conn.commit()
conn.close()
logger.info('已完成Stoken检查!')
logger.info(f'正常Stoken数量{normal_num}')
logger.info(f'失效Stoken:\n' + invalid_str if invalid_str else '无失效Stoken')
return [return_str, invalid_list]