mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-06-05 19:36:43 +08:00
* 🎨 修改 nonebot_bison 目录位置 * auto fix by pre-commit hooks * 🚚 fix frontend build target * 🚚 use soft link * Revert "🚚 use soft link" This reverts commit de21f79d5ae1bd5515b04f42a4138cb25ddf3e62. * 🚚 modify dockerfile --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: felinae98 <731499577@qq.com>
56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
from abc import abstractmethod
|
|
from dataclasses import dataclass, field
|
|
from functools import reduce
|
|
from typing import Optional
|
|
|
|
from nonebot.adapters.onebot.v11.message import Message, MessageSegment
|
|
|
|
from ..plugin_config import plugin_config
|
|
|
|
|
|
@dataclass
|
|
class BasePost:
|
|
@abstractmethod
|
|
async def generate_text_messages(self) -> list[MessageSegment]:
|
|
"Generate Message list from this instance"
|
|
...
|
|
|
|
@abstractmethod
|
|
async def generate_pic_messages(self) -> list[MessageSegment]:
|
|
"Generate Message list from this instance with `use_pic`"
|
|
...
|
|
|
|
|
|
@dataclass
|
|
class OptionalMixin:
|
|
# Because of https://stackoverflow.com/questions/51575931/class-inheritance-in-python-3-7-dataclasses
|
|
|
|
override_use_pic: Optional[bool] = None
|
|
compress: bool = False
|
|
extra_msg: list[Message] = field(default_factory=list)
|
|
|
|
def _use_pic(self):
|
|
if not self.override_use_pic is None:
|
|
return self.override_use_pic
|
|
return plugin_config.bison_use_pic
|
|
|
|
|
|
@dataclass
|
|
class AbstractPost(OptionalMixin, BasePost):
|
|
async def generate_messages(self) -> list[Message]:
|
|
if self._use_pic():
|
|
msg_segments = await self.generate_pic_messages()
|
|
else:
|
|
msg_segments = await self.generate_text_messages()
|
|
if msg_segments:
|
|
if self.compress:
|
|
msgs = [reduce(lambda x, y: x.append(y), msg_segments, Message())]
|
|
else:
|
|
msgs = list(
|
|
map(lambda msg_segment: Message([msg_segment]), msg_segments)
|
|
)
|
|
else:
|
|
msgs = []
|
|
msgs.extend(self.extra_msg)
|
|
return msgs
|