🔧 批量修复插件异常

This commit is contained in:
xtaodada 2022-08-05 22:45:54 +08:00
parent a4b019a7d7
commit a714fa3ebd
Signed by: xtaodada
GPG Key ID: 4CBB3F4FA8C85659
7 changed files with 32 additions and 31 deletions

View File

@ -17,12 +17,12 @@ class CookiesRepository:
async with self.mysql.Session() as session: async with self.mysql.Session() as session:
session = cast(AsyncSession, session) session = cast(AsyncSession, session)
if region == RegionEnum.HYPERION: if region == RegionEnum.HYPERION:
db_data = HyperionCookie(user_id=user_id, cookie=cookies) db_data = HyperionCookie(user_id=user_id, cookies=cookies)
elif region == RegionEnum.HOYOLAB: elif region == RegionEnum.HOYOLAB:
db_data = HoyolabCookie(user_id=user_id, cookie=cookies) db_data = HoyolabCookie(user_id=user_id, cookies=cookies)
else: else:
raise RegionNotFoundError(region.name) raise RegionNotFoundError(region.name)
await session.add(db_data) session.add(db_data)
await session.commit() await session.commit()
async def update_cookies(self, user_id: int, cookies: dict, region: RegionEnum): async def update_cookies(self, user_id: int, cookies: dict, region: RegionEnum):
@ -30,26 +30,19 @@ class CookiesRepository:
session = cast(AsyncSession, session) session = cast(AsyncSession, session)
if region == RegionEnum.HYPERION: if region == RegionEnum.HYPERION:
statement = select(HyperionCookie).where(HyperionCookie.user_id == user_id) statement = select(HyperionCookie).where(HyperionCookie.user_id == user_id)
results = await session.exec(statement)
db_cookies = results.one()[0]
if db_cookies is None:
raise CookiesNotFoundError(user_id)
db_cookies.cookies = cookies
session.add(db_cookies)
await session.commit()
await session.refresh(db_cookies)
elif region == RegionEnum.HOYOLAB: elif region == RegionEnum.HOYOLAB:
statement = select(HyperionCookie).where(HyperionCookie.user_id == user_id) statement = select(HoyolabCookie).where(HoyolabCookie.user_id == user_id)
results = await session.add(statement)
db_cookies = results.one()[0]
if db_cookies is None:
raise CookiesNotFoundError(user_id)
db_cookies.cookie = cookies
session.add(db_cookies)
await session.commit()
await session.refresh(db_cookies)
else: else:
raise RegionNotFoundError(region.name) raise RegionNotFoundError(region.name)
results = await session.exec(statement)
db_cookies = results.one()
if db_cookies is None:
raise CookiesNotFoundError(user_id)
db_cookies = db_cookies[0]
db_cookies.cookies = cookies
session.add(db_cookies)
await session.commit()
await session.refresh(db_cookies)
async def update_cookies_ex(self, cookies: Cookies, region: RegionEnum): async def update_cookies_ex(self, cookies: Cookies, region: RegionEnum):
async with self.mysql.Session() as session: async with self.mysql.Session() as session:

View File

@ -17,8 +17,10 @@ class UserRepository:
session = cast(AsyncSession, session) session = cast(AsyncSession, session)
statement = select(User).where(User.user_id == user_id) statement = select(User).where(User.user_id == user_id)
results = await session.exec(statement) results = await session.exec(statement)
user = results.first() if user := results.first():
return user[0] return user[0]
else:
raise UserNotFoundError(user_id)
async def update_user(self, user: User): async def update_user(self, user: User):
async with self.mysql.Session() as session: async with self.mysql.Session() as session:

View File

@ -90,7 +90,7 @@ class Abyss(BasePlugins):
abyss_data["most_played_list"].append(temp) abyss_data["most_played_list"].append(temp)
return abyss_data return abyss_data
@restricts @restricts()
@error_callable @error_callable
async def command_start(self, update: Update, context: CallbackContext) -> None: async def command_start(self, update: Update, context: CallbackContext) -> None:
user = update.effective_user user = update.effective_user

View File

