✨ 移除saa依赖

This commit is contained in:
HibiKier
2024-08-11 15:57:33 +08:00
parent 71f3b031d4
commit d0792e0a1c
68 changed files with 1722 additions and 1528 deletions
+11 -7
View File
@@ -13,11 +13,11 @@ from nonebot.permission import SUPERUSER
from nonebot.plugin import PluginMetadata
from nonebot.typing import T_Handler
from nonebot_plugin_apscheduler import scheduler
from nonebot_plugin_saa import Text
from nonebot_plugin_session import EventSession
from zhenxun.configs.config import Config
from zhenxun.configs.utils import PluginExtraData
from zhenxun.utils.message import MessageUtils
from .handles.azur_handle import AzurHandle
from .handles.ba_handle import BaHandle
@@ -165,13 +165,17 @@ def create_matchers():
try:
num = int(cn2an(num, mode="smart"))
except ValueError:
await Text("必!须!是!数!字!").finish(reply=True)
await MessageUtils.build_message("必!须!是!数!字!").finish(
reply_to=True
)
if unit == "井":
num *= game.max_count
if num < 1:
await Text("虚空抽卡???").finish(reply=True)
await MessageUtils.build_message("虚空抽卡???").finish(reply_to=True)
elif num > game.max_count:
await Text("一井都满不足不了你嘛!快爬开!").finish(reply=True)
await MessageUtils.build_message(
"一井都满不足不了你嘛!快爬开!"
).finish(reply_to=True)
pool_name = (
pool_name.replace("池", "")
.replace("武器", "arms")
@@ -192,7 +196,7 @@ def create_matchers():
)
except:
logger.warning(traceback.format_exc())
await Text("出错了...").finish(reply=True)
await MessageUtils.build_message("出错了...").finish(reply_to=True)
await res.send()
return handler
@@ -215,9 +219,9 @@ def create_matchers():
def reset_handler(game: Game) -> T_Handler:
async def handler(matcher: Matcher, session: EventSession):
if not session.id1:
await Text("获取用户id失败...").finish()
await MessageUtils.build_message("获取用户id失败...").finish()
if game.handle.reset_count(session.id1):
await Text("重置成功!").send()
await MessageUtils.build_message("重置成功!").send()
return handler
@@ -4,12 +4,13 @@ from urllib.parse import unquote
import dateparser
import ujson as json
from lxml import etree
from nonebot_plugin_saa import Image, MessageFactory, Text
from nonebot_plugin_alconna import UniMessage
from PIL import ImageDraw
from pydantic import ValidationError
from zhenxun.services.log import logger
from zhenxun.utils.image_utils import BuildImage
from zhenxun.utils.message import MessageUtils
from ..config import draw_config
from ..util import cn2py, load_font, remove_prohibited_str
@@ -97,13 +98,13 @@ class AzurHandle(BaseHandle[AzurChar]):
)
return acquire_char
async def draw(self, count: int, **kwargs) -> MessageFactory:
async def draw(self, count: int, **kwargs) -> UniMessage:
index2card = self.get_cards(count, **kwargs)
cards = [card[0] for card in index2card]
up_list = [x.name for x in self.UP_EVENT.up_char] if self.UP_EVENT else []
result = self.format_result(index2card, **{**kwargs, "up_list": up_list})
gen_img = await self.generate_img(cards)
return MessageFactory([Image(gen_img.pic2bytes()), Text(result)])
return MessageUtils.build_message([gen_img.pic2bytes(), result])
async def generate_card_img(self, card: AzurChar) -> BuildImage:
sep_w = 5
@@ -298,10 +299,10 @@ class AzurHandle(BaseHandle[AzurChar]):
except Exception as e:
logger.warning(f"{self.game_name_cn}UP更新出错", e=e)
async def _reload_pool(self) -> MessageFactory | None:
async def _reload_pool(self) -> UniMessage | None:
await self.update_up_char()
self.load_up_char()
if self.UP_EVENT:
return MessageFactory(
[Text(f"重载成功!\n当前活动:{self.UP_EVENT.title}")]
return MessageUtils.build_message(
f"重载成功!\n当前活动:{self.UP_EVENT.title}"
)
@@ -61,8 +61,10 @@ class BaHandle(BaseHandle[BaChar]):
bar_h = 20
bar_w = 90
bg = BuildImage(img_w + sep_w * 2, img_h + font_h + sep_h * 2, color="#EFF2F5")
img_path = str(self.img_path / f"{cn2py(card.name)}.png")
img = BuildImage(img_w, img_h, background=img_path)
img_path = self.img_path / f"{cn2py(card.name)}.png"
img = BuildImage(
img_w, img_h, background=img_path if img_path.exists() else None
)
bar = BuildImage(bar_w, bar_h, color="#6495ED")
await bg.paste(img, (sep_w, sep_h))
await bg.paste(bar, (sep_w, img_h - bar_h + sep_h))
@@ -7,14 +7,14 @@ from typing import Generic, TypeVar
import aiohttp
import anyio
import ujson as json
from nonebot_plugin_saa import Image as SaaImage
from nonebot_plugin_saa import MessageFactory, Text
from nonebot_plugin_alconna import UniMessage
from PIL import Image
from pydantic import BaseModel, Extra
from zhenxun.configs.path_config import DATA_PATH
from zhenxun.services.log import logger
from zhenxun.utils.image_utils import BuildImage
from zhenxun.utils.message import MessageUtils
from ..config import DRAW_PATH, draw_config
from ..util import circled_number, cn2py
@@ -64,12 +64,12 @@ class BaseHandle(Generic[TC]):
self.up_path.mkdir(parents=True, exist_ok=True)
self.data_files: list[str] = [f"{self.game_name}.json"]
async def draw(self, count: int, **kwargs) -> MessageFactory:
async def draw(self, count: int, **kwargs) -> UniMessage:
index2card = self.get_cards(count, **kwargs)
cards = [card[0] for card in index2card]
result = self.format_result(index2card)
gen_img = await self.generate_img(cards)
return MessageFactory([SaaImage(gen_img.pic2bytes()), Text(result)])
return MessageUtils.build_message([gen_img, result])
# 抽取卡池
def get_card(self, **kwargs) -> TC:
@@ -280,10 +280,10 @@ class BaseHandle(Generic[TC]):
)
return False
async def _reload_pool(self) -> MessageFactory | None:
async def _reload_pool(self) -> UniMessage | None:
return None
async def reload_pool(self) -> MessageFactory | None:
async def reload_pool(self) -> UniMessage | None:
try:
async with self.client() as session:
self.session = session
@@ -5,13 +5,13 @@ from urllib.parse import unquote
import dateparser
import ujson as json
from lxml import etree
from nonebot_plugin_saa import Image as SaaImage
from nonebot_plugin_saa import MessageFactory, Text
from nonebot_plugin_alconna import UniMessage
from PIL import Image, ImageDraw
from pydantic import ValidationError
from zhenxun.services.log import logger
from zhenxun.utils.image_utils import BuildImage
from zhenxun.utils.message import MessageUtils
from ..config import draw_config
from ..count_manager import GenshinCountManager
@@ -218,7 +218,7 @@ class GenshinHandle(BaseHandle[GenshinData]):
async def draw(
self, count: int, user_id: int, pool_name: str = "", **kwargs
) -> Text | MessageFactory:
) -> UniMessage:
card_index = 0
if "1" in pool_name:
card_index = 1
@@ -228,7 +228,7 @@ class GenshinHandle(BaseHandle[GenshinData]):
up_event = None
if pool_name == "char":
if card_index == 1 and len(self.UP_CHAR_LIST) == 1:
return Text("当前没有第二个角色UP池")
return MessageUtils.build_message("当前没有第二个角色UP池")
up_event = self.UP_CHAR_LIST[card_index]
elif pool_name == "arms":
up_event = self.UP_ARMS
@@ -249,7 +249,7 @@ class GenshinHandle(BaseHandle[GenshinData]):
(0, img.height + 10),
"【五星:0.6%,四星:5.1%,第72抽开始五星概率每抽加0.585%】",
)
return MessageFactory([Text(pool_info), SaaImage(bk.pic2bytes()), Text(result)])
return MessageUtils.build_message([pool_info, bk, result])
def _init_data(self):
self.ALL_CHAR = [
@@ -439,27 +439,23 @@ class GenshinHandle(BaseHandle[GenshinData]):
self.count_manager.reset(user_id)
return True
async def _reload_pool(self) -> MessageFactory | None:
async def _reload_pool(self) -> UniMessage | None:
await self.update_up_char()
self.load_up_char()
if self.UP_CHAR_LIST and self.UP_ARMS:
if len(self.UP_CHAR_LIST) > 1:
return MessageFactory(
return MessageUtils.build_message(
[
Text(
f"重载成功!\n当前UP池子:{self.UP_CHAR_LIST[0].title} & {self.UP_CHAR_LIST[1].title} & {self.UP_ARMS.title}"
),
Image(self.UP_CHAR_LIST[0].pool_img),
Image(self.UP_CHAR_LIST[1].pool_img),
Image(self.UP_ARMS.pool_img),
f"重载成功!\n当前UP池子:{self.UP_CHAR_LIST[0].title} & {self.UP_CHAR_LIST[1].title} & {self.UP_ARMS.title}",
self.UP_CHAR_LIST[0].pool_img,
self.UP_CHAR_LIST[1].pool_img,
self.UP_ARMS.pool_img,
]
)
return MessageFactory(
return UniMessage(
[
Text(
f"重载成功!\n当前UP池子:{char_title} & {self.UP_ARMS.title}"
),
Image(self.UP_CHAR_LIST[0].pool_img),
Image(self.UP_ARMS.pool_img),
f"重载成功!\n当前UP池子:{char_title} & {self.UP_ARMS.title}",
self.UP_CHAR_LIST[0].pool_img,
self.UP_ARMS.pool_img,
]
)
@@ -6,12 +6,13 @@ from urllib.parse import unquote
import dateparser
import ujson as json
from lxml import etree
from nonebot_plugin_saa import Image, MessageFactory, Text
from nonebot_plugin_alconna import UniMessage
from PIL import ImageDraw
from pydantic import ValidationError
from zhenxun.services.log import logger
from zhenxun.utils.image_utils import BuildImage
from zhenxun.utils.message import MessageUtils
from ..config import draw_config
from ..util import cn2py, load_font, remove_prohibited_str
@@ -132,7 +133,7 @@ class GuardianHandle(BaseHandle[GuardianData]):
info = f"当前up池:{up_event.title}\n{info}"
return info.strip()
async def draw(self, count: int, pool_name: str, **kwargs) -> MessageFactory:
async def draw(self, count: int, pool_name: str, **kwargs) -> UniMessage:
index2card = self.get_cards(count, pool_name)
cards = [card[0] for card in index2card]
up_event = self.UP_CHAR if pool_name == "char" else self.UP_ARMS
@@ -140,7 +141,7 @@ class GuardianHandle(BaseHandle[GuardianData]):
result = self.format_result(index2card, up_list=up_list)
pool_info = self.format_pool_info(pool_name)
img = await self.generate_img(cards)
return MessageFactory([Text(pool_info), Image(img.pic2bytes()), Text(result)])
return MessageUtils.build_message([pool_info, img, result])
async def generate_card_img(self, card: GuardianData) -> BuildImage:
sep_w = 1
@@ -390,10 +391,10 @@ class GuardianHandle(BaseHandle[GuardianData]):
except Exception as e:
logger.warning(f"{self.game_name_cn}UP更新出错 {type(e)}:{e}")
async def _reload_pool(self) -> MessageFactory | None:
async def _reload_pool(self) -> UniMessage | None:
await self.update_up_char()
self.load_up_char()
if self.UP_CHAR and self.UP_ARMS:
return MessageFactory(
[Text(f"重载成功!\n当前UP池子:{self.UP_CHAR.title}")]
return MessageUtils.build_message(
f"重载成功!\n当前UP池子:{self.UP_CHAR.title}"
)
@@ -7,12 +7,13 @@ import dateparser
import ujson as json
from bs4 import BeautifulSoup
from lxml import etree
from nonebot_plugin_saa import Image, MessageFactory, Text
from nonebot_plugin_alconna import UniMessage
from PIL import ImageDraw
from pydantic import ValidationError
from zhenxun.services.log import logger
from zhenxun.utils.image_utils import BuildImage
from zhenxun.utils.message import MessageUtils
from ..config import draw_config
from ..util import cn2py, load_font, remove_prohibited_str
@@ -125,7 +126,7 @@ class PrettyHandle(BaseHandle[PrettyData]):
info = f"当前up池:{up_event.title}\n{info}"
return info.strip()
async def draw(self, count: int, pool_name: str, **kwargs) -> MessageFactory:
async def draw(self, count: int, pool_name: str, **kwargs) -> UniMessage:
pool_name = "char" if not pool_name else pool_name
index2card = self.get_cards(count, pool_name)
cards = [card[0] for card in index2card]
@@ -134,7 +135,7 @@ class PrettyHandle(BaseHandle[PrettyData]):
result = self.format_result(index2card, up_list=up_list)
pool_info = self.format_pool_info(pool_name)
img = await self.generate_img(cards)
return MessageFactory([Text(pool_info), Image(img.pic2bytes()), Text(result)])
return MessageUtils.build_message([pool_info, img, result])
async def generate_card_img(self, card: PrettyData) -> BuildImage:
if isinstance(card, PrettyChar):
@@ -409,14 +410,14 @@ class PrettyHandle(BaseHandle[PrettyData]):
except Exception as e:
logger.warning(f"{self.game_name_cn}UP更新出错", e=e)
async def _reload_pool(self) -> MessageFactory | None:
async def _reload_pool(self) -> UniMessage | None:
await self.update_up_char()
self.load_up_char()
if self.UP_CHAR and self.UP_CARD:
return MessageFactory(
return MessageUtils.build_message(
[
Text(f"重载成功!\n当前UP池子:{self.UP_CHAR.title}"),
Image(self.UP_CHAR.pool_img),
Image(self.UP_CARD.pool_img),
f"重载成功!\n当前UP池子:{self.UP_CHAR.title}",
self.UP_CHAR.pool_img,
self.UP_CARD.pool_img,
]
)
@@ -7,12 +7,13 @@ import dateparser
import ujson as json
from lxml import etree
from lxml.etree import _Element
from nonebot_plugin_saa import Image, MessageFactory, Text
from nonebot_plugin_alconna import UniMessage
from PIL import ImageDraw
from pydantic import ValidationError
from zhenxun.services.log import logger
from zhenxun.utils.image_utils import BuildImage
from zhenxun.utils.message import MessageUtils
from ..config import draw_config
from ..util import cn2py, load_font, remove_prohibited_str
@@ -102,7 +103,7 @@ class PrtsHandle(BaseHandle[Operator]):
info = f"当前up池: {self.UP_EVENT.title}\n{info}"
return info.strip()
async def draw(self, count: int, **kwargs) -> MessageFactory:
async def draw(self, count: int, **kwargs) -> UniMessage:
index2card = self.get_cards(count)
"""这里cards修复了抽卡图文不符的bug"""
cards = [card[0] for card in index2card]
@@ -110,7 +111,7 @@ class PrtsHandle(BaseHandle[Operator]):
result = self.format_result(index2card, up_list=up_list)
pool_info = self.format_pool_info()
img = await self.generate_img(cards)
return MessageFactory([Text(pool_info), Image(img.pic2bytes()), Text(result)])
return MessageUtils.build_message([pool_info, img, result])
async def generate_card_img(self, card: Operator) -> BuildImage:
sep_w = 5
@@ -331,13 +332,13 @@ class PrtsHandle(BaseHandle[Operator]):
)
break
async def _reload_pool(self) -> MessageFactory | None:
async def _reload_pool(self) -> UniMessage | None:
await self.update_up_char()
self.load_up_char()
if self.UP_EVENT:
return MessageFactory(
return MessageUtils.build_message(
[
Text(f"重载成功!\n当前UP池子:{self.UP_EVENT.title}"),
Image(self.UP_EVENT.pool_img),
f"重载成功!\n当前UP池子:{self.UP_EVENT.title}",
self.UP_EVENT.pool_img,
]
)