mirror of
https://github.com/PaiGramTeam/PamGram.git
synced 2024-11-22 06:17:54 +00:00
🎨 提高代码质量
This commit is contained in:
parent
70eba45f13
commit
ec8175eea2
@ -23,7 +23,6 @@ from telegram.ext.filters import StatusUpdate
|
|||||||
|
|
||||||
from core.config import BotConfig, config # pylint: disable=W0611
|
from core.config import BotConfig, config # pylint: disable=W0611
|
||||||
from core.error import ServiceNotFoundError
|
from core.error import ServiceNotFoundError
|
||||||
|
|
||||||
# noinspection PyProtectedMember
|
# noinspection PyProtectedMember
|
||||||
from core.plugin import Plugin, _Plugin
|
from core.plugin import Plugin, _Plugin
|
||||||
from core.service import Service
|
from core.service import Service
|
||||||
@ -208,7 +207,7 @@ class Bot:
|
|||||||
getattr(genshin.utility.extdb, i).replace("githubusercontent.com", "fastgit.org"),
|
getattr(genshin.utility.extdb, i).replace("githubusercontent.com", "fastgit.org"),
|
||||||
)
|
)
|
||||||
await genshin.utility.update_characters_enka()
|
await genshin.utility.update_characters_enka()
|
||||||
except Exception as exc:
|
except Exception as exc: # pylint: disable=W0703
|
||||||
logger.error("初始化 genshin.py 相关资源失败")
|
logger.error("初始化 genshin.py 相关资源失败")
|
||||||
logger.exception(exc)
|
logger.exception(exc)
|
||||||
else:
|
else:
|
||||||
|
@ -10,6 +10,10 @@ from core.bot import bot
|
|||||||
from utils.log import logger
|
from utils.log import logger
|
||||||
|
|
||||||
|
|
||||||
|
class _QuerySelectorNotFound(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class TemplateService:
|
class TemplateService:
|
||||||
def __init__(self, browser: AioBrowser, template_package_name: str = "resources", cache_dir_name: str = "cache"):
|
def __init__(self, browser: AioBrowser, template_package_name: str = "resources", cache_dir_name: str = "cache"):
|
||||||
self._browser = browser
|
self._browser = browser
|
||||||
@ -89,10 +93,12 @@ class TemplateService:
|
|||||||
if query_selector:
|
if query_selector:
|
||||||
try:
|
try:
|
||||||
card = await page.query_selector(query_selector)
|
card = await page.query_selector(query_selector)
|
||||||
assert card
|
if not card:
|
||||||
|
raise _QuerySelectorNotFound
|
||||||
clip = await card.bounding_box()
|
clip = await card.bounding_box()
|
||||||
assert clip
|
if not clip:
|
||||||
except AssertionError:
|
raise _QuerySelectorNotFound
|
||||||
|
except _QuerySelectorNotFound:
|
||||||
logger.warning(f"未找到 {query_selector} 元素")
|
logger.warning(f"未找到 {query_selector} 元素")
|
||||||
png_data = await page.screenshot(clip=clip, full_page=full_page)
|
png_data = await page.screenshot(clip=clip, full_page=full_page)
|
||||||
await page.close()
|
await page.close()
|
||||||
|
@ -26,7 +26,7 @@ class WikiCache:
|
|||||||
# noinspection PyBroadException
|
# noinspection PyBroadException
|
||||||
try:
|
try:
|
||||||
result = json.loads(await self.client.get(qname))
|
result = json.loads(await self.client.get(qname))
|
||||||
except Exception:
|
except Exception: # pylint: disable=W0703
|
||||||
result = []
|
result = []
|
||||||
if isinstance(result, list) and len(result) > 0:
|
if isinstance(result, list) and len(result) > 0:
|
||||||
for num, item in enumerate(result):
|
for num, item in enumerate(result):
|
||||||
|
@ -258,7 +258,8 @@ class GachaLog:
|
|||||||
if four_star < five_star:
|
if four_star < five_star:
|
||||||
return False, "检测到您将要导入的抽卡记录中五星数量过多,可能是由于文件错误导致的,请检查后重新导入。"
|
return False, "检测到您将要导入的抽卡记录中五星数量过多,可能是由于文件错误导致的,请检查后重新导入。"
|
||||||
return True, ""
|
return True, ""
|
||||||
except Exception:
|
except Exception as exc: # pylint: disable=W0703
|
||||||
|
logger.warning(f"抽卡记录数据验证失败 {repr(exc)}")
|
||||||
return False, "导入失败,数据格式错误"
|
return False, "导入失败,数据格式错误"
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -162,6 +162,7 @@ class SetUserCookies(Plugin.Conversation, BasePlugin.Conversation):
|
|||||||
@handler.message(filters=filters.TEXT & ~filters.COMMAND, block=True)
|
@handler.message(filters=filters.TEXT & ~filters.COMMAND, block=True)
|
||||||
@error_callable
|
@error_callable
|
||||||
async def check_captcha(self, update: Update, context: CallbackContext) -> int:
|
async def check_captcha(self, update: Update, context: CallbackContext) -> int:
|
||||||
|
user = update.effective_user
|
||||||
message = update.effective_message
|
message = update.effective_message
|
||||||
if message.text == "退出":
|
if message.text == "退出":
|
||||||
await message.reply_text("退出任务", reply_markup=ReplyKeyboardRemove())
|
await message.reply_text("退出任务", reply_markup=ReplyKeyboardRemove())
|
||||||
@ -183,7 +184,8 @@ class SetUserCookies(Plugin.Conversation, BasePlugin.Conversation):
|
|||||||
await message.reply_text("登录失败:可能是验证码错误,注意不要在登录页面使用掉验证码,如果验证码已经使用,请重新获取验证码!")
|
await message.reply_text("登录失败:可能是验证码错误,注意不要在登录页面使用掉验证码,如果验证码已经使用,请重新获取验证码!")
|
||||||
return ConversationHandler.END
|
return ConversationHandler.END
|
||||||
await client.get_s_token()
|
await client.get_s_token()
|
||||||
except Exception:
|
except Exception as exc: # pylint: disable=W0703
|
||||||
|
logger.error(f"用户 {user.full_name}[{user.id}] 登录失败 {repr(exc)}")
|
||||||
await message.reply_text("登录失败:米游社返回了错误的数据,请稍后再试!")
|
await message.reply_text("登录失败:米游社返回了错误的数据,请稍后再试!")
|
||||||
return ConversationHandler.END
|
return ConversationHandler.END
|
||||||
add_user_command_data.sign_in_client = client
|
add_user_command_data.sign_in_client = client
|
||||||
@ -198,7 +200,8 @@ class SetUserCookies(Plugin.Conversation, BasePlugin.Conversation):
|
|||||||
if not success:
|
if not success:
|
||||||
await message.reply_text("登录失败:可能是验证码错误,注意不要在登录页面使用掉验证码,如果验证码已经使用,请重新获取验证码!")
|
await message.reply_text("登录失败:可能是验证码错误,注意不要在登录页面使用掉验证码,如果验证码已经使用,请重新获取验证码!")
|
||||||
return ConversationHandler.END
|
return ConversationHandler.END
|
||||||
except Exception:
|
except Exception as exc: # pylint: disable=W0703
|
||||||
|
logger.error(f"用户 {user.full_name}[{user.id}] 登录失败 {repr(exc)}")
|
||||||
await message.reply_text("登录失败:米游社返回了错误的数据,请稍后再试!")
|
await message.reply_text("登录失败:米游社返回了错误的数据,请稍后再试!")
|
||||||
return ConversationHandler.END
|
return ConversationHandler.END
|
||||||
add_user_command_data.cookies = client.cookie
|
add_user_command_data.cookies = client.cookie
|
||||||
|
@ -367,7 +367,7 @@ class DailyMaterial(Plugin, BasePlugin):
|
|||||||
# noinspection PyUnresolvedReferences
|
# noinspection PyUnresolvedReferences
|
||||||
result[stage][day][1] = list(set(result[stage][day][1])) # 去重
|
result[stage][day][1] = list(set(result[stage][day][1])) # 去重
|
||||||
async with async_open(DATA_FILE_PATH, "w", encoding="utf-8") as file:
|
async with async_open(DATA_FILE_PATH, "w", encoding="utf-8") as file:
|
||||||
await file.write(json.dumps(result)) # pylint: disable=PY-W0079
|
await file.write(json.dumps(result)) # skipcq: PY-W0079
|
||||||
logger.info("每日素材刷新成功")
|
logger.info("每日素材刷新成功")
|
||||||
break
|
break
|
||||||
except (HTTPError, SSLZeroReturnError):
|
except (HTTPError, SSLZeroReturnError):
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
import json
|
import json
|
||||||
import genshin
|
|
||||||
|
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
|
import genshin
|
||||||
from genshin.models import BannerType
|
from genshin.models import BannerType
|
||||||
from telegram import Update, User, Message, Document
|
from telegram import Update, User, Message, Document
|
||||||
from telegram.constants import ChatAction
|
from telegram.constants import ChatAction
|
||||||
@ -10,8 +9,8 @@ from telegram.ext import CallbackContext, CommandHandler, MessageHandler, filter
|
|||||||
|
|
||||||
from core.base.assets import AssetsService
|
from core.base.assets import AssetsService
|
||||||
from core.baseplugin import BasePlugin
|
from core.baseplugin import BasePlugin
|
||||||
from core.cookies.error import CookiesNotFoundError
|
|
||||||
from core.cookies import CookiesService
|
from core.cookies import CookiesService
|
||||||
|
from core.cookies.error import CookiesNotFoundError
|
||||||
from core.plugin import Plugin, handler, conversation
|
from core.plugin import Plugin, handler, conversation
|
||||||
from core.template import TemplateService
|
from core.template import TemplateService
|
||||||
from core.user import UserService
|
from core.user import UserService
|
||||||
@ -87,8 +86,10 @@ class GachaLog(Plugin.Conversation, BasePlugin.Conversation):
|
|||||||
# bytesio to json
|
# bytesio to json
|
||||||
data = data.getvalue().decode("utf-8")
|
data = data.getvalue().decode("utf-8")
|
||||||
data = json.loads(data)
|
data = json.loads(data)
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
await message.reply_text("文件解析失败,请检查文件编码是否正确或符合 UIGF 标准")
|
||||||
|
return
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
if not isinstance(exc, UnicodeDecodeError):
|
|
||||||
logger.error(f"文件解析失败:{repr(exc)}")
|
logger.error(f"文件解析失败:{repr(exc)}")
|
||||||
await message.reply_text("文件解析失败,请检查文件是否符合 UIGF 标准")
|
await message.reply_text("文件解析失败,请检查文件是否符合 UIGF 标准")
|
||||||
return
|
return
|
||||||
@ -97,7 +98,7 @@ class GachaLog(Plugin.Conversation, BasePlugin.Conversation):
|
|||||||
await message.reply_chat_action(ChatAction.TYPING)
|
await message.reply_chat_action(ChatAction.TYPING)
|
||||||
try:
|
try:
|
||||||
text = await self._refresh_user_data(user, data=data)
|
text = await self._refresh_user_data(user, data=data)
|
||||||
except Exception as exc:
|
except Exception as exc: # pylint: disable=W0703
|
||||||
logger.error(f"文件解析失败:{repr(exc)}")
|
logger.error(f"文件解析失败:{repr(exc)}")
|
||||||
text = "文件解析失败,请检查文件是否符合 UIGF 标准"
|
text = "文件解析失败,请检查文件是否符合 UIGF 标准"
|
||||||
await reply.edit_text(text)
|
await reply.edit_text(text)
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
from typing import Any, List, Tuple, Union
|
from typing import Any, List, Tuple, Union
|
||||||
|
|
||||||
from enkanetwork import (
|
from enkanetwork import (
|
||||||
Assets,
|
|
||||||
CharacterInfo,
|
CharacterInfo,
|
||||||
DigitType,
|
DigitType,
|
||||||
EnkaNetworkAPI,
|
EnkaNetworkAPI,
|
||||||
@ -123,7 +122,7 @@ class PlayerCards(Plugin, BasePlugin):
|
|||||||
await message.reply_text(f"角色展柜中未找到 {character_name}")
|
await message.reply_text(f"角色展柜中未找到 {character_name}")
|
||||||
return
|
return
|
||||||
await message.reply_chat_action(ChatAction.UPLOAD_PHOTO)
|
await message.reply_chat_action(ChatAction.UPLOAD_PHOTO)
|
||||||
pnd_data = await RenderTemplate(uid, characters, self.template_service).render()
|
pnd_data = await RenderTemplate(uid, characters, self.template_service).render() # pylint: disable=W0631
|
||||||
await message.reply_photo(pnd_data, filename=f"player_card_{uid}_{character_name}.png")
|
await message.reply_photo(pnd_data, filename=f"player_card_{uid}_{character_name}.png")
|
||||||
|
|
||||||
@handler(CallbackQueryHandler, pattern=r"^get_player_card\|", block=False)
|
@handler(CallbackQueryHandler, pattern=r"^get_player_card\|", block=False)
|
||||||
@ -162,7 +161,7 @@ class PlayerCards(Plugin, BasePlugin):
|
|||||||
return
|
return
|
||||||
await callback_query.answer(text="正在渲染图片中 请稍等 请不要重复点击按钮", show_alert=False)
|
await callback_query.answer(text="正在渲染图片中 请稍等 请不要重复点击按钮", show_alert=False)
|
||||||
await message.reply_chat_action(ChatAction.UPLOAD_PHOTO)
|
await message.reply_chat_action(ChatAction.UPLOAD_PHOTO)
|
||||||
pnd_data = await RenderTemplate(uid, characters, self.template_service).render()
|
pnd_data = await RenderTemplate(uid, characters, self.template_service).render() # pylint: disable=W0631
|
||||||
await message.edit_media(InputMediaPhoto(pnd_data, filename=f"player_card_{uid}_{result}.png"))
|
await message.edit_media(InputMediaPhoto(pnd_data, filename=f"player_card_{uid}_{result}.png"))
|
||||||
|
|
||||||
|
|
||||||
|
@ -130,7 +130,8 @@ class Post(Plugin.Conversation, BasePlugin):
|
|||||||
return await self.delete_photo(update, context)
|
return await self.delete_photo(update, context)
|
||||||
return ConversationHandler.END
|
return ConversationHandler.END
|
||||||
|
|
||||||
async def delete_photo(self, update: Update, context: CallbackContext) -> int:
|
@staticmethod
|
||||||
|
async def delete_photo(update: Update, context: CallbackContext) -> int:
|
||||||
post_handler_data: PostHandlerData = context.chat_data.get("post_handler_data")
|
post_handler_data: PostHandlerData = context.chat_data.get("post_handler_data")
|
||||||
photo_len = len(post_handler_data.post_images)
|
photo_len = len(post_handler_data.post_images)
|
||||||
message = update.effective_message
|
message = update.effective_message
|
||||||
@ -159,7 +160,8 @@ class Post(Plugin.Conversation, BasePlugin):
|
|||||||
await message.reply_text("请选择你的操作", reply_markup=self.MENU_KEYBOARD)
|
await message.reply_text("请选择你的操作", reply_markup=self.MENU_KEYBOARD)
|
||||||
return CHECK_COMMAND
|
return CHECK_COMMAND
|
||||||
|
|
||||||
async def get_channel(self, update: Update, _: CallbackContext) -> int:
|
@staticmethod
|
||||||
|
async def get_channel(update: Update, _: CallbackContext) -> int:
|
||||||
message = update.effective_message
|
message = update.effective_message
|
||||||
reply_keyboard = []
|
reply_keyboard = []
|
||||||
try:
|
try:
|
||||||
@ -197,7 +199,8 @@ class Post(Plugin.Conversation, BasePlugin):
|
|||||||
await message.reply_text("请核对你修改的信息", reply_markup=ReplyKeyboardMarkup(reply_keyboard, True, True))
|
await message.reply_text("请核对你修改的信息", reply_markup=ReplyKeyboardMarkup(reply_keyboard, True, True))
|
||||||
return SEND_POST
|
return SEND_POST
|
||||||
|
|
||||||
async def add_tags(self, update: Update, _: CallbackContext) -> int:
|
@staticmethod
|
||||||
|
async def add_tags(update: Update, _: CallbackContext) -> int:
|
||||||
message = update.effective_message
|
message = update.effective_message
|
||||||
await message.reply_text("请回复添加的tag名称,如果要添加多个tag请以空格作为分隔符,不用添加 # 作为开头,推送时程序会自动添加")
|
await message.reply_text("请回复添加的tag名称,如果要添加多个tag请以空格作为分隔符,不用添加 # 作为开头,推送时程序会自动添加")
|
||||||
return GET_TAGS
|
return GET_TAGS
|
||||||
@ -214,7 +217,8 @@ class Post(Plugin.Conversation, BasePlugin):
|
|||||||
await message.reply_text("请选择你的操作", reply_markup=self.MENU_KEYBOARD)
|
await message.reply_text("请选择你的操作", reply_markup=self.MENU_KEYBOARD)
|
||||||
return CHECK_COMMAND
|
return CHECK_COMMAND
|
||||||
|
|
||||||
async def edit_text(self, update: Update, _: CallbackContext) -> int:
|
@staticmethod
|
||||||
|
async def edit_text(update: Update, _: CallbackContext) -> int:
|
||||||
message = update.effective_message
|
message = update.effective_message
|
||||||
await message.reply_text("请回复替换的文本")
|
await message.reply_text("请回复替换的文本")
|
||||||
return GET_TEXT
|
return GET_TEXT
|
||||||
|
@ -53,7 +53,7 @@ class ErrorHandler(Plugin):
|
|||||||
try:
|
try:
|
||||||
async with aiofiles.open(log_file, mode="w+", encoding="utf-8") as f:
|
async with aiofiles.open(log_file, mode="w+", encoding="utf-8") as f:
|
||||||
await f.write(error_text)
|
await f.write(error_text)
|
||||||
except Exception as exc:
|
except Exception as exc: # pylint: disable=W0703
|
||||||
logger.error("保存日记失败")
|
logger.error("保存日记失败")
|
||||||
logger.exception(exc)
|
logger.exception(exc)
|
||||||
try:
|
try:
|
||||||
|
@ -430,7 +430,7 @@ class Logger(logging.Logger):
|
|||||||
stacklevel: int = 1,
|
stacklevel: int = 1,
|
||||||
extra: Optional[Mapping[str, Any]] = None,
|
extra: Optional[Mapping[str, Any]] = None,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
) -> None:
|
) -> None: # pylint: disable=W1113
|
||||||
super(Logger, self).exception(
|
super(Logger, self).exception(
|
||||||
"" if msg is NOT_SET else msg,
|
"" if msg is NOT_SET else msg,
|
||||||
*args,
|
*args,
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import aiohttp
|
from typing import Optional
|
||||||
|
|
||||||
|
import aiohttp # pylint: disable=W0406
|
||||||
|
|
||||||
from utils.patch.methods import patch, patchable
|
from utils.patch.methods import patch, patchable
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
|
|
||||||
class AioHttpTimeoutException(asyncio.TimeoutError):
|
class AioHttpTimeoutException(asyncio.TimeoutError):
|
||||||
|
Loading…
Reference in New Issue
Block a user