mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-14 21:52:56 +08:00
Some checks failed
检查bot是否运行正常 / bot check (push) Has been cancelled
CodeQL Code Security Analysis / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Has been cancelled
CodeQL Code Security Analysis / Analyze (${{ matrix.language }}) (none, python) (push) Has been cancelled
Sequential Lint and Type Check / ruff-call (push) Has been cancelled
Release Drafter / Update Release Draft (push) Has been cancelled
Force Sync to Aliyun / sync (push) Has been cancelled
Update Version / update-version (push) Has been cancelled
Sequential Lint and Type Check / pyright-call (push) Has been cancelled
83 lines
2.7 KiB
Python
83 lines
2.7 KiB
Python
import os
|
|
import random
|
|
|
|
from nonebot import on_message
|
|
from nonebot.adapters import Event
|
|
from nonebot.matcher import Matcher
|
|
from nonebot.plugin import PluginMetadata
|
|
from nonebot_plugin_alconna import UniMsg
|
|
from nonebot_plugin_session import EventSession
|
|
from nonebot_plugin_uninfo import Uninfo
|
|
|
|
from zhenxun.configs.path_config import IMAGE_PATH
|
|
from zhenxun.configs.utils import PluginExtraData
|
|
from zhenxun.models.ban_console import BanConsole
|
|
from zhenxun.models.group_console import GroupConsole
|
|
from zhenxun.models.plugin_info import PluginInfo
|
|
from zhenxun.services.log import logger
|
|
from zhenxun.utils.enum import PluginType
|
|
from zhenxun.utils.message import MessageUtils
|
|
|
|
__plugin_meta__ = PluginMetadata(
|
|
name="笨蛋检测",
|
|
description="功能名称当命令检测",
|
|
usage="""当一些笨蛋直接输入功能名称时,提示笨蛋使用帮助指令查看功能帮助""".strip(),
|
|
extra=PluginExtraData(
|
|
author="HibiKier",
|
|
version="0.1",
|
|
plugin_type=PluginType.DEPENDANT,
|
|
menu_type="其他",
|
|
).to_dict(),
|
|
)
|
|
|
|
|
|
async def rule(event: Event, message: UniMsg, session: Uninfo) -> bool:
|
|
group_id = session.group.id if session.group else None
|
|
text = message.extract_plain_text().strip()
|
|
if await BanConsole.is_ban(session.user.id, group_id):
|
|
return False
|
|
if group_id:
|
|
if await BanConsole.is_ban(None, group_id):
|
|
return False
|
|
if g := await GroupConsole.get_group(group_id):
|
|
if g.level < 0:
|
|
return False
|
|
return event.is_tome() and bool(text and len(text) < 20)
|
|
|
|
|
|
_matcher = on_message(rule=rule, priority=996, block=False)
|
|
|
|
|
|
_path = IMAGE_PATH / "_base" / "laugh"
|
|
|
|
|
|
@_matcher.handle()
|
|
async def _(matcher: Matcher, message: UniMsg, session: EventSession):
|
|
text = message.extract_plain_text().strip()
|
|
plugin = await PluginInfo.get_or_none(
|
|
name=text,
|
|
load_status=True,
|
|
plugin_type=PluginType.NORMAL,
|
|
block_type__isnull=True,
|
|
status=True,
|
|
)
|
|
|
|
if not plugin:
|
|
return
|
|
|
|
image = None
|
|
if _path.exists():
|
|
if files := os.listdir(_path):
|
|
image = _path / random.choice(files)
|
|
message_list = []
|
|
if image:
|
|
message_list.append(image)
|
|
message_list.append(
|
|
"桀桀桀,预判到会有 '笨蛋' 把功能名称当命令用,特地前来嘲笑!"
|
|
f"但还是好心来帮帮你啦!\n请at我发送 '帮助 {plugin.name}' 或者"
|
|
f" '帮助 {plugin.id}' 来获取该功能帮助!"
|
|
)
|
|
logger.info("检测到功能名称当命令使用,已发送帮助信息", "功能帮助", session=session)
|
|
await MessageUtils.build_message(message_list).send(reply_to=True)
|
|
matcher.stop_propagation()
|