mirror of
https://github.com/KimigaiiWuyi/GenshinUID.git
synced 2025-06-01 21:19:49 +08:00
更新后先看更新记录和指令!
This commit is contained in:
parent
00b1aed370
commit
b0b521de32
64
README.md
64
README.md
@ -1,6 +1,6 @@
|
|||||||
# GenshinUID / 原神UID查询
|
# GenshinUID / 原神UID查询
|
||||||
|
|
||||||
一个HoshinoBot插件,用于查询原神UID信息,用于查询树脂/探索派遣状态,推送树脂快满了。
|
一个HoshinoBot插件,用于查询原神UID信息,用于查询树脂/探索派遣状态,推送树脂快满了,每日签到。
|
||||||
|
|
||||||
**一定要读更新记录和指令!!**
|
**一定要读更新记录和指令!!**
|
||||||
|
|
||||||
@ -46,6 +46,14 @@ $ pip3 install -r requirements.txt
|
|||||||
|
|
||||||
## 更新记录
|
## 更新记录
|
||||||
|
|
||||||
|
#### 2021-10-24
|
||||||
|
|
||||||
|
**重要:目前Cookies池又采用了新的方式(去除冗余),如果你是上个版本的使用者,请在更新后使用群聊命令:优化Cookies,无损迁移旧版本全部Cookies;(如果你是上上个版本的使用者,更新后使用命令:迁移Cookies)**
|
||||||
|
|
||||||
|
修复:可能会导致的添加cookies问题
|
||||||
|
|
||||||
|
新增:绑定Cookies后可以实现米游社签到,如果开启自动签到之后,可以每天0:30准时签到,具体使用可以前往[指令](#指令)处查阅。
|
||||||
|
|
||||||
#### 2021-10-17
|
#### 2021-10-17
|
||||||
|
|
||||||
**重要:目前Cookies池采用了新的方式,如果你是之前版本的使用者,请在更新后使用群聊命令:迁移Cookies,无损迁移旧版本全部Cookies**
|
**重要:目前Cookies池采用了新的方式,如果你是之前版本的使用者,请在更新后使用群聊命令:迁移Cookies,无损迁移旧版本全部Cookies**
|
||||||
@ -148,29 +156,33 @@ $ pip3 install -r requirements.txt
|
|||||||
|
|
||||||
(**括号内为可选词缀**,以下所有可以输出图片的,**命令后跟图可自定义背景图片**):
|
(**括号内为可选词缀**,以下所有可以输出图片的,**命令后跟图可自定义背景图片**):
|
||||||
|
|
||||||
| 触发前缀 | 触发后缀/备注 | 效果 | 举例 | 备注 |
|
| 触发前缀 | 触发后缀/备注 | 效果 | 举例 | 备注 |
|
||||||
| :--------------------- | ---------------------- | ---------------------------------- | ------------------ | ---------------------------------------- |
|
| :--------------------- | ---------------------- | ----------------------------------- | ------------------ | ---------------------------------------- |
|
||||||
| uid | | 获取角色信息一览(带武器信息) | uid123456789 | |
|
| uid | | 获取角色信息一览(带武器信息) | uid123456789 | |
|
||||||
| uid | (上期)深渊 | 获取角色深渊总览(层数为最后一层) | uid123456789深渊 | |
|
| uid | (上期)深渊 | 获取角色深渊总览(层数为最后一层) | uid123456789深渊 | |
|
||||||
| uid | (上期)深渊9/10/11/12 | 获取角色深渊某一层数据 | uid123456789深渊12 | |
|
| uid | (上期)深渊9/10/11/12 | 获取角色深渊某一层数据 | uid123456789深渊12 | |
|
||||||
| mys | | 角色信息(带武器信息,冒险等级) | mys123456 | 米游社通行证 |
|
| mys | | 角色信息(带武器信息,冒险等级) | mys123456 | 米游社通行证 |
|
||||||
| mys | (上期)深渊 | 获取角色深渊总览(层数为最后一层) | mys123456深渊 | 米游社通行证 |
|
| mys | (上期)深渊 | 获取角色深渊总览(层数为最后一层) | mys123456深渊 | 米游社通行证 |
|
||||||
| mys | (上期)深渊9/10/11/12 | 获取角色深渊某一层数据 | mys123456深渊12 | 米游社通行证 |
|
| mys | (上期)深渊9/10/11/12 | 获取角色深渊某一层数据 | mys123456深渊12 | 米游社通行证 |
|
||||||
| UID | | 获取角色信息一览(不带武器信息) | UID123456789 | 旧版本,比例更和谐 |
|
| UID | | 获取角色信息一览(不带武器信息) | UID123456789 | 旧版本,比例更和谐 |
|
||||||
| 绑定uid | | 当前qq号关联绑定uid | 绑定uid123456789 | 查询前缀前置条件 |
|
| 绑定uid | | 当前qq号关联绑定uid | 绑定uid123456789 | 查询前缀前置条件 |
|
||||||
| 绑定mys | | 当前qq号关联绑定米游社通行证 | 绑定mys12345678 | 查询前缀前置条件 |
|
| 绑定mys | | 当前qq号关联绑定米游社通行证 | 绑定mys12345678 | 查询前缀前置条件 |
|
||||||
| 查询 | | 查询当前绑定角色信息一览 | 查询 | **必须**绑定过mys/uid |
|
| 查询 | | 查询当前绑定角色信息一览 | 查询 | **必须**绑定过mys/uid |
|
||||||
| 查询(上期)深渊 | | 查询当前绑定角色深渊总览 | 查询深渊 | **必须**绑定过mys/uid |
|
| 查询(上期)深渊 | | 查询当前绑定角色深渊总览 | 查询深渊 | **必须**绑定过mys/uid |
|
||||||
| 查询(上期)深渊\d | | 查询当前绑定角色深渊某一层数据 | 查询深渊10 | **必须**绑定过mys/uid |
|
| 查询(上期)深渊\d | | 查询当前绑定角色深渊某一层数据 | 查询深渊10 | **必须**绑定过mys/uid |
|
||||||
| 添加 | | 向cookies池添加cookies | 添加 _ga=balabala | **私聊**bot,注意空格 |
|
| 添加 | | 向cookies池添加cookies | 添加 _ga=balabala | **私聊**bot,注意空格 |
|
||||||
| 查询 @人 | | 获取@的群友的角色信息一览 | 查询 @Wuyi | |
|
| 查询 @人 | | 获取@的群友的角色信息一览 | 查询 @Wuyi | |
|
||||||
| 查询(上期)深渊 @人 | | 获取@的群友的深渊信息一览 | 查询深渊 @Wuyi | |
|
| 查询(上期)深渊 @人 | | 获取@的群友的深渊信息一览 | 查询深渊 @Wuyi | |
|
||||||
| 查询(上期)深渊\d @人 | | 获取@的群友的深渊某一层数据 | 查询深渊10 @Wuyi | |
|
| 查询(上期)深渊\d @人 | | 获取@的群友的深渊某一层数据 | 查询深渊10 @Wuyi | |
|
||||||
| 当前状态 | | 获取树脂、每日委托、派遣等信息 | 当前状态 | **必须**绑定过CK和uid |
|
| 当前状态 | | 获取树脂、每日委托、派遣等信息 | 当前状态 | **必须**绑定过CK和uid |
|
||||||
| 开启推送 | | 开启推送,超过140树脂提醒旅行者 | 开启推送 | 群聊/私聊都可<br />**必须**绑定过CK和uid |
|
| 开启推送 | | 开启推送,超过140树脂提醒旅行者 | 开启推送 | 群聊/私聊都可<br />**必须**绑定过CK和uid |
|
||||||
| 关闭推送 | | 关闭树脂快满的提醒 | 关闭推送 | 都可以 |
|
| 关闭推送 | | 关闭树脂快满的提醒 | 关闭推送 | 都可以 |
|
||||||
| 校验全部Cookies | | 校验当前池内全部Cookies状态 | 校验全部Cookies | **群聊** |
|
| 校验全部Cookies | | 校验当前池内全部Cookies状态 | 校验全部Cookies | **群聊** |
|
||||||
| 迁移Cookies | | 迁移旧版本全部Cookies | 迁移Cookies | **群聊** |
|
| 迁移Cookies | | 迁移旧版本(上上个版本)全部Cookies | 迁移Cookies | **群聊** |
|
||||||
|
| 优化Cookies | | 优化上个版本全部Cookies | 优化Cookies | **群聊** |
|
||||||
|
| 签到 | | 米游社签到 | 签到 | **必须**绑定过CK和uid |
|
||||||
|
| 开启自动签到 | | 开启每日米游社签到 | 开启自动签到 | 群聊/私聊都可<br />**必须**绑定过CK和uid |
|
||||||
|
| 关闭自动签到 | | 关闭每日米游社签到 | 关闭自动签到 | 群聊/私聊都可<br />**必须**绑定过CK和uid |
|
||||||
|
|
||||||
### 深渊查询:
|
### 深渊查询:
|
||||||
|
|
||||||
@ -180,6 +192,10 @@ $ pip3 install -r requirements.txt
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
### 签到:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
## 相关仓库
|
## 相关仓库
|
||||||
|
|
||||||
- [PaimonBot](https://github.com/XiaoMiku01/PaimonBot) - 插件原始代码来自于它
|
- [PaimonBot](https://github.com/XiaoMiku01/PaimonBot) - 插件原始代码来自于它
|
||||||
|
282
__init__.py
282
__init__.py
@ -1,5 +1,5 @@
|
|||||||
from .getImg import draw_pic,draw_abyss_pic,draw_abyss0_pic
|
from .getImg import draw_pic,draw_abyss_pic,draw_abyss0_pic
|
||||||
from .getDB import connectDB,selectDB,cookiesDB,cacheDB,deletecache,CheckDB,TransDB,OpenPush,GetMysInfo,GetDaily
|
from .getDB import connectDB,selectDB,cookiesDB,cacheDB,deletecache,CheckDB,TransDB,OpenPush,GetMysInfo,GetDaily,GetSignList,MysSign,GetSignInfo,OpCookies
|
||||||
|
|
||||||
from nonebot import *
|
from nonebot import *
|
||||||
from hoshino import Service,R,priv,util
|
from hoshino import Service,R,priv,util
|
||||||
@ -21,63 +21,48 @@ 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')
|
||||||
|
|
||||||
|
daily_im = '''
|
||||||
|
==============
|
||||||
|
(还剩{}补充满)
|
||||||
|
==============
|
||||||
|
原粹树脂:{}/160
|
||||||
|
每日委托:{}/4
|
||||||
|
探索派遣:{}/{}
|
||||||
|
========
|
||||||
|
{}'''
|
||||||
|
|
||||||
@sv.scheduled_job('cron', hour='0')
|
@sv.scheduled_job('cron', hour='0')
|
||||||
async def delete():
|
async def delete():
|
||||||
deletecache()
|
deletecache()
|
||||||
|
|
||||||
@sv.scheduled_job('interval', minutes=30)
|
@sv.scheduled_job('cron', hour='0',minute="30")
|
||||||
async def push():
|
async def dailysign():
|
||||||
conn = sqlite3.connect('ID_DATA.db')
|
conn = sqlite3.connect('ID_DATA.db')
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
cursor = c.execute("SELECT * FROM NewCookies WHERE StatusA != ?",("off",))
|
cursor = c.execute("SELECT * FROM NewCookiesTable WHERE StatusB != ?",("off",))
|
||||||
c_data = cursor.fetchall()
|
c_data = cursor.fetchall()
|
||||||
for row in c_data:
|
for row in c_data:
|
||||||
raw_data = await GetDaily(str(row[1]))
|
|
||||||
dailydata = raw_data["data"]
|
im = await sign(str(row[0]))
|
||||||
resin_num = dailydata["current_resin"]
|
|
||||||
if resin_num >= row[5]:
|
|
||||||
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)
|
|
||||||
|
|
||||||
task_num = dailydata["finished_task_num"]
|
if row[4] == "on":
|
||||||
travel_num = dailydata["current_expedition_num"]
|
await bot.send_private_msg(user_id = row[2],message = im)
|
||||||
max_travel_num = dailydata["max_expedition_num"]
|
|
||||||
travel_data = dailydata["expeditions"]
|
|
||||||
|
|
||||||
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"
|
|
||||||
im = f'''
|
|
||||||
==============
|
|
||||||
你的树脂快满了!!!
|
|
||||||
(还剩{time}补充满)
|
|
||||||
==============
|
|
||||||
原粹树脂:{resin_num}/160
|
|
||||||
每日委托:{task_num}/4
|
|
||||||
探索派遣:{travel_num}/{max_travel_num}
|
|
||||||
========
|
|
||||||
{travel_str}
|
|
||||||
'''.strip()
|
|
||||||
|
|
||||||
if row[2] == "on":
|
|
||||||
await bot.send_private_msg(user_id = row[4],message = im)
|
|
||||||
else:
|
|
||||||
await bot.send_group_msg(group_id = row[2],message = f"[CQ:at,qq={row[4]}]" + "\n" + im)
|
|
||||||
else:
|
else:
|
||||||
pass
|
await bot.send_group_msg(group_id = row[4],message = f"[CQ:at,qq={row[2]}]" + "\n" + im)
|
||||||
|
|
||||||
|
@sv.scheduled_job('interval', minutes=30)
|
||||||
|
async def push():
|
||||||
|
daily_data = await daily()
|
||||||
|
if daily_data != None:
|
||||||
|
for i in daily_data:
|
||||||
|
if i['gid'] == "on":
|
||||||
|
await bot.send_private_msg(user_id = i['qid'],message = i['message'])
|
||||||
|
else:
|
||||||
|
await bot.send_group_msg(group_id = i['gid'],message = f"[CQ:at,qq={i['qid']}]" + "\n" + i['message'])
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@bot.on_message('private')
|
@bot.on_message('private')
|
||||||
async def setting(ctx):
|
async def setting(ctx):
|
||||||
@ -88,55 +73,112 @@ async def setting(ctx):
|
|||||||
if '添加 ' in message:
|
if '添加 ' in message:
|
||||||
try:
|
try:
|
||||||
mes = message.replace('添加 ','')
|
mes = message.replace('添加 ','')
|
||||||
ltuid = re.search(r"ltuid=(\d*)", mes)
|
aid = re.search(r"account_id=(\d*)", mes)
|
||||||
mysid_data = ltuid.group(0).split('=')
|
mysid_data = aid.group(0).split('=')
|
||||||
mysid = mysid_data[1]
|
mysid = mysid_data[1]
|
||||||
|
cookie = ';'.join(filter(lambda x: x.split('=')[0] in ["cookie_token", "account_id"], [i.strip() for i in mes.split(';')]))
|
||||||
mys_data = await GetMysInfo(mysid,mes)
|
mys_data = await GetMysInfo(mysid,cookie)
|
||||||
mys_data = mys_data[0]
|
mys_data = mys_data[0]
|
||||||
uid = mys_data['data']['list'][0]['game_role_id']
|
uid = mys_data['data']['list'][0]['game_role_id']
|
||||||
|
|
||||||
await cookiesDB(uid,mes)
|
await cookiesDB(uid,cookie,userid)
|
||||||
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message=f'添加Cookies成功!Cookies属于个人重要信息,如果你是在不知情的情况下添加,请马上修改米游社账户密码,保护个人隐私!')
|
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message=f'添加Cookies成功!Cookies属于个人重要信息,如果你是在不知情的情况下添加,请马上修改米游社账户密码,保护个人隐私!')
|
||||||
except:
|
except:
|
||||||
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message=f'校验失败!')
|
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message=f'校验失败!请输入正确的Cookies!')
|
||||||
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")
|
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:
|
except:
|
||||||
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:
|
||||||
uid = await selectDB(userid,mode = "uid")
|
uid = await selectDB(userid,mode = "uid")
|
||||||
im = await OpenPush(int(uid[0]),userid,"off")
|
im = await OpenPush(int(uid[0]),userid,"off","StatusA")
|
||||||
|
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message=im)
|
||||||
|
except:
|
||||||
|
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message="未找到uid绑定记录。")
|
||||||
|
elif '开启自动签到' in message:
|
||||||
|
try:
|
||||||
|
uid = await selectDB(userid,mode = "uid")
|
||||||
|
im = await OpenPush(int(uid[0]),userid,"on","StatusB")
|
||||||
|
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message=im)
|
||||||
|
except:
|
||||||
|
await bot.send_msg(self_id=sid, user_id=userid, group_id=gid, message="未找到uid绑定记录。")
|
||||||
|
elif '关闭自动签到' in message:
|
||||||
|
try:
|
||||||
|
uid = await selectDB(userid,mode = "uid")
|
||||||
|
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:
|
except:
|
||||||
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_fullmatch('开启推送')
|
@sv.on_prefix('开启')
|
||||||
|
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||||
|
message = ev.message.extract_plain_text()
|
||||||
|
m = ''.join(re.findall('[\u4e00-\u9fa5]',message))
|
||||||
|
if m == "自动签到":
|
||||||
|
try:
|
||||||
|
gid = ev.group_id
|
||||||
|
qid = ev.sender["user_id"]
|
||||||
|
uid = await selectDB(ev.sender['user_id'],mode = "uid")
|
||||||
|
im = await OpenPush(int(uid[0]),ev.sender['user_id'],str(gid),"StatusB")
|
||||||
|
await bot.send(ev,im,at_sender=True)
|
||||||
|
except:
|
||||||
|
await bot.send(ev,"未绑定uid信息!",at_sender=True)
|
||||||
|
elif m == "推送":
|
||||||
|
try:
|
||||||
|
gid = ev.group_id
|
||||||
|
qid = ev.sender["user_id"]
|
||||||
|
uid = await selectDB(ev.sender['user_id'],mode = "uid")
|
||||||
|
im = await OpenPush(int(uid[0]),ev.sender['user_id'],str(gid),"StatusA")
|
||||||
|
await bot.send(ev,im,at_sender=True)
|
||||||
|
except:
|
||||||
|
await bot.send(ev,"未绑定uid信息!",at_sender=True)
|
||||||
|
|
||||||
|
@sv.on_prefix('关闭')
|
||||||
|
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||||
|
message = ev.message.extract_plain_text()
|
||||||
|
m = ''.join(re.findall('[\u4e00-\u9fa5]',message))
|
||||||
|
if m == "自动签到":
|
||||||
|
try:
|
||||||
|
gid = ev.group_id
|
||||||
|
qid = ev.sender["user_id"]
|
||||||
|
uid = await selectDB(ev.sender['user_id'],mode = "uid")
|
||||||
|
im = await OpenPush(int(uid[0]),ev.sender['user_id'],"off","StatusB")
|
||||||
|
await bot.send(ev,im,at_sender=True)
|
||||||
|
except:
|
||||||
|
await bot.send(ev,"未绑定uid信息!",at_sender=True)
|
||||||
|
elif m == "推送":
|
||||||
|
try:
|
||||||
|
gid = ev.group_id
|
||||||
|
qid = ev.sender["user_id"]
|
||||||
|
uid = await selectDB(ev.sender['user_id'],mode = "uid")
|
||||||
|
im = await OpenPush(int(uid[0]),ev.sender['user_id'],"off","StatusA")
|
||||||
|
await bot.send(ev,im,at_sender=True)
|
||||||
|
except:
|
||||||
|
await bot.send(ev,"未绑定uid信息!",at_sender=True)
|
||||||
|
|
||||||
|
@sv.on_fullmatch('签到')
|
||||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||||
try:
|
try:
|
||||||
gid = ev.group_id
|
|
||||||
qid = ev.sender["user_id"]
|
qid = ev.sender["user_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))
|
uid = uid[0]
|
||||||
|
im = await sign(uid)
|
||||||
await bot.send(ev,im,at_sender=True)
|
await bot.send(ev,im,at_sender=True)
|
||||||
except:
|
except:
|
||||||
await bot.send(ev,"未绑定uid信息!",at_sender=True)
|
pass
|
||||||
|
|
||||||
@sv.on_fullmatch('关闭推送')
|
@sv.on_fullmatch('优化Cookies')
|
||||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||||
try:
|
try:
|
||||||
gid = ev.group_id
|
im = await OpCookies()
|
||||||
qid = ev.sender["user_id"]
|
|
||||||
uid = await selectDB(ev.sender['user_id'],mode = "uid")
|
|
||||||
im = await OpenPush(int(uid[0]),ev.sender['user_id'],"off")
|
|
||||||
await bot.send(ev,im,at_sender=True)
|
await bot.send(ev,im,at_sender=True)
|
||||||
except:
|
except:
|
||||||
await bot.send(ev,"未绑定uid信息!",at_sender=True)
|
pass
|
||||||
|
|
||||||
@sv.on_fullmatch('校验全部Cookies')
|
@sv.on_fullmatch('校验全部Cookies')
|
||||||
async def _(bot:HoshinoBot, ev: CQEvent):
|
async def _(bot:HoshinoBot, ev: CQEvent):
|
||||||
im = await CheckDB()
|
im = await CheckDB()
|
||||||
@ -152,45 +194,8 @@ async def _(bot:HoshinoBot, ev: CQEvent):
|
|||||||
try:
|
try:
|
||||||
uid = await selectDB(ev.sender['user_id'],mode = "uid")
|
uid = await selectDB(ev.sender['user_id'],mode = "uid")
|
||||||
uid = uid[0]
|
uid = uid[0]
|
||||||
raw_data = await GetDaily(uid)
|
mes = await daily("ask",uid)
|
||||||
dailydata = raw_data["data"]
|
im = mes[0]['message']
|
||||||
resin_num = dailydata["current_resin"]
|
|
||||||
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)
|
|
||||||
|
|
||||||
task_num = dailydata["finished_task_num"]
|
|
||||||
travel_num = dailydata["current_expedition_num"]
|
|
||||||
max_travel_num = dailydata["max_expedition_num"]
|
|
||||||
travel_data = dailydata["expeditions"]
|
|
||||||
|
|
||||||
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"
|
|
||||||
|
|
||||||
im = f'''
|
|
||||||
:
|
|
||||||
==============
|
|
||||||
(还剩{time}补充满)
|
|
||||||
==============
|
|
||||||
原粹树脂:{resin_num}/160
|
|
||||||
每日委托:{task_num}/4
|
|
||||||
探索派遣:{travel_num}/{max_travel_num}
|
|
||||||
========
|
|
||||||
{travel_str}
|
|
||||||
'''.strip()
|
|
||||||
|
|
||||||
except:
|
except:
|
||||||
im = "没有找到绑定信息。"
|
im = "没有找到绑定信息。"
|
||||||
|
|
||||||
@ -267,7 +272,7 @@ async def _(bot, ev):
|
|||||||
if len(re.findall(r"\d+", message)) == 1:
|
if len(re.findall(r"\d+", message)) == 1:
|
||||||
floor_num = re.findall(r"\d+", message)[0]
|
floor_num = re.findall(r"\d+", message)[0]
|
||||||
im = await draw_abyss_pic(uid[0],nickname,floor_num,image,uid[1])
|
im = await draw_abyss_pic(uid[0],nickname,floor_num,image,uid[1])
|
||||||
await bot.send(ev, im, at_sender=True)
|
await bot.send(ev, im, at_sender=True)
|
||||||
else:
|
else:
|
||||||
im = await draw_abyss0_pic(uid[0],nickname,image,uid[1])
|
im = await draw_abyss0_pic(uid[0],nickname,image,uid[1])
|
||||||
await bot.send(ev, im, at_sender=True)
|
await bot.send(ev, im, at_sender=True)
|
||||||
@ -342,3 +347,68 @@ async def _(bot:HoshinoBot, ev: CQEvent):
|
|||||||
except:
|
except:
|
||||||
await bot.send(ev,'输入错误!')
|
await bot.send(ev,'输入错误!')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
async def sign(uid):
|
||||||
|
sign_data = await MysSign(uid)
|
||||||
|
sign_info = await GetSignInfo(uid)
|
||||||
|
sign_info = sign_info['data']
|
||||||
|
sign_list = await GetSignList()
|
||||||
|
status = sign_data['message']
|
||||||
|
getitem = sign_list['data']['awards'][int(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 = "签到成功"
|
||||||
|
else:
|
||||||
|
mes_im = status
|
||||||
|
sign_missed = sign_info['sign_cnt_missed']
|
||||||
|
im = "\n" + mes_im +"!" + "\n" + get_im + "\n" + f"本月漏签次数:{sign_missed}"
|
||||||
|
return im
|
||||||
|
|
||||||
|
async def daily(mode = "push",uid = None):
|
||||||
|
temp_list = []
|
||||||
|
conn = sqlite3.connect('ID_DATA.db')
|
||||||
|
c = conn.cursor()
|
||||||
|
if mode == "push":
|
||||||
|
cursor = c.execute("SELECT * FROM NewCookiesTable WHERE StatusA != ?",("off",))
|
||||||
|
c_data = cursor.fetchall()
|
||||||
|
elif mode == "ask":
|
||||||
|
c_data = ([uid,0,0,0,0,0,0],)
|
||||||
|
|
||||||
|
for row in c_data:
|
||||||
|
raw_data = await GetDaily(str(row[0]))
|
||||||
|
dailydata = raw_data["data"]
|
||||||
|
|
||||||
|
resin_num = dailydata["current_resin"]
|
||||||
|
task_num = dailydata["finished_task_num"]
|
||||||
|
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:
|
||||||
|
send_mes = "你的树脂快满了!" + send_mes
|
||||||
|
temp_list.append({"qid":row[2],"gid":row[3],"message":send_mes})
|
||||||
|
return temp_list
|
||||||
|
201
getDB.py
201
getDB.py
@ -17,14 +17,14 @@ mhyVersion = "2.11.1"
|
|||||||
FILE_PATH = os.path.abspath(os.path.join(os.getcwd(), "hoshino"))
|
FILE_PATH = os.path.abspath(os.path.join(os.getcwd(), "hoshino"))
|
||||||
DATA_PATH = os.path.join(FILE_PATH,'config')
|
DATA_PATH = os.path.join(FILE_PATH,'config')
|
||||||
|
|
||||||
async def OpenPush(uid,qid,status):
|
async def OpenPush(uid,qid,status,mode):
|
||||||
conn = sqlite3.connect('ID_DATA.db')
|
conn = sqlite3.connect('ID_DATA.db')
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
cursor = c.execute("SELECT * from NewCookies WHERE UID = ?",(uid,))
|
cursor = c.execute("SELECT * from NewCookiesTable WHERE UID = ?",(uid,))
|
||||||
c_data = cursor.fetchall()
|
c_data = cursor.fetchall()
|
||||||
if len(c_data) != 0:
|
if len(c_data) != 0:
|
||||||
try:
|
try:
|
||||||
c.execute("UPDATE NewCookies SET StatusA = ?,QID = ? WHERE UID=?",(status,qid,uid))
|
c.execute("UPDATE NewCookiesTable SET {s} = ?,QID = ? WHERE UID=?".format(s = mode),(status,qid,uid))
|
||||||
conn.commit()
|
conn.commit()
|
||||||
conn.close()
|
conn.close()
|
||||||
return "成功!"
|
return "成功!"
|
||||||
@ -37,21 +37,21 @@ async def CheckDB():
|
|||||||
str = ''
|
str = ''
|
||||||
conn = sqlite3.connect('ID_DATA.db')
|
conn = sqlite3.connect('ID_DATA.db')
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
cursor = c.execute("SELECT Cookies,UID from NewCookies")
|
cursor = c.execute("SELECT UID,Cookies from NewCookiesTable")
|
||||||
for row in cursor:
|
c_data = cursor.fetchall()
|
||||||
|
for row in c_data:
|
||||||
try:
|
try:
|
||||||
ltuid = re.search(r"ltuid=(\d*)", row[0])
|
aid = re.search(r"account_id=(\d*)",row[1])
|
||||||
mysid_data = ltuid.group(0).split('=')
|
mysid_data = aid.group(0).split('=')
|
||||||
mysid = mysid_data[1]
|
mysid = mysid_data[1]
|
||||||
|
mys_data = await GetMysInfo(mysid,row[1])
|
||||||
mys_data = await GetMysInfo(mysid,row[0])
|
|
||||||
mys_data = mys_data[0]
|
mys_data = mys_data[0]
|
||||||
uid = mys_data['data']['list'][0]['game_role_id']
|
uid = mys_data['data']['list'][0]['game_role_id']
|
||||||
|
str = str + f"uid{row[0]}/mysid{mysid}的Cookies是正常的!\n"
|
||||||
str = str + f"uid{row[1]}/mysid{mysid}的Cookies是正常的!\n"
|
|
||||||
except:
|
except:
|
||||||
str = str + f"uid{row[1]}/mysid{mysid}的Cookies是异常的!已删除该条Cookies!\n"
|
str = str + f"uid{row[0]}的Cookies是异常的!已删除该条Cookies!\n"
|
||||||
c.execute("DELETE from NewCookies where UID=?",(row[1],))
|
c.execute("DELETE from NewCookiesTable where UID=?",(row[0],))
|
||||||
|
c.execute("DELETE from CookiesCache where Cookies=?",(row[1],))
|
||||||
conn.commit()
|
conn.commit()
|
||||||
conn.close()
|
conn.close()
|
||||||
return str
|
return str
|
||||||
@ -66,26 +66,28 @@ async def TransDB():
|
|||||||
conn.close()
|
conn.close()
|
||||||
return "你没有需要迁移的数据库。"
|
return "你没有需要迁移的数据库。"
|
||||||
else:
|
else:
|
||||||
c.execute('''CREATE TABLE IF NOT EXISTS NewCookies
|
c.execute('''CREATE TABLE IF NOT EXISTS NewCookiesTable
|
||||||
(Cookies TEXT PRIMARY KEY NOT NULL,
|
(UID INT PRIMARY KEY NOT NULL,
|
||||||
UID INT,
|
Cookies TEXT,
|
||||||
|
QID INT,
|
||||||
StatusA TEXT,
|
StatusA TEXT,
|
||||||
StatusB TEXT,
|
StatusB TEXT,
|
||||||
QID INT,
|
StatusC TEXT,
|
||||||
NUM INT,
|
NUM INT,
|
||||||
Extra TEXT);''')
|
Extra TEXT);''')
|
||||||
cursor = c.execute("SELECT * from CookiesTable")
|
cursor = c.execute("SELECT * from CookiesTable")
|
||||||
c_data = cursor.fetchall()
|
c_data = cursor.fetchall()
|
||||||
for row in c_data:
|
for row in c_data:
|
||||||
try:
|
try:
|
||||||
ltuid = re.search(r"ltuid=(\d*)", row[0])
|
newcookies = ';'.join(filter(lambda x: x.split('=')[0] in ["cookie_token", "account_id"], [i.strip() for i in row[0].split(';')]))
|
||||||
mysid_data = ltuid.group(0).split('=')
|
aid = re.search(r"account_id=(\d*)", row[0])
|
||||||
|
mysid_data = aid.group(0).split('=')
|
||||||
mysid = mysid_data[1]
|
mysid = mysid_data[1]
|
||||||
mys_data = await GetMysInfo(mysid,row[0])
|
mys_data = await GetMysInfo(mysid,row[0])
|
||||||
mys_data = mys_data[0]
|
mys_data = mys_data[0]
|
||||||
uid = mys_data['data']['list'][0]['game_role_id']
|
uid = mys_data['data']['list'][0]['game_role_id']
|
||||||
c.execute("INSERT OR IGNORE INTO NewCookies (Cookies,UID,StatusA,StatusB,NUM) \
|
c.execute("INSERT OR IGNORE INTO NewCookiesTable (Cookies,UID,StatusA,StatusB,StatusC,NUM) \
|
||||||
VALUES (?, ?,?,?,?)",(row[0],uid,"off","off",140))
|
VALUES (?, ?,?,?,?,?)",(newcookies,uid,"off","off","off",140))
|
||||||
str = str + f"uid{uid}/mysid{mysid}的Cookies已转移成功!\n"
|
str = str + f"uid{uid}/mysid{mysid}的Cookies已转移成功!\n"
|
||||||
except:
|
except:
|
||||||
str = str + f"uid{uid}/mysid{mysid}的Cookies是异常的!已删除该条Cookies!\n"
|
str = str + f"uid{uid}/mysid{mysid}的Cookies是异常的!已删除该条Cookies!\n"
|
||||||
@ -160,15 +162,15 @@ async def cacheDB(uid,mode = 1,mys = None):
|
|||||||
c_data = cursor.fetchall()
|
c_data = cursor.fetchall()
|
||||||
|
|
||||||
if len(c_data)==0:
|
if len(c_data)==0:
|
||||||
cookiesrow = c.execute("SELECT * FROM NewCookies ORDER BY RANDOM() limit 1")
|
cookiesrow = c.execute("SELECT * FROM NewCookiesTable ORDER BY RANDOM() limit 1")
|
||||||
for row2 in cookiesrow:
|
for row2 in cookiesrow:
|
||||||
if mode == 1:
|
if mode == 1:
|
||||||
c.execute("INSERT OR IGNORE INTO CookiesCache (Cookies,UID) \
|
c.execute("INSERT OR IGNORE INTO CookiesCache (Cookies,UID) \
|
||||||
VALUES (?, ?)",(row2[0],uid))
|
VALUES (?, ?)",(row2[1],uid))
|
||||||
if mode == 2:
|
if mode == 2:
|
||||||
c.execute("INSERT OR IGNORE INTO CookiesCache (Cookies,MYSID) \
|
c.execute("INSERT OR IGNORE INTO CookiesCache (Cookies,MYSID) \
|
||||||
VALUES (?, ?)",(row2[0],uid))
|
VALUES (?, ?)",(row2[1],uid))
|
||||||
use = row2[0]
|
use = row2[1]
|
||||||
else:
|
else:
|
||||||
use = c_data[0][2]
|
use = c_data[0][2]
|
||||||
if mys:
|
if mys:
|
||||||
@ -181,33 +183,78 @@ async def cacheDB(uid,mode = 1,mys = None):
|
|||||||
conn.close()
|
conn.close()
|
||||||
return use
|
return use
|
||||||
|
|
||||||
async def cookiesDB(uid,Cookies):
|
async def cookiesDB(uid,Cookies,qid):
|
||||||
conn = sqlite3.connect('ID_DATA.db')
|
conn = sqlite3.connect('ID_DATA.db')
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
|
|
||||||
c.execute('''CREATE TABLE IF NOT EXISTS NewCookies
|
c.execute('''CREATE TABLE IF NOT EXISTS NewCookiesTable
|
||||||
(Cookies TEXT PRIMARY KEY NOT NULL,
|
(UID INT PRIMARY KEY NOT NULL,
|
||||||
UID INT,
|
Cookies TEXT,
|
||||||
|
QID INT,
|
||||||
StatusA TEXT,
|
StatusA TEXT,
|
||||||
StatusB TEXT,
|
StatusB TEXT,
|
||||||
QID INT,
|
StatusC TEXT,
|
||||||
NUM INT,
|
NUM INT,
|
||||||
Extra TEXT);''')
|
Extra TEXT);''')
|
||||||
|
|
||||||
c.execute("INSERT OR IGNORE INTO NewCookies (Cookies,UID,StatusA,StatusB,NUM) \
|
cursor = c.execute("SELECT * from NewCookiesTable WHERE UID = ?",(uid,))
|
||||||
VALUES (?, ?,?,?,?)",(Cookies,uid,"off","off",140))
|
c_data = cursor.fetchall()
|
||||||
|
if len(c_data) == 0 :
|
||||||
|
c.execute("INSERT OR IGNORE INTO NewCookiesTable (Cookies,UID,StatusA,StatusB,StatusC,NUM,QID) \
|
||||||
|
VALUES (?, ?,?,?,?,?,?)",(Cookies,uid,"off","off","off",140,qid))
|
||||||
|
else:
|
||||||
|
c.execute("UPDATE NewCookiesTable SET Cookies = ? WHERE UID=?",(Cookies,uid))
|
||||||
|
|
||||||
conn.commit()
|
conn.commit()
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
async def OpCookies():
|
||||||
|
str = ""
|
||||||
|
conn = sqlite3.connect('ID_DATA.db')
|
||||||
|
c = conn.cursor()
|
||||||
|
test = c.execute("SELECT count(*) FROM sqlite_master WHERE type='table' AND name = 'NewCookies'")
|
||||||
|
if test == 0:
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
return "你没有需要优化的数据库。"
|
||||||
|
else:
|
||||||
|
c.execute('''CREATE TABLE IF NOT EXISTS NewCookiesTable
|
||||||
|
(UID INT PRIMARY KEY NOT NULL,
|
||||||
|
Cookies TEXT,
|
||||||
|
QID INT,
|
||||||
|
StatusA TEXT,
|
||||||
|
StatusB TEXT,
|
||||||
|
StatusC TEXT,
|
||||||
|
NUM INT,
|
||||||
|
Extra TEXT);''')
|
||||||
|
cursor = c.execute("SELECT * from NewCookies")
|
||||||
|
c_data = cursor.fetchall()
|
||||||
|
for row in c_data:
|
||||||
|
try:
|
||||||
|
newcookies = ';'.join(filter(lambda x: x.split('=')[0] in ["cookie_token", "account_id"], [i.strip() for i in row[0].split(';')]))
|
||||||
|
aid = re.search(r"account_id=(\d*)", row[0])
|
||||||
|
mysid_data = aid.group(0).split('=')
|
||||||
|
mysid = mysid_data[1]
|
||||||
|
mys_data = await GetMysInfo(mysid,row[0])
|
||||||
|
mys_data = mys_data[0]
|
||||||
|
uid = mys_data['data']['list'][0]['game_role_id']
|
||||||
|
c.execute("INSERT OR IGNORE INTO NewCookiesTable (Cookies,UID,StatusA,StatusB,StatusC,QID,NUM) \
|
||||||
|
VALUES (?, ?,?,?,?,?,?)",(newcookies,row[1],row[2],row[3],"off",row[4],row[5]))
|
||||||
|
str = str + f"uid{row[1]}的Cookies已转移成功!\n"
|
||||||
|
except:
|
||||||
|
str = str + f"uid{row[1]}的Cookies是异常的!已删除该条Cookies!\n"
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
return str
|
||||||
|
|
||||||
|
|
||||||
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()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
cursor = c.execute("SELECT * FROM NewCookies WHERE UID = ?",(uid,))
|
cursor = c.execute("SELECT * FROM NewCookiesTable WHERE UID = ?",(uid,))
|
||||||
c_data = cursor.fetchall()
|
c_data = cursor.fetchall()
|
||||||
cookies = c_data[0][0]
|
cookies = c_data[0][1]
|
||||||
except:
|
except:
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -222,13 +269,24 @@ async def OwnerCookies(uid):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def random_hex(length):
|
||||||
|
result = hex(random.randint(0,16**length)).replace('0x','').upper()
|
||||||
|
if len(result)<length:
|
||||||
|
result = "0"*(length-len(result))+result
|
||||||
|
return result
|
||||||
|
|
||||||
def md5(text):
|
def md5(text):
|
||||||
md5 = hashlib.md5()
|
md5 = hashlib.md5()
|
||||||
md5.update(text.encode())
|
md5.update(text.encode())
|
||||||
return md5.hexdigest()
|
return md5.hexdigest()
|
||||||
|
|
||||||
|
def oldDSGet():
|
||||||
|
n = "h8w582wxwgqvahcdkpvdhbh2w9casgfl"
|
||||||
|
i = str(int(time.time()))
|
||||||
|
r = ''.join(random.sample(string.ascii_lowercase + string.digits, 6))
|
||||||
|
c = md5("salt=" + n + "&t=" + i + "&r=" + r)
|
||||||
|
return (i + "," + r + "," + c)
|
||||||
|
|
||||||
def DSGet(q = "",b = None):
|
def DSGet(q = "",b = None):
|
||||||
if b:
|
if b:
|
||||||
br = json.dumps(b)
|
br = json.dumps(b)
|
||||||
@ -259,6 +317,65 @@ async def GetDaily(Uid,ServerID="cn_gf01"):
|
|||||||
except:
|
except:
|
||||||
print("访问失败,请重试!")
|
print("访问失败,请重试!")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
async def GetSignList():
|
||||||
|
try:
|
||||||
|
async with AsyncClient() as client:
|
||||||
|
req = await client.get(
|
||||||
|
url="https://api-takumi.mihoyo.com/event/bbs_sign_reward/home?act_id=e202009291139501",
|
||||||
|
headers={
|
||||||
|
'x-rpc-app_version': mhyVersion,
|
||||||
|
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) miHoYoBBS/2.11.1',
|
||||||
|
'x-rpc-client_type': '5',
|
||||||
|
'Referer': 'https://webstatic.mihoyo.com/'})
|
||||||
|
data = json.loads(req.text)
|
||||||
|
return data
|
||||||
|
except:
|
||||||
|
print("访问失败,请重试!")
|
||||||
|
|
||||||
|
async def GetSignInfo(Uid,ServerID="cn_gf01"):
|
||||||
|
if Uid[0] == '5':
|
||||||
|
ServerID = "cn_qd01"
|
||||||
|
try:
|
||||||
|
async with AsyncClient() as client:
|
||||||
|
req = await client.get(
|
||||||
|
url="https://api-takumi.mihoyo.com/event/bbs_sign_reward/info?act_id=e202009291139501®ion=" + ServerID + "&uid=" + Uid,
|
||||||
|
headers={
|
||||||
|
'x-rpc-app_version': mhyVersion,
|
||||||
|
"Cookie": await OwnerCookies(Uid),
|
||||||
|
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) miHoYoBBS/2.11.1',
|
||||||
|
'x-rpc-client_type': '5',
|
||||||
|
'Referer': 'https://webstatic.mihoyo.com/'})
|
||||||
|
data = json.loads(req.text)
|
||||||
|
f=open("/root/hoshino/HoshinoBot/hoshino/modules/GenshinUID/mys/chars/info.txt",'w')
|
||||||
|
f.write(str(data))
|
||||||
|
return data
|
||||||
|
except:
|
||||||
|
print("访问失败,请重试!")
|
||||||
|
|
||||||
|
async def MysSign(Uid,ServerID="cn_gf01"):
|
||||||
|
if Uid[0] == '5':
|
||||||
|
ServerID = "cn_qd01"
|
||||||
|
try:
|
||||||
|
req = requests.post(
|
||||||
|
url = "https://api-takumi.mihoyo.com/event/bbs_sign_reward/sign",
|
||||||
|
headers={
|
||||||
|
'User_Agent': 'Mozilla/5.0 (Linux; Android 10; MIX 2 Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.101 Mobile Safari/537.36 miHoYoBBS/2.3.0',
|
||||||
|
"Cookie": await OwnerCookies(Uid),
|
||||||
|
"x-rpc-device_id":random_hex(32),
|
||||||
|
'Origin': 'https://webstatic.mihoyo.com',
|
||||||
|
'X_Requested_With': 'com.mihoyo.hyperion',
|
||||||
|
'DS': oldDSGet(),
|
||||||
|
'x-rpc-client_type': '5',
|
||||||
|
'Referer': 'https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?bbs_auth_required=true&act_id=e202009291139501&utm_source=bbs&utm_medium=mys&utm_campaign=icon',
|
||||||
|
'x-rpc-app_version': '2.3.0'
|
||||||
|
},
|
||||||
|
json = {"act_id": "e202009291139501" ,"uid": Uid ,"region": ServerID}
|
||||||
|
)
|
||||||
|
data2 = json.loads(req.text)
|
||||||
|
return data2
|
||||||
|
except:
|
||||||
|
print("访问失败,请重试!")
|
||||||
|
|
||||||
async def GetInfo(Uid,ServerID="cn_gf01",Schedule_type="1",mysid = None):
|
async def GetInfo(Uid,ServerID="cn_gf01",Schedule_type="1",mysid = None):
|
||||||
if Uid[0] == '5':
|
if Uid[0] == '5':
|
||||||
@ -278,7 +395,6 @@ async def GetInfo(Uid,ServerID="cn_gf01",Schedule_type="1",mysid = None):
|
|||||||
return data
|
return data
|
||||||
except:
|
except:
|
||||||
print("访问失败,请重试!")
|
print("访问失败,请重试!")
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
async def GetSpiralAbyssInfo(Uid, ServerID="cn_gf01",Schedule_type="1",mysid = None):
|
async def GetSpiralAbyssInfo(Uid, ServerID="cn_gf01",Schedule_type="1",mysid = None):
|
||||||
if Uid[0] == '5':
|
if Uid[0] == '5':
|
||||||
@ -300,8 +416,7 @@ async def GetSpiralAbyssInfo(Uid, ServerID="cn_gf01",Schedule_type="1",mysid = N
|
|||||||
data = json.loads(req.text)
|
data = json.loads(req.text)
|
||||||
return data
|
return data
|
||||||
except:
|
except:
|
||||||
print("1访问失败,请重试!")
|
print("访问失败,请重试!")
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
async def GetCharacter(Uid,Character_ids, ServerID="cn_gf01",mysid = None):
|
async def GetCharacter(Uid,Character_ids, ServerID="cn_gf01",mysid = None):
|
||||||
@ -325,7 +440,6 @@ async def GetCharacter(Uid,Character_ids, ServerID="cn_gf01",mysid = None):
|
|||||||
return data2
|
return data2
|
||||||
except:
|
except:
|
||||||
print("访问失败,请重试!")
|
print("访问失败,请重试!")
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
async def GetMysInfo(mysid,cookies = None):
|
async def GetMysInfo(mysid,cookies = None):
|
||||||
if cookies:
|
if cookies:
|
||||||
@ -346,6 +460,5 @@ async def GetMysInfo(mysid,cookies = None):
|
|||||||
data = json.loads(req.text)
|
data = json.loads(req.text)
|
||||||
return [data,mysid]
|
return [data,mysid]
|
||||||
except:
|
except:
|
||||||
print ("访问失败,请重试!")
|
im = "err"
|
||||||
#sys.exit (1)
|
return im
|
||||||
return
|
|
BIN
readme/4.PNG
Normal file
BIN
readme/4.PNG
Normal file
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
Loading…
x
Reference in New Issue
Block a user