Skip to content

Commit

Permalink
chore: 指令全部改为命令
Browse files Browse the repository at this point in the history
  • Loading branch information
RockChinQ committed Jan 12, 2024
1 parent aa76845 commit 41b3023
Show file tree
Hide file tree
Showing 13 changed files with 75 additions and 75 deletions.
4 changes: 2 additions & 2 deletions README_en.md
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ Plugin [usage](https://github.com/RockChinQ/QChatGPT/wiki/%E6%8F%92%E4%BB%B6%E4%

`tests/plugin_examples`目录下,将其整个目录复制到`plugins`目录下即可使用

- `cmdcn` - 主程序指令中文形式
- `cmdcn` - 主程序命令中文形式
- `hello_plugin` - 在收到消息`hello`时回复相应消息
- `urlikethisijustsix` - 收到冒犯性消息时回复相应消息

Expand All @@ -189,7 +189,7 @@ Plugin [usage](https://github.com/RockChinQ/QChatGPT/wiki/%E6%8F%92%E4%BB%B6%E4%
欢迎提交新的插件

- [revLibs](https://github.com/RockChinQ/revLibs) - 将ChatGPT网页版接入此项目,关于[官方接口和网页版有什么区别](https://github.com/RockChinQ/QChatGPT/wiki/%E5%AE%98%E6%96%B9%E6%8E%A5%E5%8F%A3%E4%B8%8EChatGPT%E7%BD%91%E9%A1%B5%E7%89%88)
- [Switcher](https://github.com/RockChinQ/Switcher) - 支持通过指令切换使用的模型
- [Switcher](https://github.com/RockChinQ/Switcher) - 支持通过命令切换使用的模型
- [hello_plugin](https://github.com/RockChinQ/hello_plugin) - `hello_plugin` 的储存库形式,插件开发模板
- [dominoar/QChatPlugins](https://github.com/dominoar/QchatPlugins) - dominoar编写的诸多新功能插件(语音输出、Ranimg、屏蔽词规则等)
- [dominoar/QCP-NovelAi](https://github.com/dominoar/QCP-NovelAi) - NovelAI 故事叙述与绘画
Expand Down
10 changes: 5 additions & 5 deletions config-template.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,13 @@
# passive:仅当api-key超额时才会切换api-key
switch_strategy = "active"

# [必需] 管理员QQ号,用于接收报错等通知及执行管理员级别指令
# [必需] 管理员QQ号,用于接收报错等通知及执行管理员级别命令
# 支持多个管理员,可以使用list形式设置,例如:
# admin_qq = [12345678, 87654321]
admin_qq = 0

# 情景预设(机器人人格)
# 每个会话的预设信息,影响所有会话,无视指令重置
# 每个会话的预设信息,影响所有会话,无视命令重置
# 可以通过这个字段指定某些情况的回复,可直接用自然语言描述指令
# 例如:
# default_prompt = "如果我之后想获取帮助,请你说“输入!help获取帮助”"
Expand All @@ -98,14 +98,14 @@
# "en-dict": "我想让你充当英英词典,对于给出的英文单词,你要给出其中文意思以及英文解释,并且给出一个例句,此外不要有其他反馈。",
# }
#
# 在使用期间即可通过指令
# 在使用期间即可通过命令
# !reset [名称]
# 来使用指定的情景预设重置会话
# 例如:
# !reset linux-terminal
# 若不指定名称,则使用默认情景预设
#
# 也可以使用指令
# 也可以使用命令
# !default <名称>
# 将指定的情景预设设置为默认情景预设
# 例如:
Expand Down Expand Up @@ -165,7 +165,7 @@
# 符合此规则的消息将不会被响应
# 支持消息前缀匹配及正则表达式匹配
# 此设置优先级高于response_rules
# 用以过滤mirai等其他层级的指令
# 用以过滤mirai等其他层级的命令
# @see https://github.com/RockChinQ/QChatGPT/issues/165
ignore_rules = {
"prefix": ["/"],
Expand Down
4 changes: 2 additions & 2 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,10 +188,10 @@ async def start_process(first_time_init=False):

# 检查是否设置了管理员
if cfg['admin_qq'] == 0:
# logging.warning("未设置管理员QQ,管理员权限指令及运行告警将无法使用,如需设置请修改config.py中的admin_qq字段")
# logging.warning("未设置管理员QQ,管理员权限命令及运行告警将无法使用,如需设置请修改config.py中的admin_qq字段")
while True:
try:
cfg['admin_qq'] = int(input("未设置管理员QQ,管理员权限指令及运行告警将无法使用,请输入管理员QQ号: "))
cfg['admin_qq'] = int(input("未设置管理员QQ,管理员权限命令及运行告警将无法使用,请输入管理员QQ号: "))
# 写入到文件

# 读取文件
Expand Down
2 changes: 1 addition & 1 deletion pkg/openai/dprompt.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
# __current__ = "default"
# """当前默认使用的情景预设的名称

# 由管理员使用`!default <名称>`指令切换
# 由管理员使用`!default <名称>`命令切换
# """

# __prompts_from_files__ = {}
Expand Down
16 changes: 8 additions & 8 deletions pkg/plugin/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,18 +35,18 @@
"""

PersonCommandSent = "person_command_sent"
"""判断为应该处理的私聊指令时触发
"""判断为应该处理的私聊命令时触发
kwargs:
launcher_type: str 发起对象类型(group/person)
launcher_id: int 发起对象ID(群号/QQ号)
sender_id: int 发送者ID(QQ号)
command: str 指令
command: str 命令
params: list[str] 参数列表
text_message: str 完整指令文本
text_message: str 完整命令文本
is_admin: bool 是否为管理员
returns (optional):
alter: str 修改后的完整指令文本
alter: str 修改后的完整命令文本
reply: list 回复消息组件列表
"""

Expand All @@ -64,18 +64,18 @@
"""

GroupCommandSent = "group_command_sent"
"""判断为应该处理的群聊指令时触发
"""判断为应该处理的群聊命令时触发
kwargs:
launcher_type: str 发起对象类型(group/person)
launcher_id: int 发起对象ID(群号/QQ号)
sender_id: int 发送者ID(QQ号)
command: str 指令
command: str 命令
params: list[str] 参数列表
text_message: str 完整指令文本
text_message: str 完整命令文本
is_admin: bool 是否为管理员
returns (optional):
alter: str 修改后的完整指令文本
alter: str 修改后的完整命令文本
reply: list 回复消息组件列表
"""

Expand Down
76 changes: 38 additions & 38 deletions pkg/qqbot/cmds/aamgr.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@
结构:
{
'pkg.qqbot.cmds.cmd1.CommandCmd1': 'cmd1', # 顶级指令
'pkg.qqbot.cmds.cmd1.CommandCmd1': 'cmd1', # 顶级命令
'pkg.qqbot.cmds.cmd1.CommandCmd1_1': 'cmd1.cmd1-1', # 类名: 节点路径
'pkg.qqbot.cmds.cmd2.CommandCmd2': 'cmd2',
'pkg.qqbot.cmds.cmd2.CommandCmd2_1': 'cmd2.cmd2-1',
Expand All @@ -83,79 +83,79 @@
class Context:
"""命令执行上下文"""
command: str
"""顶级指令文本"""
"""顶级命令文本"""

crt_command: str
"""当前子指令文本"""
"""当前子命令文本"""

params: list
"""完整参数列表"""

crt_params: list
"""当前子指令参数列表"""
"""当前子命令参数列表"""

session_name: str
"""会话名"""

text_message: str
"""指令完整文本"""
"""命令完整文本"""

launcher_type: str
"""指令发起者类型"""
"""命令发起者类型"""

launcher_id: int
"""指令发起者ID"""
"""命令发起者ID"""

sender_id: int
"""指令发送者ID"""
"""命令发送者ID"""

is_admin: bool
"""[过时]指令发送者是否为管理员"""
"""[过时]命令发送者是否为管理员"""

privilege: int
"""指令发送者权限等级"""
"""命令发送者权限等级"""

def __init__(self, **kwargs):
self.__dict__.update(kwargs)


class AbstractCommandNode:
"""指令抽象类"""
"""命令抽象类"""

parent: type
"""父指令类"""
"""父命令类"""

name: str
"""指令名"""
"""命令名"""

description: str
"""指令描述"""
"""命令描述"""

usage: str
"""指令用法"""
"""命令用法"""

aliases: list[str]
"""指令别名"""
"""命令别名"""

privilege: int
"""指令权限等级, 权限大于等于此值的用户才能执行指令"""
"""命令权限等级, 权限大于等于此值的用户才能执行命令"""

@classmethod
def process(cls, ctx: Context) -> tuple[bool, list]:
"""指令处理函数
"""命令处理函数
:param ctx: 指令执行上下文
:param ctx: 命令执行上下文
:return: (是否执行, 回复列表(若执行))
若未执行,将自动以下一个参数查找并执行子指令
若未执行,将自动以下一个参数查找并执行子命令
"""
raise NotImplementedError

@classmethod
def help(cls) -> str:
"""获取指令帮助信息"""
return '指令: {}\n描述: {}\n用法: \n{}\n别名: {}\n权限: {}'.format(
"""获取命令帮助信息"""
return '命令: {}\n描述: {}\n用法: \n{}\n别名: {}\n权限: {}'.format(
cls.name,
cls.description,
cls.usage,
Expand All @@ -172,11 +172,11 @@ def register(
aliases: list[str] = None,
privilege: int = 0
):
"""注册指令
"""注册命令
:param cls: 指令类
:param name: 指令名
:param parent: 父指令类
:param cls: 命令类
:param name: 命令名
:param parent: 父命令类
"""
global __command_list__, __tree_index__

Expand All @@ -191,7 +191,7 @@ def wrapper(cls):
logging.debug("cls: {}, name: {}, parent: {}".format(cls, name, parent))

if parent is None:
# 顶级指令注册
# 顶级命令注册
__command_list__[name] = {
'description': cls.description,
'usage': cls.usage,
Expand All @@ -208,9 +208,9 @@ def wrapper(cls):
path = __tree_index__[parent.__module__ + '.' + parent.__name__]

parent_node = __command_list__[path]
# 链接父子指令
# 链接父子命令
__command_list__[path]['sub'].append(name)
# 注册子指令
# 注册子命令
__command_list__[path + '.' + name] = {
'description': cls.description,
'usage': cls.usage,
Expand All @@ -229,18 +229,18 @@ def wrapper(cls):


class CommandPrivilegeError(Exception):
"""指令权限不足或不存在异常"""
"""命令权限不足或不存在异常"""
pass


# 传入Context对象,广搜命令树,返回执行结果
# 若命令被处理,返回reply列表
# 若命令未被处理,继续执行下一级指令
# 若命令未被处理,继续执行下一级命令
# 若命令不存在,报异常
def execute(context: Context) -> list:
"""执行指令
"""执行命令
:param ctx: 指令执行上下文
:param ctx: 命令执行上下文
:return: 回复列表
"""
Expand All @@ -249,15 +249,15 @@ def execute(context: Context) -> list:
# 拷贝ctx
ctx: Context = copy.deepcopy(context)

# 从树取出顶级指令
# 从树取出顶级命令
node = __command_list__

path = ctx.command

while True:
try:
node = __command_list__[path]
logging.debug('执行指令: {}'.format(path))
logging.debug('执行命令: {}'.format(path))

# 检查权限
if ctx.privilege < node['privilege']:
Expand All @@ -278,7 +278,7 @@ def execute(context: Context) -> list:


def register_all():
"""启动时调用此函数注册所有指令
"""启动时调用此函数注册所有命令
递归处理pkg.qqbot.cmds包下及其子包下所有模块的所有继承于AbstractCommand的类
"""
Expand All @@ -304,7 +304,7 @@ def walk(module, prefix, path_prefix):
else:
m = __import__(module.__name__ + '.' + item.name, fromlist=[''])
# for name, cls in inspect.getmembers(m, inspect.isclass):
# # 检查是否为指令类
# # 检查是否为命令类
# if cls.__module__ == m.__name__ and issubclass(cls, AbstractCommandNode) and cls != AbstractCommandNode:
# cls.register(cls, cls.name, cls.parent)

Expand All @@ -313,7 +313,7 @@ def walk(module, prefix, path_prefix):


def apply_privileges():
"""读取cmdpriv.json并应用指令权限"""
"""读取cmdpriv.json并应用命令权限"""
# 读取内容
json_str = ""
with open('cmdpriv.json', 'r', encoding="utf-8") as f:
Expand Down
6 changes: 3 additions & 3 deletions pkg/qqbot/cmds/plugin/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def process(cls, ctx: aamgr.Context) -> tuple[bool, list]:
def closure():
try:
plugin_host.install_plugin(ctx.crt_params[0])
pkg.utils.context.get_qqbot_manager().notify_admin("插件安装成功,请发送 !reload 指令重载插件")
pkg.utils.context.get_qqbot_manager().notify_admin("插件安装成功,请发送 !reload 命令重载插件")
except Exception as e:
logging.error("插件安装失败:{}".format(e))
pkg.utils.context.get_qqbot_manager().notify_admin("插件安装失败:{}".format(e))
Expand Down Expand Up @@ -149,7 +149,7 @@ def process(cls, ctx: aamgr.Context) -> tuple[bool, list]:
unin_path = plugin_host.uninstall_plugin(plugin_name)
reply = ["[bot]已删除插件: {} ({}), 请发送 !reload 重载插件".format(plugin_name, unin_path)]
else:
reply = ["[bot]err:未找到插件: {}, 请使用!plugin指令查看插件列表".format(plugin_name)]
reply = ["[bot]err:未找到插件: {}, 请使用!plugin命令查看插件列表".format(plugin_name)]

return True, reply

Expand Down Expand Up @@ -195,7 +195,7 @@ def process(cls, ctx: aamgr.Context) -> tuple[bool, list]:
plugin_switch.dump_switch()
reply = ["[bot]已{}插件: {}".format("启用" if new_status else "禁用", plugin_name)]
else:
reply = ["[bot]err:未找到插件: {}, 请使用!plugin指令查看插件列表".format(plugin_name)]
reply = ["[bot]err:未找到插件: {}, 请使用!plugin命令查看插件列表".format(plugin_name)]

return True, reply

Loading

0 comments on commit 41b3023

Please sign in to comment.