2022-09-02 00:45:31 +08:00

87 lines
2.8 KiB
Python

from .get_gachalogs import save_gachalogs
from ..all_import import * # noqa: F403,F401
from .draw_gachalogs import draw_gachalogs_img
from ..utils.db_operation.db_operation import select_db
from ..utils.message.get_image_and_at import ImageAndAt
from ..utils.message.error_reply import * # noqa: F403,F401
from .export_and_import import export_gachalogs, import_gachalogs
@sv.on_notice()
async def import_gacha_log_info(session: NoticeSession):
ev = session.event
if ev['notice_type'] != 'offline_file':
return
url = ev['file']['url']
name: str = ev['file']['name']
if not name.endswith('.json'):
return
qid = ev['user_id']
uid = await select_db(qid, mode='uid')
if not isinstance(uid, str) or '未找到绑定的UID' in uid:
await session.send(UID_HINT)
return
logger.info('开始执行[导入抽卡记录]')
im = await import_gachalogs(url, uid)
await session.send(im, at_sender=True)
@sv.on_fullmatch('导出抽卡记录')
async def export_gacha_log_info(bot: HoshinoBot, ev: CQEvent):
logger.info('开始执行[导出抽卡记录]')
qid = int(ev.sender['user_id'])
gid = int(ev.group_id)
uid = await select_db(qid, mode='uid')
bot = get_bot()
if not isinstance(uid, str) or '未找到绑定的UID' in uid:
await bot.send(ev, UID_HINT)
return
raw_data = await export_gachalogs(uid)
if raw_data['retcode'] == 'ok':
await bot.call_action(
action='upload_group_file',
group_id=gid,
name=raw_data['name'],
file=raw_data['url'],
)
logger.info(f'[导出抽卡记录] UID{uid}成功!')
await bot.send(ev, '上传成功!')
else:
logger.warning(f'[导出抽卡记录] UID{uid}失败!')
await bot.send(ev, '导出抽卡记录失败!')
@sv.on_fullmatch('抽卡记录')
async def send_gacha_log_card_info(bot: HoshinoBot, ev: CQEvent):
logger.info('开始执行[抽卡记录]')
if ev.sender:
qid = int(ev.sender['user_id'])
else:
return
uid = await select_db(qid, mode='uid')
if isinstance(uid, str):
im = await draw_gachalogs_img(uid)
if isinstance(im, bytes):
im = await convert_img(im)
await bot.send(ev, im)
else:
await bot.send(ev, im)
else:
await bot.send(ev, UID_HINT)
@sv.on_fullmatch('刷新抽卡记录')
async def send_daily_info(bot: HoshinoBot, ev: CQEvent):
logger.info('开始执行[刷新抽卡记录]')
if ev.sender:
qid = int(ev.sender['user_id'])
else:
return
uid = await select_db(qid, mode='uid')
if isinstance(uid, str):
im = await save_gachalogs(uid)
await bot.send(ev, im)
else:
await bot.send(ev, UID_HINT)