zhenxun_bot/zhenxun/plugins/group_welcome_msg.py

63 lines
1.9 KiB
Python
Raw Normal View History

2024-05-28 15:35:54 +08:00
import re
import ujson as json
from nonebot.plugin import PluginMetadata
from nonebot_plugin_alconna import Alconna, Arparma, on_alconna
from nonebot_plugin_session import EventSession
from zhenxun.configs.path_config import DATA_PATH
from zhenxun.configs.utils import PluginExtraData
from zhenxun.services.log import logger
2024-08-10 02:25:04 +08:00
from zhenxun.utils.message import MessageUtils
2024-05-28 15:35:54 +08:00
from zhenxun.utils.rules import ensure_group
__plugin_meta__ = PluginMetadata(
name="查看群欢迎消息",
description="查看群欢迎消息",
usage="""
usage
查看群欢迎消息
""".strip(),
extra=PluginExtraData(
author="HibiKier",
version="0.1",
menu_type="其他",
).dict(),
)
_matcher = on_alconna(Alconna("群欢迎消息"), rule=ensure_group, priority=5, block=True)
BASE_PATH = DATA_PATH / "welcome_message"
@_matcher.handle()
async def _(
session: EventSession,
arparma: Arparma,
):
path = BASE_PATH / f"{session.platform or session.bot_type}" / f"{session.id2}"
if session.id3:
path = (
BASE_PATH
/ f"{session.platform or session.bot_type}"
/ f"{session.id3}"
/ f"{session.id2}"
)
file = path / "text.json"
if not file.exists():
2024-08-10 02:25:04 +08:00
await MessageUtils.build_message("未设置群欢迎消息...").finish(reply_to=True)
2024-07-23 19:00:38 +08:00
message = json.load(open(file, encoding="utf8"))["message"]
2024-05-28 15:35:54 +08:00
message_split = re.split(r"\[image:\d+\]", message)
if len(message_split) == 1:
2024-08-10 02:25:04 +08:00
await MessageUtils.build_message(message_split[0]).finish(reply_to=True)
2024-05-28 15:35:54 +08:00
idx = 0
data_list = []
for msg in message_split[:-1]:
2024-08-10 02:25:04 +08:00
data_list.append(msg)
data_list.append(path / f"{idx}.png")
2024-05-28 15:35:54 +08:00
idx += 1
data_list.append(message_split[-1])
2024-08-10 02:25:04 +08:00
await MessageUtils.build_message(data_list).send(reply_to=True)
2024-05-28 15:35:54 +08:00
logger.info("查看群欢迎消息", arparma.header_result, session=session)