forked from bot/app
✨ npm 会话开关功能新增群号可选项
This commit is contained in:
parent
a25c900d49
commit
cc43e53c4b
@ -53,7 +53,7 @@ npm search <keywords...> # 通过关键词搜索插件
|
|||||||
npm enable-global/disable-global <plugin_name> # 全局启用/停用插件
|
npm enable-global/disable-global <plugin_name> # 全局启用/停用插件
|
||||||
|
|
||||||
# 群聊仅群主、管理员、超级用户可用,私聊所有人可用
|
# 群聊仅群主、管理员、超级用户可用,私聊所有人可用
|
||||||
npm enable/disable <plugin_name> # 当前会话启用/停用插件
|
npm enable/disable <plugin_name> [--group <group_id>] # 当前会话启用/停用插件
|
||||||
npm list [page] [num] # 列出所有插件 page为页数,num为每页显示数量
|
npm list [page] [num] # 列出所有插件 page为页数,num为每页显示数量
|
||||||
|
|
||||||
# 所有人
|
# 所有人
|
||||||
@ -75,7 +75,7 @@ rpm reload # 重载所有资源包
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
npm 插件管理 | update 更新 | install 安装 | uninstall 卸载 | search 搜索
|
npm 插件管理 | update 更新 | install 安装 | uninstall 卸载 | search 搜索
|
||||||
enable 启用 | disable 停用 | enable-global 全局启用 | disable-global 全局停用
|
enable 启用 | disable 停用 | enable-global 全局启用 | disable-global 全局停用 | --group -g
|
||||||
rpm 资源包 | load 加载 | unload 卸载 | change 更改 | reload 重载 | list 列表
|
rpm 资源包 | load 加载 | unload 卸载 | change 更改 | reload 重载 | list 列表
|
||||||
help 帮助
|
help 帮助
|
||||||
```
|
```
|
||||||
|
@ -141,11 +141,12 @@ def set_plugin_session_enable(event: T_MessageEvent, plugin_name: str, enable: b
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
if event_utils.get_message_type(event) == "group":
|
if event_utils.get_message_type(event) == "group":
|
||||||
session = group_db.where_one(Group(), "group_id = ?", str(event_utils.get_group_id(event)),
|
session: Group = group_db.where_one(Group(), "group_id = ?", str(event_utils.get_group_id(event)),
|
||||||
default=Group(group_id=str(event_utils.get_group_id(event))))
|
default=Group(group_id=str(event_utils.get_group_id(event))))
|
||||||
else:
|
else:
|
||||||
session = user_db.where_one(User(), "user_id = ?", str(event_utils.get_user_id(event)),
|
session: User = user_db.where_one(User(), "user_id = ?", str(event_utils.get_user_id(event)),
|
||||||
default=User(user_id=str(event_utils.get_user_id(event))))
|
default=User(user_id=str(event_utils.get_user_id(event))))
|
||||||
|
print(session)
|
||||||
default_enable = get_plugin_default_enable(plugin_name)
|
default_enable = get_plugin_default_enable(plugin_name)
|
||||||
if default_enable:
|
if default_enable:
|
||||||
if enable:
|
if enable:
|
||||||
@ -160,7 +161,6 @@ def set_plugin_session_enable(event: T_MessageEvent, plugin_name: str, enable: b
|
|||||||
|
|
||||||
if event_utils.get_message_type(event) == "group":
|
if event_utils.get_message_type(event) == "group":
|
||||||
__group_data[str(event_utils.get_group_id(event))] = session
|
__group_data[str(event_utils.get_group_id(event))] = session
|
||||||
print(session)
|
|
||||||
group_db.save(session)
|
group_db.save(session)
|
||||||
else:
|
else:
|
||||||
__user_data[str(event_utils.get_user_id(event))] = session
|
__user_data[str(event_utils.get_user_id(event))] = session
|
||||||
|
@ -24,7 +24,7 @@ from liteyuki.utils.message.tools import clamp
|
|||||||
from .common import *
|
from .common import *
|
||||||
|
|
||||||
require("nonebot_plugin_alconna")
|
require("nonebot_plugin_alconna")
|
||||||
from nonebot_plugin_alconna import on_alconna, Alconna, Args, Arparma, Subcommand
|
from nonebot_plugin_alconna import on_alconna, Alconna, Args, Arparma, Subcommand, Option, OptionResult, SubcommandResult
|
||||||
|
|
||||||
# const
|
# const
|
||||||
enable_global = "enable-global"
|
enable_global = "enable-global"
|
||||||
@ -40,11 +40,21 @@ disable = "disable"
|
|||||||
Subcommand(
|
Subcommand(
|
||||||
"enable",
|
"enable",
|
||||||
Args["plugin_name", str],
|
Args["plugin_name", str],
|
||||||
|
Option(
|
||||||
|
"-g|--group",
|
||||||
|
Args["group_id", str, None],
|
||||||
|
help_text="群号",
|
||||||
|
),
|
||||||
alias=["e", "启用"],
|
alias=["e", "启用"],
|
||||||
),
|
),
|
||||||
Subcommand(
|
Subcommand(
|
||||||
"disable",
|
"disable",
|
||||||
Args["plugin_name", str],
|
Args["plugin_name", str],
|
||||||
|
Option(
|
||||||
|
"-g|--group",
|
||||||
|
Args["group_id", str, None],
|
||||||
|
help_text="群号",
|
||||||
|
),
|
||||||
alias=["d", "停用"],
|
alias=["d", "停用"],
|
||||||
),
|
),
|
||||||
Subcommand(
|
Subcommand(
|
||||||
@ -93,13 +103,33 @@ async def _(result: Arparma, event: T_MessageEvent, bot: T_Bot, npm: Matcher):
|
|||||||
sc = result.subcommands # 获取子命令
|
sc = result.subcommands # 获取子命令
|
||||||
perm_s = await SUPERUSER(bot, event) # 判断是否为超级用户
|
perm_s = await SUPERUSER(bot, event) # 判断是否为超级用户
|
||||||
# 支持对自定义command_start的判断
|
# 支持对自定义command_start的判断
|
||||||
if sc.get("enable") or result.subcommands.get("disable"):
|
if sc.get("enable") or sc.get("disable"):
|
||||||
|
|
||||||
toggle = result.subcommands.get("enable") is not None
|
toggle = result.subcommands.get("enable") is not None
|
||||||
|
|
||||||
plugin_exist = get_plugin_exist(plugin_name)
|
plugin_exist = get_plugin_exist(plugin_name)
|
||||||
|
|
||||||
session_enable = get_plugin_session_enable(event, plugin_name) # 获取插件当前状态
|
# 判定会话类型
|
||||||
|
# 输入群号
|
||||||
|
if (group_id := (sc.get("enable", SubcommandResult()).options.get("group", OptionResult()).args.get("group_id") or
|
||||||
|
sc.get("disable", SubcommandResult()).options.get("group", OptionResult()).args.get("group_id"))) and await SUPERUSER(bot, event):
|
||||||
|
session_id = group_id
|
||||||
|
new_event = event.copy()
|
||||||
|
new_event.group_id = group_id
|
||||||
|
new_event.message_type = "group"
|
||||||
|
|
||||||
|
elif event.message_type == "private":
|
||||||
|
session_id = event.user_id
|
||||||
|
new_event = event
|
||||||
|
else:
|
||||||
|
if await GROUP_ADMIN(bot, event) or await GROUP_OWNER(bot, event) or await SUPERUSER(bot, event):
|
||||||
|
session_id = event.group_id
|
||||||
|
new_event = event
|
||||||
|
else:
|
||||||
|
raise FinishedException(ulang.get("Permission Denied"))
|
||||||
|
|
||||||
|
|
||||||
|
session_enable = get_plugin_session_enable(new_event, plugin_name) # 获取插件当前状态
|
||||||
|
|
||||||
can_be_toggled = get_plugin_can_be_toggle(plugin_name) # 获取插件是否可以被启用/停用
|
can_be_toggled = get_plugin_can_be_toggle(plugin_name) # 获取插件是否可以被启用/停用
|
||||||
|
|
||||||
@ -113,15 +143,10 @@ async def _(result: Arparma, event: T_MessageEvent, bot: T_Bot, npm: Matcher):
|
|||||||
await npm.finish(
|
await npm.finish(
|
||||||
ulang.get("npm.plugin_already", NAME=plugin_name, STATUS=ulang.get("npm.enable") if toggle else ulang.get("npm.disable")))
|
ulang.get("npm.plugin_already", NAME=plugin_name, STATUS=ulang.get("npm.enable") if toggle else ulang.get("npm.disable")))
|
||||||
|
|
||||||
if event.message_type == "private":
|
# 键入自定义群号的情况
|
||||||
session = user_db.where_one(User(), "user_id = ?", event.user_id, default=User(user_id=event.user_id))
|
|
||||||
else:
|
|
||||||
if await GROUP_ADMIN(bot, event) or await GROUP_OWNER(bot, event) or await SUPERUSER(bot, event):
|
|
||||||
session = group_db.where_one(Group(), "group_id = ?", event.group_id, default=Group(group_id=str(event.group_id)))
|
|
||||||
else:
|
|
||||||
raise FinishedException(ulang.get("Permission Denied"))
|
|
||||||
try:
|
try:
|
||||||
set_plugin_session_enable(event, plugin_name, toggle)
|
set_plugin_session_enable(new_event, plugin_name, toggle)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
nonebot.logger.error(e)
|
nonebot.logger.error(e)
|
||||||
await npm.finish(
|
await npm.finish(
|
||||||
@ -136,7 +161,7 @@ async def _(result: Arparma, event: T_MessageEvent, bot: T_Bot, npm: Matcher):
|
|||||||
ulang.get(
|
ulang.get(
|
||||||
"npm.toggle_success",
|
"npm.toggle_success",
|
||||||
NAME=plugin_name,
|
NAME=plugin_name,
|
||||||
STATUS=ulang.get("npm.enable") if toggle else ulang.get("npm.disable"))
|
STATUS=(ulang.get("npm.enable") if toggle else ulang.get("npm.disable"))) + session_id
|
||||||
)
|
)
|
||||||
|
|
||||||
elif sc.get(enable_global) or result.subcommands.get(disable_global) and await SUPERUSER(bot, event):
|
elif sc.get(enable_global) or result.subcommands.get(disable_global) and await SUPERUSER(bot, event):
|
||||||
|
Loading…
Reference in New Issue
Block a user