mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-11 15:00:00 +08:00
✨ 移除saa依赖
This commit is contained in:
@@ -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,
|
||||
]
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user