🎨 按ruff的检查调整程序代码

This commit is contained in:
Azide
2023-07-16 00:22:20 +08:00
committed by felinae98
parent f232ce4c3e
commit dba8f2a9cb
42 changed files with 414 additions and 757 deletions
+1 -1
View File
@@ -1,3 +1,3 @@
from .post import Post
__all__ = ["Post", "CustomPost"]
__all__ = ["Post"]
+6 -11
View File
@@ -1,7 +1,6 @@
from abc import abstractmethod
from dataclasses import dataclass, field
from functools import reduce
from typing import Optional
from abc import abstractmethod
from dataclasses import field, dataclass
from nonebot_plugin_saa import MessageFactory, MessageSegmentFactory
@@ -25,12 +24,12 @@ class BasePost:
class OptionalMixin:
# Because of https://stackoverflow.com/questions/51575931/class-inheritance-in-python-3-7-dataclasses
override_use_pic: Optional[bool] = None
override_use_pic: bool | None = None
compress: bool = False
extra_msg: list[MessageFactory] = field(default_factory=list)
def _use_pic(self):
if not self.override_use_pic is None:
if self.override_use_pic is not None:
return self.override_use_pic
return plugin_config.bison_use_pic
@@ -44,13 +43,9 @@ class AbstractPost(OptionalMixin, BasePost):
msg_segments = await self.generate_text_messages()
if msg_segments:
if self.compress:
msgs = [
reduce(lambda x, y: x.append(y), msg_segments, MessageFactory([]))
]
msgs = [reduce(lambda x, y: x.append(y), msg_segments, MessageFactory([]))]
else:
msgs = list(
map(lambda msg_segment: MessageFactory([msg_segment]), msg_segments)
)
msgs = [MessageFactory([msg_segment]) for msg_segment in msg_segments]
else:
msgs = []
msgs.extend(self.extra_msg)
+7 -11
View File
@@ -1,19 +1,17 @@
from dataclasses import dataclass, field
from typing import Optional
from dataclasses import field, dataclass
from nonebot.adapters.onebot.v11 import MessageSegment
from nonebot.log import logger
from nonebot.plugin import require
from nonebot_plugin_saa import Image, MessageFactory, MessageSegmentFactory, Text
from nonebot.adapters.onebot.v11 import MessageSegment
from nonebot_plugin_saa import Text, Image, MessageSegmentFactory
from .abstract_post import AbstractPost, BasePost
from .abstract_post import BasePost, AbstractPost
@dataclass
class _CustomPost(BasePost):
ms_factories: list[MessageSegmentFactory] = field(default_factory=list)
css_path: Optional[str] = None # 模板文件所用css路径
css_path: str | None = None # 模板文件所用css路径
async def generate_text_messages(self) -> list[MessageSegmentFactory]:
return self.ms_factories
@@ -31,15 +29,13 @@ class _CustomPost(BasePost):
for message_segment in self.ms_factories:
match message_segment:
case Text(data={"text": text}):
md += "{}<br>".format(text)
md += f"{text}<br>"
case Image(data={"image": image}):
# use onebot v11 to convert image into url
ob11_image = MessageSegment.image(image)
md += "![Image]({})\n".format(ob11_image.data["file"])
case _:
logger.warning(
"custom_post不支持处理类型:{}".format(type(message_segment))
)
logger.warning(f"custom_post不支持处理类型:{type(message_segment)}")
continue
return md
+20 -34
View File
@@ -1,30 +1,27 @@
from dataclasses import dataclass, field
from functools import reduce
from io import BytesIO
from typing import Optional, Union
from dataclasses import field, dataclass
import nonebot_plugin_saa as saa
from nonebot.log import logger
from nonebot_plugin_saa.utils import MessageFactory, MessageSegmentFactory
from PIL import Image
from nonebot.log import logger
import nonebot_plugin_saa as saa
from nonebot_plugin_saa.utils import MessageSegmentFactory
from ..utils import http_client, parse_text
from .abstract_post import AbstractPost, BasePost, OptionalMixin
from ..utils import parse_text, http_client
from .abstract_post import BasePost, AbstractPost
@dataclass
class _Post(BasePost):
target_type: str
text: str
url: Optional[str] = None
target_name: Optional[str] = None
pics: list[Union[str, bytes]] = field(default_factory=list)
url: str | None = None
target_name: str | None = None
pics: list[str | bytes] = field(default_factory=list)
_message: Optional[list[MessageSegmentFactory]] = None
_pic_message: Optional[list[MessageSegmentFactory]] = None
_message: list[MessageSegmentFactory] | None = None
_pic_message: list[MessageSegmentFactory] | None = None
async def _pic_url_to_image(self, data: Union[str, bytes]) -> Image.Image:
async def _pic_url_to_image(self, data: str | bytes) -> Image.Image:
pic_buffer = BytesIO()
if isinstance(data, str):
async with http_client() as client:
@@ -101,22 +98,19 @@ class _Post(BasePost):
self.pics.insert(0, target_io.getvalue())
async def generate_text_messages(self) -> list[MessageSegmentFactory]:
if self._message is None:
await self._pic_merge()
msg_segments: list[MessageSegmentFactory] = []
text = ""
if self.text:
text += "{}".format(
self.text if len(self.text) < 500 else self.text[:500] + "..."
)
text += "{}".format(self.text if len(self.text) < 500 else self.text[:500] + "...")
if text:
text += "\n"
text += "来源: {}".format(self.target_type)
text += f"来源: {self.target_type}"
if self.target_name:
text += " {}".format(self.target_name)
text += f" {self.target_name}"
if self.url:
text += " \n详情: {}".format(self.url)
text += f" \n详情: {self.url}"
msg_segments.append(saa.Text(text))
for pic in self.pics:
msg_segments.append(saa.Image(pic))
@@ -124,17 +118,16 @@ class _Post(BasePost):
return self._message
async def generate_pic_messages(self) -> list[MessageSegmentFactory]:
if self._pic_message is None:
await self._pic_merge()
msg_segments: list[MessageSegmentFactory] = []
text = ""
if self.text:
text += "{}".format(self.text)
text += f"{self.text}"
text += "\n"
text += "来源: {}".format(self.target_type)
text += f"来源: {self.target_type}"
if self.target_name:
text += " {}".format(self.target_name)
text += f" {self.target_name}"
msg_segments.append(await parse_text(text))
if not self.target_type == "rss" and self.url:
msg_segments.append(saa.Text(self.url))
@@ -149,14 +142,7 @@ class _Post(BasePost):
self.target_name,
self.text if len(self.text) < 500 else self.text[:500] + "...",
self.url,
", ".join(
map(
lambda x: "b64img"
if isinstance(x, bytes) or x.startswith("base64")
else x,
self.pics,
)
),
", ".join("b64img" if isinstance(x, bytes) or x.startswith("base64") else x for x in self.pics),
)