zhenxun_bot/plugins/self_message/__init__.py

91 lines
3.0 KiB
Python
Raw Normal View History

from datetime import datetime
from nonebot import on
from nonebot.adapters.onebot.v11 import (
Bot,
Event,
GroupMessageEvent,
PrivateMessageEvent,
)
from nonebot.message import handle_event
from configs.config import Config
from ._rule import rule
__zx_plugin_name__ = "自身消息触发 [Hidden]"
__plugin_version__ = 0.1
Config.add_plugin_config(
"self_message",
"STATUS",
False,
help_="允许真寻自身触发命令需要在go-cqhttp配置文件中report-self-message修改为true触发命令时需前缀cmd且受权限影响例如cmd签到",
default_value=False,
type=bool,
)
message_sent = on(
type="message_sent",
priority=999,
block=False,
rule=rule(),
)
@message_sent.handle()
async def handle_message_sent(bot: Bot, event: Event):
msg = getattr(event, "message", "")
self_id = event.self_id
user_id = getattr(event, "user_id", -1)
msg_id = getattr(event, "message_id", -1)
msg_type = getattr(event, "message_type")
if (
str(user_id) not in bot.config.superusers and self_id != user_id
) or not msg.lower().startswith("cmd"):
return
msg = msg[3:]
if msg_type == "group":
new_event = GroupMessageEvent.parse_obj(
{
"time": getattr(event, "time", int(datetime.now().timestamp())),
"self_id": self_id,
"user_id": user_id,
"message": msg,
"raw_message": getattr(event, "raw_message", ""),
"post_type": "message",
"sub_type": getattr(event, "sub_type", "normal"),
"group_id": getattr(event, "group_id", -1),
"message_type": getattr(event, "message_type", "group"),
"message_id": msg_id,
"font": getattr(event, "font", 0),
"sender": getattr(event, "sender", {"user_id": user_id}),
"to_me": True,
}
)
# await _check_reply(bot, new_event)
# _check_at_me(bot, new_event)
# _check_nickname(bot, new_event)
await handle_event(bot=bot, event=new_event)
elif msg_type == "private":
target_id = getattr(event, "target_id")
if target_id == user_id:
new_event = PrivateMessageEvent.parse_obj(
{
"time": getattr(event, "time", int(datetime.now().timestamp())),
"self_id": self_id,
"user_id": user_id,
"message": getattr(event, "message", ""),
"raw_message": getattr(event, "raw_message", ""),
"post_type": "message",
"sub_type": getattr(event, "sub_type"),
"message_type": msg_type,
"message_id": msg_id,
"font": getattr(event, "font", 0),
"sender": getattr(event, "sender"),
"to_me": True,
"target_id": target_id,
}
)
await handle_event(bot=bot, event=new_event)