首次提交
This commit is contained in:
50
danding_bot/plugins/command_list/command_list.py
Normal file
50
danding_bot/plugins/command_list/command_list.py
Normal file
@@ -0,0 +1,50 @@
|
||||
from nonebot import on_command, get_loaded_plugins, logger
|
||||
from nonebot.rule import fullmatch
|
||||
from nonebot.adapters.onebot.v11.event import MessageEvent
|
||||
from nonebot.plugin import Plugin
|
||||
from nonebot_plugin_saa import Text, MessageFactory
|
||||
import random
|
||||
import asyncio
|
||||
|
||||
ALLOWED_USER = 1424473282
|
||||
|
||||
async def check_user(event: MessageEvent) -> bool:
|
||||
"""检查用户是否有权限使用该命令"""
|
||||
return event.user_id == ALLOWED_USER
|
||||
|
||||
cmd = on_command(
|
||||
"指令列表",
|
||||
rule=check_user and fullmatch(("指令列表", "命令列表", "help list", "cmd list")),
|
||||
aliases={"命令列表", "help list", "cmd list"},
|
||||
priority=1,
|
||||
block=True
|
||||
)
|
||||
|
||||
def format_plugin_info(plugin: Plugin) -> str:
|
||||
"""格式化插件信息"""
|
||||
info = []
|
||||
if hasattr(plugin, "metadata") and plugin.metadata:
|
||||
meta = plugin.metadata
|
||||
if hasattr(meta, "name") and meta.name:
|
||||
info.append(f"插件名称: {meta.name}")
|
||||
if hasattr(meta, "description") and meta.description:
|
||||
info.append(f"功能描述: {meta.description}")
|
||||
if hasattr(meta, "usage") and meta.usage:
|
||||
info.append(f"使用方法: {meta.usage}")
|
||||
return "\n".join(info) if info else f"插件: {plugin.name}"
|
||||
|
||||
@cmd.handle()
|
||||
async def handle_command_list():
|
||||
plugins = get_loaded_plugins()
|
||||
msg_parts = ["当前支持的指令列表:\n"]
|
||||
|
||||
for plugin in plugins:
|
||||
plugin_info = format_plugin_info(plugin)
|
||||
if plugin_info:
|
||||
msg_parts.append(f"\n{plugin_info}\n{'='*30}")
|
||||
|
||||
await asyncio.sleep(random.uniform(1, 2))
|
||||
await MessageFactory([Text("\n".join(msg_parts))]).send(
|
||||
at_sender=True,
|
||||
reply=True
|
||||
)
|
||||
Reference in New Issue
Block a user