@ -9,6 +9,7 @@ from telegram.helpers import escape_markdown
from apps.cookies.services import CookiesService from apps.cookies.services import CookiesService
from apps.user.models import User from apps.user.models import User
from apps.user.repositories import UserNotFoundError
from apps.user.services import UserService from apps.user.services import UserService
from logger import Log from logger import Log
from models.base import RegionEnum from models.base import RegionEnum
@ -77,7 +78,10 @@ class AddUser(BasePlugins):
async def check_server(self, update: Update, context: CallbackContext) -> int: async def check_server(self, update: Update, context: CallbackContext) -> int:
user = update.effective_user user = update.effective_user
add_user_command_data: AddUserCommandData = context.chat_data.get("add_user_command_data") add_user_command_data: AddUserCommandData = context.chat_data.get("add_user_command_data")
user_info = await self.user_service.get_user_by_id(user.id) try:
user_info = await self.user_service.get_user_by_id(user.id)
except UserNotFoundError:
user_info = None
add_user_command_data.user = user_info add_user_command_data.user = user_info
if update.message.text == "退出": if update.message.text == "退出":
await update.message.reply_text("退出任务", reply_markup=ReplyKeyboardRemove()) await update.message.reply_text("退出任务", reply_markup=ReplyKeyboardRemove())
@ -188,11 +192,11 @@ class AddUser(BasePlugins):
elif update.message.text == "确认": elif update.message.text == "确认":
if add_user_command_data.user is None: if add_user_command_data.user is None:
if add_user_command_data.region == RegionEnum.HYPERION: if add_user_command_data.region == RegionEnum.HYPERION:
user_db = User(user_id=user.id, yuanshen_id=add_user_command_data.game_uid, user_db = User(user_id=user.id, yuanshen_uid=add_user_command_data.game_uid,
region=add_user_command_data) region=add_user_command_data.region)
elif add_user_command_data.region == RegionEnum.HOYOLAB: elif add_user_command_data.region == RegionEnum.HOYOLAB:
user_db = User(user_id=user.id, genshin_id=add_user_command_data.game_uid, user_db = User(user_id=user.id, genshin_uid=add_user_command_data.game_uid,
region=add_user_command_data) region=add_user_command_data.region)
else: else:
await update.message.reply_text("数据错误") await update.message.reply_text("数据错误")
return ConversationHandler.END return ConversationHandler.END

View File

@ -1,5 +1,6 @@
import datetime import datetime
import os import os
from typing import Optional
from genshin import DataNotPublic from genshin import DataNotPublic
from telegram import Update from telegram import Update
@ -88,9 +89,9 @@ class DailyNote(BasePlugins):
{"width": 600, "height": 548}, full_page=False) {"width": 600, "height": 548}, full_page=False)
return png_data return png_data
@restricts @restricts()
@error_callable @error_callable
async def command_start(self, update: Update, context: CallbackContext) -> None: async def command_start(self, update: Update, context: CallbackContext) -> Optional[int]:
user = update.effective_user user = update.effective_user
message = update.message message = update.message
Log.info(f"用户 {user.full_name}[{user.id}] 查询游戏状态命令请求") Log.info(f"用户 {user.full_name}[{user.id}] 查询游戏状态命令请求")

View File

@ -27,6 +27,7 @@ def check_ledger_month(context: CallbackContext) -> int:
args = get_all_args(context) args = get_all_args(context)
if len(args) >= 1: if len(args) >= 1:
month = args[0] month = args[0]
elif isinstance(month, int):
pass pass
elif re_data := re.findall(r"\d+", month): elif re_data := re.findall(r"\d+", month):
month = int(re_data[0]) month = int(re_data[0])

View File

@ -74,7 +74,7 @@ async def get_genshin_client(user_id: int, user_service: UserService, cookies_se
client = genshin.Client(cookies=cookies.cookies, client = genshin.Client(cookies=cookies.cookies,
game=types.Game.GENSHIN, region=types.Region.OVERSEAS, lang="zh-cn", uid=uid) game=types.Game.GENSHIN, region=types.Region.OVERSEAS, lang="zh-cn", uid=uid)
else: else:
raise TypeError(f"region is not RegionEnum.NULL") raise TypeError("region is not RegionEnum.NULL")
return client return client