diff --git a/docs/.vitepress/config/de-DE.json b/docs/.vitepress/config/de-DE.json new file mode 100644 index 00000000..ece1ed86 --- /dev/null +++ b/docs/.vitepress/config/de-DE.json @@ -0,0 +1,109 @@ +{ + "description": "常用 Koishi 插件合集", + "head": [ + [ + "link", + { + "rel": "icon", + "href": "https://koishi.chat/logo.png" + } + ], + [ + "link", + { + "rel": "manifest", + "href": "/manifest/de-DE.json" + } + ], + [ + "meta", + { + "name": "theme-color", + "content": "#5546a3" + } + ] + ], + "themeConfig": { + "sidebar": [ + { + "text": "指南", + "items": [ + { + "text": "总览", + "link": "/index.md" + } + ] + }, + { + "text": "插件", + "items": [ + { + "text": "别名指令 (Alias)", + "link": "/plugins/alias.md" + }, + { + "text": "@ 指令 (At Command)", + "link": "/plugins/at-command.md" + }, + { + "text": "发送反馈 (Feedback)", + "link": "/plugins/feedback.md" + }, + { + "text": "消息转发 (Forward)", + "link": "/plugins/forward.md" + }, + { + "text": "速率限制 (Rate Limit)", + "link": "/plugins/rate-limit.md" + }, + { + "text": "撤回消息 (Recall)", + "link": "/plugins/recall.md" + }, + { + "text": "复读机 (Repeater)", + "link": "/plugins/repeater.md" + }, + { + "text": "自定义回复 (Respondent)", + "link": "/plugins/respondent.md" + }, + { + "text": "计划任务 (Schedule)", + "link": "/plugins/schedule.md" + }, + { + "text": "关闭与重启 (Shutdown)", + "link": "/plugins/shutdown.md" + }, + { + "text": "执行命令 (Spawn)", + "link": "/plugins/spawn.md" + }, + { + "text": "模拟调用 (Sudo)", + "link": "/plugins/sudo.md" + }, + { + "text": "处理申请 (Verifier)", + "link": "/plugins/verifier.md" + } + ] + }, + { + "text": "Mehr", + "items": [ + { + "text": "Koishi 官网", + "link": "https://koishi.chat" + }, + { + "text": "支持作者", + "link": "https://afdian.net/a/shigma" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/docs/.vitepress/config/en-US.json b/docs/.vitepress/config/en-US.json new file mode 100644 index 00000000..fb47cdcf --- /dev/null +++ b/docs/.vitepress/config/en-US.json @@ -0,0 +1,109 @@ +{ + "description": "常用 Koishi 插件合集", + "head": [ + [ + "link", + { + "rel": "icon", + "href": "https://koishi.chat/logo.png" + } + ], + [ + "link", + { + "rel": "manifest", + "href": "/manifest/en-US.json" + } + ], + [ + "meta", + { + "name": "theme-color", + "content": "#5546a3" + } + ] + ], + "themeConfig": { + "sidebar": [ + { + "text": "Developing Guide", + "items": [ + { + "text": "Overview", + "link": "/index.md" + } + ] + }, + { + "text": "Plugins", + "items": [ + { + "text": "别名指令 (Alias)", + "link": "/plugins/alias.md" + }, + { + "text": "@ 指令 (At Command)", + "link": "/plugins/at-command.md" + }, + { + "text": "发送反馈 (Feedback)", + "link": "/plugins/feedback.md" + }, + { + "text": "消息转发 (Forward)", + "link": "/plugins/forward.md" + }, + { + "text": "Rate Limiting (Rate Limit)", + "link": "/plugins/rate-limit.md" + }, + { + "text": "撤回消息 (Recall)", + "link": "/plugins/recall.md" + }, + { + "text": "复读机 (Repeater)", + "link": "/plugins/repeater.md" + }, + { + "text": "自定义回复 (Respondent)", + "link": "/plugins/respondent.md" + }, + { + "text": "计划任务 (Schedule)", + "link": "/plugins/schedule.md" + }, + { + "text": "关闭与重启 (Shutdown)", + "link": "/plugins/shutdown.md" + }, + { + "text": "执行命令 (Spawn)", + "link": "/plugins/spawn.md" + }, + { + "text": "模拟调用 (Sudo)", + "link": "/plugins/sudo.md" + }, + { + "text": "处理申请 (Verifier)", + "link": "/plugins/verifier.md" + } + ] + }, + { + "text": "More", + "items": [ + { + "text": "Koishi 官网", + "link": "https://koishi.chat" + }, + { + "text": "支持作者", + "link": "https://afdian.net/a/shigma" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/docs/.vitepress/config/fr-FR.json b/docs/.vitepress/config/fr-FR.json new file mode 100644 index 00000000..2a6fb0c1 --- /dev/null +++ b/docs/.vitepress/config/fr-FR.json @@ -0,0 +1,109 @@ +{ + "description": "常用 Koishi 插件合集", + "head": [ + [ + "link", + { + "rel": "icon", + "href": "https://koishi.chat/logo.png" + } + ], + [ + "link", + { + "rel": "manifest", + "href": "/manifest/fr-FR.json" + } + ], + [ + "meta", + { + "name": "theme-color", + "content": "#5546a3" + } + ] + ], + "themeConfig": { + "sidebar": [ + { + "text": "Guide", + "items": [ + { + "text": "Vue d'ensemble", + "link": "/index.md" + } + ] + }, + { + "text": "plugin", + "items": [ + { + "text": "别名指令 (Alias)", + "link": "/plugins/alias.md" + }, + { + "text": "@ 指令 (At Command)", + "link": "/plugins/at-command.md" + }, + { + "text": "发送反馈 (Feedback)", + "link": "/plugins/feedback.md" + }, + { + "text": "消息转发 (Forward)", + "link": "/plugins/forward.md" + }, + { + "text": "速率限制 (Rate Limit)", + "link": "/plugins/rate-limit.md" + }, + { + "text": "撤回消息 (Recall)", + "link": "/plugins/recall.md" + }, + { + "text": "复读机 (Repeater)", + "link": "/plugins/repeater.md" + }, + { + "text": "自定义回复 (Respondent)", + "link": "/plugins/respondent.md" + }, + { + "text": "计划任务 (Schedule)", + "link": "/plugins/schedule.md" + }, + { + "text": "关闭与重启 (Shutdown)", + "link": "/plugins/shutdown.md" + }, + { + "text": "执行命令 (Spawn)", + "link": "/plugins/spawn.md" + }, + { + "text": "模拟调用 (Sudo)", + "link": "/plugins/sudo.md" + }, + { + "text": "处理申请 (Verifier)", + "link": "/plugins/verifier.md" + } + ] + }, + { + "text": "À propos", + "items": [ + { + "text": "Koishi 官网", + "link": "https://koishi.chat" + }, + { + "text": "支持作者", + "link": "https://afdian.net/a/shigma" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/docs/.vitepress/config/ja-JP.json b/docs/.vitepress/config/ja-JP.json new file mode 100644 index 00000000..4e0c7512 --- /dev/null +++ b/docs/.vitepress/config/ja-JP.json @@ -0,0 +1,109 @@ +{ + "description": "常用 Koishi 插件合集", + "head": [ + [ + "link", + { + "rel": "icon", + "href": "https://koishi.chat/logo.png" + } + ], + [ + "link", + { + "rel": "manifest", + "href": "/manifest/ja-JP.json" + } + ], + [ + "meta", + { + "name": "theme-color", + "content": "#5546a3" + } + ] + ], + "themeConfig": { + "sidebar": [ + { + "text": "指南", + "items": [ + { + "text": "概要", + "link": "/index.md" + } + ] + }, + { + "text": "プラグイン", + "items": [ + { + "text": "别名指令 (Alias)", + "link": "/plugins/alias.md" + }, + { + "text": "@ 指令 (At Command)", + "link": "/plugins/at-command.md" + }, + { + "text": "发送反馈 (Feedback)", + "link": "/plugins/feedback.md" + }, + { + "text": "消息转发 (Forward)", + "link": "/plugins/forward.md" + }, + { + "text": "速率限制 (Rate Limit)", + "link": "/plugins/rate-limit.md" + }, + { + "text": "撤回消息 (Recall)", + "link": "/plugins/recall.md" + }, + { + "text": "复读机 (Repeater)", + "link": "/plugins/repeater.md" + }, + { + "text": "自定义回复 (Respondent)", + "link": "/plugins/respondent.md" + }, + { + "text": "计划任务 (Schedule)", + "link": "/plugins/schedule.md" + }, + { + "text": "关闭与重启 (Shutdown)", + "link": "/plugins/shutdown.md" + }, + { + "text": "执行命令 (Spawn)", + "link": "/plugins/spawn.md" + }, + { + "text": "模拟调用 (Sudo)", + "link": "/plugins/sudo.md" + }, + { + "text": "处理申请 (Verifier)", + "link": "/plugins/verifier.md" + } + ] + }, + { + "text": "さらに表示", + "items": [ + { + "text": "Koishi 官网", + "link": "https://koishi.chat" + }, + { + "text": "支持作者", + "link": "https://afdian.net/a/shigma" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/docs/.vitepress/config/ru-RU.json b/docs/.vitepress/config/ru-RU.json new file mode 100644 index 00000000..2717f027 --- /dev/null +++ b/docs/.vitepress/config/ru-RU.json @@ -0,0 +1,109 @@ +{ + "description": "常用 Koishi 插件合集", + "head": [ + [ + "link", + { + "rel": "icon", + "href": "https://koishi.chat/logo.png" + } + ], + [ + "link", + { + "rel": "manifest", + "href": "/manifest/ru-RU.json" + } + ], + [ + "meta", + { + "name": "theme-color", + "content": "#5546a3" + } + ] + ], + "themeConfig": { + "sidebar": [ + { + "text": "指南", + "items": [ + { + "text": "总览", + "link": "/index.md" + } + ] + }, + { + "text": "插件", + "items": [ + { + "text": "别名指令 (Alias)", + "link": "/plugins/alias.md" + }, + { + "text": "@ 指令 (At Command)", + "link": "/plugins/at-command.md" + }, + { + "text": "发送反馈 (Feedback)", + "link": "/plugins/feedback.md" + }, + { + "text": "消息转发 (Forward)", + "link": "/plugins/forward.md" + }, + { + "text": "速率限制 (Rate Limit)", + "link": "/plugins/rate-limit.md" + }, + { + "text": "撤回消息 (Recall)", + "link": "/plugins/recall.md" + }, + { + "text": "复读机 (Repeater)", + "link": "/plugins/repeater.md" + }, + { + "text": "自定义回复 (Respondent)", + "link": "/plugins/respondent.md" + }, + { + "text": "计划任务 (Schedule)", + "link": "/plugins/schedule.md" + }, + { + "text": "关闭与重启 (Shutdown)", + "link": "/plugins/shutdown.md" + }, + { + "text": "执行命令 (Spawn)", + "link": "/plugins/spawn.md" + }, + { + "text": "模拟调用 (Sudo)", + "link": "/plugins/sudo.md" + }, + { + "text": "处理申请 (Verifier)", + "link": "/plugins/verifier.md" + } + ] + }, + { + "text": "更多", + "items": [ + { + "text": "Koishi 官网", + "link": "https://koishi.chat" + }, + { + "text": "支持作者", + "link": "https://afdian.net/a/shigma" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/docs/.vitepress/config/zh-TW.json b/docs/.vitepress/config/zh-TW.json new file mode 100644 index 00000000..b5eece67 --- /dev/null +++ b/docs/.vitepress/config/zh-TW.json @@ -0,0 +1,109 @@ +{ + "description": "常用 Koishi 插件合集", + "head": [ + [ + "link", + { + "rel": "icon", + "href": "https://koishi.chat/logo.png" + } + ], + [ + "link", + { + "rel": "manifest", + "href": "/manifest/zh-TW.json" + } + ], + [ + "meta", + { + "name": "theme-color", + "content": "#5546a3" + } + ] + ], + "themeConfig": { + "sidebar": [ + { + "text": "指南", + "items": [ + { + "text": "總覽", + "link": "/index.md" + } + ] + }, + { + "text": "插件", + "items": [ + { + "text": "别名指令 (Alias)", + "link": "/plugins/alias.md" + }, + { + "text": "@ 指令 (At Command)", + "link": "/plugins/at-command.md" + }, + { + "text": "发送反馈 (Feedback)", + "link": "/plugins/feedback.md" + }, + { + "text": "消息转发 (Forward)", + "link": "/plugins/forward.md" + }, + { + "text": "速率限制 (Rate Limit)", + "link": "/plugins/rate-limit.md" + }, + { + "text": "撤回消息 (Recall)", + "link": "/plugins/recall.md" + }, + { + "text": "复读机 (Repeater)", + "link": "/plugins/repeater.md" + }, + { + "text": "自定义回复 (Respondent)", + "link": "/plugins/respondent.md" + }, + { + "text": "计划任务 (Schedule)", + "link": "/plugins/schedule.md" + }, + { + "text": "关闭与重启 (Shutdown)", + "link": "/plugins/shutdown.md" + }, + { + "text": "执行命令 (Spawn)", + "link": "/plugins/spawn.md" + }, + { + "text": "模拟调用 (Sudo)", + "link": "/plugins/sudo.md" + }, + { + "text": "处理申请 (Verifier)", + "link": "/plugins/verifier.md" + } + ] + }, + { + "text": "更多", + "items": [ + { + "text": "Koishi 官网", + "link": "https://koishi.chat" + }, + { + "text": "支持作者", + "link": "https://afdian.net/a/shigma" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/docs/de-DE/index.md b/docs/de-DE/index.md new file mode 100644 index 00000000..3940b5c8 --- /dev/null +++ b/docs/de-DE/index.md @@ -0,0 +1,25 @@ +# 介绍 + +这里包含了一系列常用 Koishi 插件的集合。 + +这些插件的功能都十分简单,我们因此将它们放到同一个仓库管理,以便于用户查阅。你也可以将这里理解成一个插件的示例仓库——如果你有与这些插件类似的需求,可以参考这里的代码。 + +## 插件 + +- [别名指令 (Alias)](./plugins/alias.md) +- [@ 指令 (At Command)](./plugins/at-command.md) +- [发送反馈 (Feedback)](./plugins/feedback.md) +- [消息转发 (Forward)](./plugins/forward.md) +- [速率限制 (Rate Limit)](./plugins/rate-limit.md) +- [撤回消息 (Recall)](./plugins/recall.md) +- [复读机 (Repeater)](./plugins/repeater.md) +- [自定义回复 (Respondent)](./plugins/respondent.md) +- [计划任务 (Schedule)](./plugins/schedule.md) +- [关闭与重启 (Shutdown)](./plugins/shutdown.md) +- [执行命令 (Spawn)](./plugins/spawn.md) +- [模拟调用 (Sudo)](./plugins/sudo.md) +- [处理申请 (Verifier)](./plugins/verifier.md) + +## 历史 + +这里的插件大都来自于 [Koishi 官方仓库](https://github.com/koishijs/koishi),有些甚至是早期版本 Koishi 的内置功能。自 v4 版本起,Koishi 逐步将许多内置功能移至独立的插件中,以便于用户自由选择需要的功能。 diff --git a/docs/de-DE/plugins/alias.md b/docs/de-DE/plugins/alias.md new file mode 100644 index 00000000..0f8ef09e --- /dev/null +++ b/docs/de-DE/plugins/alias.md @@ -0,0 +1,45 @@ +# koishi-plugin-alias + +koishi-plugin-alias 可用于创建和删除别名指令。 + +## 基本用法 + + + +

alias about echo

+

Koishi 是一个跨平台、可扩展、高性能的聊天机器人框架。

+

官方网站:https://koishi.chat

+
+已成功创建别名指令 about。 +about + +

Koishi 是一个跨平台、可扩展、高性能的聊天机器人框架。

+

官方网站:https://koishi.chat

+
+
+ +### 指令:alias + +- 基本语法:`alias ` + +alias 指令用于创建别名指令。 + +### 指令:unalias + +- 基本语法:`unalias ` + +unalias 指令用于删除别名指令。 + +## 功能对比 + +一些其他插件也可以实现类似的功能,但是它们之间有一些区别。 + +### commands + +[@koishijs/plugin-commands](https://koishi.chat/zh-CN/plugins/console/commands.html) 插件提供了 `command` 指令,可以通过 `--alias` 和 `--unalias` 选项来创建和删除别名。与本插件的区别在于,commands 插件创建的只是已有指令的别名,必须依附于某一条指令存在;而本插件创建的指令是独立存在的,因此可以实现多指令的顺序或嵌套调用,在使用上更加灵活。 + +当然,@koishijs/plugin-commands 还提供了其他能力,例如修改父指令、修改指令配置等。你可以同时使用两个插件,以便充分发挥它们的功能。 + +### dialogue + +[koishi-plugin-dialogue](https://dialogue.koishi.chat/zh-CN/) 插件功能十分强大。借助于其自带的指令插值语法,本插件所能实现的功能它都能实现。不过它的语法更复杂,且依赖数据库服务。 diff --git a/docs/de-DE/plugins/at-command.md b/docs/de-DE/plugins/at-command.md new file mode 100644 index 00000000..6abe44eb --- /dev/null +++ b/docs/de-DE/plugins/at-command.md @@ -0,0 +1,24 @@ +# koishi-plugin-at-command + +koishi-plugin-at-command 可用于在有人发送「@机器人」时触发特定指令。 + + +@Koishi + +

当前可用的指令有:

+

……

+
+
+ +## 配置项 + +### config.execute + +- 类型:`string` +- 默认值:`'help'` + +要调用的指令。 + +## 替代方案 + +可以使用 [koishi-plugin-dialogue](https://dialogue.koishi.chat/zh-CN/) 实现此插件的全部功能。 diff --git a/docs/de-DE/plugins/feedback.md b/docs/de-DE/plugins/feedback.md new file mode 100644 index 00000000..3546a3b6 --- /dev/null +++ b/docs/de-DE/plugins/feedback.md @@ -0,0 +1,35 @@ +# koishi-plugin-feedback + +## 指令:feedback + +- 基本语法:`feedback ` +- 选项: + - `-r, --receive` 添加到反馈频道列表 (需要 3 级权限) + - `-R` 从反馈频道列表移除 (需要 3 级权限) + +feedback 指令用于向开发者反馈信息。当有人调用 feedback 指令时,传入的 message 就会自动被发送给所有监听反馈的频道。你可以直接回复收到的反馈信息,机器人会把这些消息重新发回到调用 feedback 指令的上下文。这里的用法类似于 [消息转发](./forward.md)。 + + + +

收到来自 Alice 的反馈信息:

+

我也不知道该写什么总之这是一句话

+
+ +
+

收到来自 Alice 的反馈信息:

+

我也不知道该写什么总之这是一句话

+
+

那么这是一句回复

+
+
+ +要管理接收反馈的频道,你可以使用 `-r` 和 `-R` 选项。在任何频道中使用 `-r` 选项,都会将该频道添加到反馈频道列表中;使用 `-R` 选项,会将该频道从反馈频道列表中移除。 + +## 配置项 + +### replyTimeout + +- 类型:`number` +- 默认值:`Time.day` + +反馈回复时限 (单位毫秒)。 diff --git a/docs/de-DE/plugins/forward.md b/docs/de-DE/plugins/forward.md new file mode 100644 index 00000000..debae356 --- /dev/null +++ b/docs/de-DE/plugins/forward.md @@ -0,0 +1,95 @@ +# koishi-plugin-forward + +koishi-plugin-forward 支持在不同的频道之间转发消息。它有两种使用方法: + +## 无数据库模式 + +当没有加载数据库服务时,你需要手动提供转发规则数组。 + +```yaml title=koishi.yml +plugins: + forward: + # 请使用 {platform}:{channelId} 的格式 + - source: qq:123456789 + target: discord:987654321 + selfId: '33557799' +``` + +当用户 Alice 在频道 `source` 中发送消息 foo 的时候,`selfId` 对应的机器人就会在频道 `target` 中发送如下的内容。接着,频道 `target` 中的用户 Bob 也可以通过引用回复这条消息的方式将自己想说的话发回到频道 `source` 中去。 + + + +

Alice: foo

+
+ +

Alice: foo

+

bar

+
+
+ +## 有数据库模式 + +如果已经加载了数据库服务,那么上述规则列表将失效。此时插件会提供指令来管理转发规则。 + +| 指令语法 | 简写形式 | 功能描述 | +| -------------------------------- | ----------- | -------- | +| `forward add ` | `fwd add` | 添加目标频道 | +| `forward remove ` | `fwd rm` | 移除目标频道 | +| `forward clear` | `fwd clear` | 移除全部目标频道 | +| `forward list` | `fwd ls` | 查看目标频道列表 | + +::: warning +上述 `` 的语法是 `#{platform}:{channelId}`,前置的 `#` 字符不可忽略,请注意与配置项的不同。 +::: + +## 配置项 + +### storage + +- 类型:`'database' | 'config'` +- 默认值:`'config'` + +转发规则的存储方式。 + +### rules + +- 类型:`Rule[]` + +转发规则列表。详见 [转发规则](#转发规则)。 + +### replyTimeout + +- 类型:`number` +- 默认值:`3600000` + +转发消息不再响应回复的时间 (毫秒)。 + +## 转发规则 + +### rule.source + +- 类型:`string` +- 必须参数 + +来源频道。 + +### rule.target + +- 类型:`string` +- 必须参数 + +目标频道。 + +### rule.selfId + +- 类型:`string` +- 必须参数 + +负责推送的机器人账号。 + +### rule.guildId + +- 类型:`string` +- 必须参数 + +目标频道的群组编号。 diff --git a/docs/de-DE/plugins/rate-limit.md b/docs/de-DE/plugins/rate-limit.md new file mode 100644 index 00000000..a7c9ed6f --- /dev/null +++ b/docs/de-DE/plugins/rate-limit.md @@ -0,0 +1,34 @@ +# koishi-plugin-rate-limit + +::: tip +要使用本插件,你需要安装数据库支持,并配合 [@koishijs/plugin-commands](https://koishi.chat/manual/usage/command.html#指令管理) 使用。 +::: + +koishi-plugin-rate-limit 可用于限制指令调用频率。 + +## 基本用法 + +安装此插件后,控制台的「指令管理」页面将会增加一些配置项。 + +有些指令 (例如签到抽卡,限制次数的 API 调用等) 我们并不希望被无限调用,这时我们可以通过 `maxUsage` 设置每天访问额度的上限。当超出总次数后,机器人将回复「调用次数已达上限」。 + +另一些指令 (例如高强度刷屏,需要等待一定时间才有结果的功能) 我们并不希望被短时间内重复调用,这时我们可以通过 `minInterval` 设置最短触发间隔。如果一个处于冷却中的指令再次被调用,机器人将会提示「调用过于频繁,请稍后再试」。 + +如果你希望某些选项不计入总次数,可以使用选项配置中的 `notUsage`。启用此项后,当指令调用含有对应的选项时,将不会收到 `maxUsage` 和 `minInterval` 的限制。 + +最后,如果我们希望让多个指令共同同一套速率限制,可以通过 `usageName` 来进行管理。只需将这些指令的 `usageName` 设置为相同的值即可。 + +## 扩展用户字段 + +- **usage:** `Record` 指令调用次数 +- **timers:** `Record` 指令调用时间 + +## 指令:user.usage / user.timer + +- 基本语法:`user.xxx [key] [value]` +- 选项: + - `-s, --set` 设置访问记录(需要 4 级权限) + - `-c, --clear` 清除访问记录(需要 4 级权限) + - `-t, --target [@user]` 目标用户(需要 3 级权限) + +如果不提供 `-s` 和 `-c` 选项,则会显示当前的访问记录。如果使用了 `-s`,就会设置名为 `key` 的访问记录为 `value`。如果使用了 `-c` 且提供了 `key`,就会清除名为 `key` 的访问记录;否则会清除所有的访问记录。 diff --git a/docs/de-DE/plugins/recall.md b/docs/de-DE/plugins/recall.md new file mode 100644 index 00000000..ceda4e3f --- /dev/null +++ b/docs/de-DE/plugins/recall.md @@ -0,0 +1,24 @@ +# koishi-plugin-recall + +koishi-plugin-recall 可用于在群聊中撤回已发送的消息。 + +## 指令:recall + +- 基本语法:`recall [count]` +- 最低权限:2 + +recall 指令有两种用法: + +1. 直接调用时,撤回机器人在当前频道发送的最后几条消息 +2. 引用回复调用时,撤回引用的消息 + +`count` 是要撤回的消息的数量,缺省时为 1。与 broadcast 类似,为了避免风控,每撤回一条消息后 Koishi 也会等待一段时间,同样可以通过 [`delay.broadcast`](htrtps://koishi.chat/api/core/app.md#options-delay) 进行配置。 + +## 配置项 + +### timeout + +- 类型:`number` +- 默认值:`Time.hour` + +保存已发送消息的时间 (毫秒)。超时的消息将被清除。 diff --git a/docs/de-DE/plugins/repeater.md b/docs/de-DE/plugins/repeater.md new file mode 100644 index 00000000..c0a6f01f --- /dev/null +++ b/docs/de-DE/plugins/repeater.md @@ -0,0 +1,129 @@ +# koishi-plugin-repeater + +复读功能一直是很多机器人的传统艺能,但是 Koishi 敢说自己能做得更多。利用内置的复读插件,你的机器人不仅可以实现概率复读,还可以概率打断,甚至可以检测他人重复复读或打断复读的行为并做出回应。让我们开始吧! + +## 控制复读时机和概率 + +通过提供 `onRepeat` 参数,我们可以定义机器人在检测到复读时进行怎样的行为,是跟着复读,还是进行打断,甚至是出警。首先让我们看一个最简单的例子: + +```yaml title=koishi.yml +plugins: + repeater: + onRepeat: + minTimes: 3 + probability: 0.5 +``` + + +foo +foo +foo +foo +foo + + +在这种配置下,当复读语句达到 3 句后,每一次其他人的复读都有 50% 的概率触发机器人的复读行为。而一旦复读后,机器人将不再重复复读。 + +`onRepeat` 除了可以接受一个对象作为参数以外,也支持接受一个函数来自定义当机器人检测到复读时执行的具体行为。下面我们来举几个例子。 + +## 自动打断复读 + +`onRepeat` 函数可以接受两个参数。第一个参数为当前复读行为的状态 state,其中包含目前复读次数 times, 复读语句内容 content,参与复读的用户与他们的复读次数 users,机器人是否已经复读 repeated;第二个参数是当前的会话 session。 + +当我们也不希望机器人复读所有的内容,我们可以通过如下配置让机器人自动打断某些复读: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat: (state) => + state.times >= 2 && + state.content === "这机器人又开始复读了" && + "打断复读!", + } + } +} +``` + + +这机器人又开始复读了 +这机器人又开始复读了 +打断复读! + + +## 检测重复复读 + +来看一个更复杂的例子。我们还可以让 Koishi 对所有将同一句话复读 2 次的用户作出警告。你可以这样配置: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat: (state, session) => + state.users[session.userId] > 1 && + segment.at(session.userId) + "不许重复复读!" + }, + }, +} +``` + + +foo +foo +foo +不许重复复读! + + +## 检测打断复读 + +复读机插件支持的另一个参数 `onInterrupt` 可以定义机器人在检测到复读被其他人打断时的行为。可以传入一个函数来定义此行为,函数签名与 `onRepeat` 一致。 + +例如,如果你想让你的机器人在一条信息已经复读过 5 次以上,且自己也已经复读过后,对任何打断复读的人以 50% 的概率出警。你可以这样配置: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat:{ + minTimes: 2 + }, + onInterrupt: (state, session) => + state.repeated && + state.times >= 3 && + Math.random() > 0.5 && + segment.at(session.userId) + "在?为什么打断复读?", + }, + }, +} +``` + + +bar +bar + bar +打断复读 + 在?为什么打断复读? + + +## 配置项 + +```ts +interface RepeatState { + content: string + repeated: boolean + times: number + users: Record +} + +type StateCallback = (state: RepeatState, session: Session) => void | string + +interface RepeatHandler { + minTimes: number + probability?: number +} + +interface RepeaterOptions { + onRepeat?: RepeatHandler | StateCallback + onInterrupt?: StateCallback +} +``` diff --git a/docs/de-DE/plugins/respondent.md b/docs/de-DE/plugins/respondent.md new file mode 100644 index 00000000..e357c178 --- /dev/null +++ b/docs/de-DE/plugins/respondent.md @@ -0,0 +1,27 @@ +# koishi-plugin-respondent + +自动回复插件,允许设置一套自定义问答规则。 + +如果想要通过指令设置和管理问答,以及更多的功能,可以使用 [koishi-plugin-dialogue](https://dialogue.koishi.chat)。 + +## 配置项 + +### rules[].match + +- 类型: `string` +- 必需参数 + +要匹配的输入。 + +### rules[].reply + +- 类型: `string` +- 必需参数 + +要回复的内容。 + +### rules[].regexp + +- 类型: `boolean` + +是否使用正则表达式匹配。 diff --git a/docs/de-DE/plugins/schedule.md b/docs/de-DE/plugins/schedule.md new file mode 100644 index 00000000..66b8b917 --- /dev/null +++ b/docs/de-DE/plugins/schedule.md @@ -0,0 +1,45 @@ +# koishi-plugin-schedule + +koishi-plugin-schedule 用于在用户侧设置计划任务。 + +::: tip +如果想要在开发者侧设置计划任务,可以使用 [koishi-plugin-cron](https://cron.koishi.chat)。 +::: + + +schedule 1m -- echo 233 +日程已创建,编号为 1。 +schedule -l +1. 今天 10:01:echo 233 +

——— 1 分钟后 ———

+233 +
+ +## 指令:schedule + +添加或查找计划任务。 + +- 基本语法:`schedule [time] -- [command]` +- 选项列表: + - `/ ` 设置触发的间隔秒数 + - `-l, --list` 查看已经设置的日程 + - `-e, --ensure` 错过时间也确保执行 + - `-f, --full` 查找全部上下文 + - `-d, --delete ` 删除已经设置的日程 + +### 定时器语法 + +- `1m`: 1 分钟后触发 +- `2h30m`: 2 小时 30 分钟后触发 +- `10:00`: 今天 10 点触发 +- `1m / 10s`: 1 分钟后每隔 10 秒触发 +- `10:00 / 1d`: 从今天起每天 10 点触发 + +## 配置项 + +### minInterval + +- 类型: `number` +- 默认值: `60000` + +允许的最短时间间隔,单位为毫秒。如果传入的 interval 参数小于这个值,将会提示“时间间隔过短”。 diff --git a/docs/de-DE/plugins/shutdown.md b/docs/de-DE/plugins/shutdown.md new file mode 100644 index 00000000..af6f026b --- /dev/null +++ b/docs/de-DE/plugins/shutdown.md @@ -0,0 +1,23 @@ +# koishi-plugin-shutdown + +koishi-plugin-shutdown 提供了适用于 Koishi 的 [shutdown(8)](https://www.freedesktop.org/software/systemd/man/shutdown.html)。通过指令关闭和重启机器人,支持定时和取消。 + +## 指令:shutdown + +- 基本语法:`shutdown [time] [wall]` +- 别名:`exit` +- 最低权限:3 +- 选项: + - `-r, --reboot` 软重启 + - `-R, --reboot-hard` 硬重启 + - `-c, --clear` 清空计划中的关闭 + - `-s, --show` 列出计划中的关闭 + - `-w, --wall` 发送广播消息 + +shutdown 指令可用于关闭或重启 Koishi。 + +`-r` 和 `-R` 选项可用于重启机器人。其中软重启用于从 Koishi CLI 侧重启,硬重启用于从 Koishi Launcher (例如 Koishi Desktop 或 Koishi Android) 侧重启。 + +`-c` 和 `-s` 选项可用于取消或查看计划中的关闭。 + +当传入了 `wall` 参数或使用 `-w` 选项时,将会发送广播消息。该消息会发送给**全部** Koishi 接入的频道。 diff --git a/docs/de-DE/plugins/spawn.md b/docs/de-DE/plugins/spawn.md new file mode 100644 index 00000000..bbb13a66 --- /dev/null +++ b/docs/de-DE/plugins/spawn.md @@ -0,0 +1,40 @@ +# koishi-plugin-spawn + +使用 Koishi 运行终端命令。 + +## 功能展示 + + +exec echo hello +[运行开始] echo hello +[运行完毕] echo hello
hello
+
+ +## 配置项 + +### root + +- 类型:`string` +- 默认值:Koishi 应用目录 + +工作路径。 + +### shell + +- 类型:`string` + +运行命令的程序。 + +### encoding + +- 类型:`string` +- 默认值:`utf8` + +输出内容编码。如果您的系统文本编码不是 `utf8`,可以修改此项以避免乱码。 + +### timeout + +- 类型:`number` +- 默认值:`60000` + +最长运行时间 (毫秒)。超时后将会强制终止进程。 diff --git a/docs/de-DE/plugins/sudo.md b/docs/de-DE/plugins/sudo.md new file mode 100644 index 00000000..0fe32f1f --- /dev/null +++ b/docs/de-DE/plugins/sudo.md @@ -0,0 +1,38 @@ +# koishi-plugin-sudo + +::: tip +要使用本插件,你需要安装数据库支持。 +::: + +koishi-plugin-sudo 提供了名为 sudo 的指令,允许管理员模拟其他用户调用指令。 + +## 指令:sudo + +- 基本语法:`sudo ` +- 最低权限:3 +- 选项: + - `-u, --user [@user]` 目标用户(私聊) + - `-m, --member [@user]` 目标用户(群聊) + - `-c, --channel [#channel]` 目标频道 + +sudo 指令允许你模拟其他用户调用指令。例如当你在私聊上下文时: + +```sh +teach foo bar # 无效,因为 teach 指令只对群上下文生效 +sudo -g #456 teach foo bar # 有效,相当于在群 456 调用 teach foo bar +``` + +除此以外,你还可以模拟在其他频道中调用(假设你现在在频道 123 中调用指令): + +```sh +sudo -g #456 command # 模拟你在群 456 的上下文 +sudo -u @789 command # 模拟用户 789 的私聊上下文 +sudo -m @789 command # 模拟用户 789 在当前频道的上下文 +sudo -u @789 -g #456 command # 模拟用户 789 在频道 456 的上下文 +``` + +尽管切换了调用上下文,但 sudo 指令的输出仍然产生在原上下文中。这在你想调用群指令的时候是很有用的。 + +::: tip +为了安全性考虑,sudo 命令设计的最低使用权限为 3 级,同时切换的用户等级不能高于或等于调用者自身。 +::: diff --git a/docs/de-DE/plugins/verifier.md b/docs/de-DE/plugins/verifier.md new file mode 100644 index 00000000..5728717c --- /dev/null +++ b/docs/de-DE/plugins/verifier.md @@ -0,0 +1,34 @@ +# koishi-plugin-verifier + +koishi-plugin-verifier 可用于处理机器人接收到的各类申请。 + +## 可选行为 + +RequestHandler 可以包含以下行为: + +- 无操作,可留待人工判断 +- 通过全部此类申请 +- 拒绝全部此类申请 +- 当申请者打到某个权限等级时通过,否则无操作 (需要额外填写这里的权限等级) + +你可以在配置界面的下拉菜单中选择其中的行为。 + +## 配置项 + +### onFriendRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应好友请求? + +### onGuildMemberRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应入群申请? + +### onGuildRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应入群邀请? diff --git a/docs/en-US/index.md b/docs/en-US/index.md new file mode 100644 index 00000000..bcde4da2 --- /dev/null +++ b/docs/en-US/index.md @@ -0,0 +1,25 @@ +# Introduction + +这里包含了一系列常用 Koishi 插件的集合。 + +这些插件的功能都十分简单,我们因此将它们放到同一个仓库管理,以便于用户查阅。你也可以将这里理解成一个插件的示例仓库——如果你有与这些插件类似的需求,可以参考这里的代码。 + +## Plugins + +- [别名指令 (Alias)](./plugins/alias.md) +- [@ 指令 (At Command)](./plugins/at-command.md) +- [发送反馈 (Feedback)](./plugins/feedback.md) +- [消息转发 (Forward)](./plugins/forward.md) +- [Rate Limiting (Rate Limit)](./plugins/rate-limit.md) +- [撤回消息 (Recall)](./plugins/recall.md) +- [复读机 (Repeater)](./plugins/repeater.md) +- [自定义回复 (Respondent)](./plugins/respondent.md) +- [计划任务 (Schedule)](./plugins/schedule.md) +- [关闭与重启 (Shutdown)](./plugins/shutdown.md) +- [执行命令 (Spawn)](./plugins/spawn.md) +- [模拟调用 (Sudo)](./plugins/sudo.md) +- [处理申请 (Verifier)](./plugins/verifier.md) + +## 历史 + +这里的插件大都来自于 [Koishi 官方仓库](https://github.com/koishijs/koishi),有些甚至是早期版本 Koishi 的内置功能。自 v4 版本起,Koishi 逐步将许多内置功能移至独立的插件中,以便于用户自由选择需要的功能。 diff --git a/docs/en-US/plugins/alias.md b/docs/en-US/plugins/alias.md new file mode 100644 index 00000000..399b88bb --- /dev/null +++ b/docs/en-US/plugins/alias.md @@ -0,0 +1,45 @@ +# koishi-plugin-alias + +koishi-plugin-alias 可用于创建和删除别名指令。 + +## 基本用法 + + + +

alias about echo

+

Koishi is a cross-platform, extensive, high-performance chatbot framework.

+

官方网站:https://koishi.chat

+
+已成功创建别名指令 about。 +about + +

Koishi is a cross-platform, extensive, high-performance chatbot framework.

+

官方网站:https://koishi.chat

+
+
+ +### 指令:alias + +- 基本语法:`alias ` + +alias 指令用于创建别名指令。 + +### 指令:unalias + +- 基本语法:`unalias ` + +unalias 指令用于删除别名指令。 + +## 功能对比 + +一些其他插件也可以实现类似的功能,但是它们之间有一些区别。 + +### commands + +[@koishijs/plugin-commands](https://koishi.chat/zh-CN/plugins/console/commands.html) 插件提供了 `command` 指令,可以通过 `--alias` 和 `--unalias` 选项来创建和删除别名。与本插件的区别在于,commands 插件创建的只是已有指令的别名,必须依附于某一条指令存在;而本插件创建的指令是独立存在的,因此可以实现多指令的顺序或嵌套调用,在使用上更加灵活。 + +当然,@koishijs/plugin-commands 还提供了其他能力,例如修改父指令、修改指令配置等。你可以同时使用两个插件,以便充分发挥它们的功能。 + +### dialogue + +[koishi-plugin-dialogue](https://dialogue.koishi.chat/zh-CN/) 插件功能十分强大。借助于其自带的指令插值语法,本插件所能实现的功能它都能实现。不过它的语法更复杂,且依赖数据库服务。 diff --git a/docs/en-US/plugins/at-command.md b/docs/en-US/plugins/at-command.md new file mode 100644 index 00000000..0af938b7 --- /dev/null +++ b/docs/en-US/plugins/at-command.md @@ -0,0 +1,24 @@ +# koishi-plugin-at-command + +koishi-plugin-at-command 可用于在有人发送「@机器人」时触发特定指令。 + + +@Koishi + +

Available commands:

+

……

+
+
+ +## 配置项 + +### config.execute + +- 类型:`string` +- 默认值:`'help'` + +要调用的指令。 + +## 替代方案 + +可以使用 [koishi-plugin-dialogue](https://dialogue.koishi.chat/zh-CN/) 实现此插件的全部功能。 diff --git a/docs/en-US/plugins/feedback.md b/docs/en-US/plugins/feedback.md new file mode 100644 index 00000000..3546a3b6 --- /dev/null +++ b/docs/en-US/plugins/feedback.md @@ -0,0 +1,35 @@ +# koishi-plugin-feedback + +## 指令:feedback + +- 基本语法:`feedback ` +- 选项: + - `-r, --receive` 添加到反馈频道列表 (需要 3 级权限) + - `-R` 从反馈频道列表移除 (需要 3 级权限) + +feedback 指令用于向开发者反馈信息。当有人调用 feedback 指令时,传入的 message 就会自动被发送给所有监听反馈的频道。你可以直接回复收到的反馈信息,机器人会把这些消息重新发回到调用 feedback 指令的上下文。这里的用法类似于 [消息转发](./forward.md)。 + + + +

收到来自 Alice 的反馈信息:

+

我也不知道该写什么总之这是一句话

+
+ +
+

收到来自 Alice 的反馈信息:

+

我也不知道该写什么总之这是一句话

+
+

那么这是一句回复

+
+
+ +要管理接收反馈的频道,你可以使用 `-r` 和 `-R` 选项。在任何频道中使用 `-r` 选项,都会将该频道添加到反馈频道列表中;使用 `-R` 选项,会将该频道从反馈频道列表中移除。 + +## 配置项 + +### replyTimeout + +- 类型:`number` +- 默认值:`Time.day` + +反馈回复时限 (单位毫秒)。 diff --git a/docs/en-US/plugins/forward.md b/docs/en-US/plugins/forward.md new file mode 100644 index 00000000..debae356 --- /dev/null +++ b/docs/en-US/plugins/forward.md @@ -0,0 +1,95 @@ +# koishi-plugin-forward + +koishi-plugin-forward 支持在不同的频道之间转发消息。它有两种使用方法: + +## 无数据库模式 + +当没有加载数据库服务时,你需要手动提供转发规则数组。 + +```yaml title=koishi.yml +plugins: + forward: + # 请使用 {platform}:{channelId} 的格式 + - source: qq:123456789 + target: discord:987654321 + selfId: '33557799' +``` + +当用户 Alice 在频道 `source` 中发送消息 foo 的时候,`selfId` 对应的机器人就会在频道 `target` 中发送如下的内容。接着,频道 `target` 中的用户 Bob 也可以通过引用回复这条消息的方式将自己想说的话发回到频道 `source` 中去。 + + + +

Alice: foo

+
+ +

Alice: foo

+

bar

+
+
+ +## 有数据库模式 + +如果已经加载了数据库服务,那么上述规则列表将失效。此时插件会提供指令来管理转发规则。 + +| 指令语法 | 简写形式 | 功能描述 | +| -------------------------------- | ----------- | -------- | +| `forward add ` | `fwd add` | 添加目标频道 | +| `forward remove ` | `fwd rm` | 移除目标频道 | +| `forward clear` | `fwd clear` | 移除全部目标频道 | +| `forward list` | `fwd ls` | 查看目标频道列表 | + +::: warning +上述 `` 的语法是 `#{platform}:{channelId}`,前置的 `#` 字符不可忽略,请注意与配置项的不同。 +::: + +## 配置项 + +### storage + +- 类型:`'database' | 'config'` +- 默认值:`'config'` + +转发规则的存储方式。 + +### rules + +- 类型:`Rule[]` + +转发规则列表。详见 [转发规则](#转发规则)。 + +### replyTimeout + +- 类型:`number` +- 默认值:`3600000` + +转发消息不再响应回复的时间 (毫秒)。 + +## 转发规则 + +### rule.source + +- 类型:`string` +- 必须参数 + +来源频道。 + +### rule.target + +- 类型:`string` +- 必须参数 + +目标频道。 + +### rule.selfId + +- 类型:`string` +- 必须参数 + +负责推送的机器人账号。 + +### rule.guildId + +- 类型:`string` +- 必须参数 + +目标频道的群组编号。 diff --git a/docs/en-US/plugins/rate-limit.md b/docs/en-US/plugins/rate-limit.md new file mode 100644 index 00000000..a7c9ed6f --- /dev/null +++ b/docs/en-US/plugins/rate-limit.md @@ -0,0 +1,34 @@ +# koishi-plugin-rate-limit + +::: tip +要使用本插件,你需要安装数据库支持,并配合 [@koishijs/plugin-commands](https://koishi.chat/manual/usage/command.html#指令管理) 使用。 +::: + +koishi-plugin-rate-limit 可用于限制指令调用频率。 + +## 基本用法 + +安装此插件后,控制台的「指令管理」页面将会增加一些配置项。 + +有些指令 (例如签到抽卡,限制次数的 API 调用等) 我们并不希望被无限调用,这时我们可以通过 `maxUsage` 设置每天访问额度的上限。当超出总次数后,机器人将回复「调用次数已达上限」。 + +另一些指令 (例如高强度刷屏,需要等待一定时间才有结果的功能) 我们并不希望被短时间内重复调用,这时我们可以通过 `minInterval` 设置最短触发间隔。如果一个处于冷却中的指令再次被调用,机器人将会提示「调用过于频繁,请稍后再试」。 + +如果你希望某些选项不计入总次数,可以使用选项配置中的 `notUsage`。启用此项后,当指令调用含有对应的选项时,将不会收到 `maxUsage` 和 `minInterval` 的限制。 + +最后,如果我们希望让多个指令共同同一套速率限制,可以通过 `usageName` 来进行管理。只需将这些指令的 `usageName` 设置为相同的值即可。 + +## 扩展用户字段 + +- **usage:** `Record` 指令调用次数 +- **timers:** `Record` 指令调用时间 + +## 指令:user.usage / user.timer + +- 基本语法:`user.xxx [key] [value]` +- 选项: + - `-s, --set` 设置访问记录(需要 4 级权限) + - `-c, --clear` 清除访问记录(需要 4 级权限) + - `-t, --target [@user]` 目标用户(需要 3 级权限) + +如果不提供 `-s` 和 `-c` 选项,则会显示当前的访问记录。如果使用了 `-s`,就会设置名为 `key` 的访问记录为 `value`。如果使用了 `-c` 且提供了 `key`,就会清除名为 `key` 的访问记录;否则会清除所有的访问记录。 diff --git a/docs/en-US/plugins/recall.md b/docs/en-US/plugins/recall.md new file mode 100644 index 00000000..ceda4e3f --- /dev/null +++ b/docs/en-US/plugins/recall.md @@ -0,0 +1,24 @@ +# koishi-plugin-recall + +koishi-plugin-recall 可用于在群聊中撤回已发送的消息。 + +## 指令:recall + +- 基本语法:`recall [count]` +- 最低权限:2 + +recall 指令有两种用法: + +1. 直接调用时,撤回机器人在当前频道发送的最后几条消息 +2. 引用回复调用时,撤回引用的消息 + +`count` 是要撤回的消息的数量,缺省时为 1。与 broadcast 类似,为了避免风控,每撤回一条消息后 Koishi 也会等待一段时间,同样可以通过 [`delay.broadcast`](htrtps://koishi.chat/api/core/app.md#options-delay) 进行配置。 + +## 配置项 + +### timeout + +- 类型:`number` +- 默认值:`Time.hour` + +保存已发送消息的时间 (毫秒)。超时的消息将被清除。 diff --git a/docs/en-US/plugins/repeater.md b/docs/en-US/plugins/repeater.md new file mode 100644 index 00000000..c0a6f01f --- /dev/null +++ b/docs/en-US/plugins/repeater.md @@ -0,0 +1,129 @@ +# koishi-plugin-repeater + +复读功能一直是很多机器人的传统艺能,但是 Koishi 敢说自己能做得更多。利用内置的复读插件,你的机器人不仅可以实现概率复读,还可以概率打断,甚至可以检测他人重复复读或打断复读的行为并做出回应。让我们开始吧! + +## 控制复读时机和概率 + +通过提供 `onRepeat` 参数,我们可以定义机器人在检测到复读时进行怎样的行为,是跟着复读,还是进行打断,甚至是出警。首先让我们看一个最简单的例子: + +```yaml title=koishi.yml +plugins: + repeater: + onRepeat: + minTimes: 3 + probability: 0.5 +``` + + +foo +foo +foo +foo +foo + + +在这种配置下,当复读语句达到 3 句后,每一次其他人的复读都有 50% 的概率触发机器人的复读行为。而一旦复读后,机器人将不再重复复读。 + +`onRepeat` 除了可以接受一个对象作为参数以外,也支持接受一个函数来自定义当机器人检测到复读时执行的具体行为。下面我们来举几个例子。 + +## 自动打断复读 + +`onRepeat` 函数可以接受两个参数。第一个参数为当前复读行为的状态 state,其中包含目前复读次数 times, 复读语句内容 content,参与复读的用户与他们的复读次数 users,机器人是否已经复读 repeated;第二个参数是当前的会话 session。 + +当我们也不希望机器人复读所有的内容,我们可以通过如下配置让机器人自动打断某些复读: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat: (state) => + state.times >= 2 && + state.content === "这机器人又开始复读了" && + "打断复读!", + } + } +} +``` + + +这机器人又开始复读了 +这机器人又开始复读了 +打断复读! + + +## 检测重复复读 + +来看一个更复杂的例子。我们还可以让 Koishi 对所有将同一句话复读 2 次的用户作出警告。你可以这样配置: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat: (state, session) => + state.users[session.userId] > 1 && + segment.at(session.userId) + "不许重复复读!" + }, + }, +} +``` + + +foo +foo +foo +不许重复复读! + + +## 检测打断复读 + +复读机插件支持的另一个参数 `onInterrupt` 可以定义机器人在检测到复读被其他人打断时的行为。可以传入一个函数来定义此行为,函数签名与 `onRepeat` 一致。 + +例如,如果你想让你的机器人在一条信息已经复读过 5 次以上,且自己也已经复读过后,对任何打断复读的人以 50% 的概率出警。你可以这样配置: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat:{ + minTimes: 2 + }, + onInterrupt: (state, session) => + state.repeated && + state.times >= 3 && + Math.random() > 0.5 && + segment.at(session.userId) + "在?为什么打断复读?", + }, + }, +} +``` + + +bar +bar + bar +打断复读 + 在?为什么打断复读? + + +## 配置项 + +```ts +interface RepeatState { + content: string + repeated: boolean + times: number + users: Record +} + +type StateCallback = (state: RepeatState, session: Session) => void | string + +interface RepeatHandler { + minTimes: number + probability?: number +} + +interface RepeaterOptions { + onRepeat?: RepeatHandler | StateCallback + onInterrupt?: StateCallback +} +``` diff --git a/docs/en-US/plugins/respondent.md b/docs/en-US/plugins/respondent.md new file mode 100644 index 00000000..e357c178 --- /dev/null +++ b/docs/en-US/plugins/respondent.md @@ -0,0 +1,27 @@ +# koishi-plugin-respondent + +自动回复插件,允许设置一套自定义问答规则。 + +如果想要通过指令设置和管理问答,以及更多的功能,可以使用 [koishi-plugin-dialogue](https://dialogue.koishi.chat)。 + +## 配置项 + +### rules[].match + +- 类型: `string` +- 必需参数 + +要匹配的输入。 + +### rules[].reply + +- 类型: `string` +- 必需参数 + +要回复的内容。 + +### rules[].regexp + +- 类型: `boolean` + +是否使用正则表达式匹配。 diff --git a/docs/en-US/plugins/schedule.md b/docs/en-US/plugins/schedule.md new file mode 100644 index 00000000..66b8b917 --- /dev/null +++ b/docs/en-US/plugins/schedule.md @@ -0,0 +1,45 @@ +# koishi-plugin-schedule + +koishi-plugin-schedule 用于在用户侧设置计划任务。 + +::: tip +如果想要在开发者侧设置计划任务,可以使用 [koishi-plugin-cron](https://cron.koishi.chat)。 +::: + + +schedule 1m -- echo 233 +日程已创建,编号为 1。 +schedule -l +1. 今天 10:01:echo 233 +

——— 1 分钟后 ———

+233 +
+ +## 指令:schedule + +添加或查找计划任务。 + +- 基本语法:`schedule [time] -- [command]` +- 选项列表: + - `/ ` 设置触发的间隔秒数 + - `-l, --list` 查看已经设置的日程 + - `-e, --ensure` 错过时间也确保执行 + - `-f, --full` 查找全部上下文 + - `-d, --delete ` 删除已经设置的日程 + +### 定时器语法 + +- `1m`: 1 分钟后触发 +- `2h30m`: 2 小时 30 分钟后触发 +- `10:00`: 今天 10 点触发 +- `1m / 10s`: 1 分钟后每隔 10 秒触发 +- `10:00 / 1d`: 从今天起每天 10 点触发 + +## 配置项 + +### minInterval + +- 类型: `number` +- 默认值: `60000` + +允许的最短时间间隔,单位为毫秒。如果传入的 interval 参数小于这个值,将会提示“时间间隔过短”。 diff --git a/docs/en-US/plugins/shutdown.md b/docs/en-US/plugins/shutdown.md new file mode 100644 index 00000000..af6f026b --- /dev/null +++ b/docs/en-US/plugins/shutdown.md @@ -0,0 +1,23 @@ +# koishi-plugin-shutdown + +koishi-plugin-shutdown 提供了适用于 Koishi 的 [shutdown(8)](https://www.freedesktop.org/software/systemd/man/shutdown.html)。通过指令关闭和重启机器人,支持定时和取消。 + +## 指令:shutdown + +- 基本语法:`shutdown [time] [wall]` +- 别名:`exit` +- 最低权限:3 +- 选项: + - `-r, --reboot` 软重启 + - `-R, --reboot-hard` 硬重启 + - `-c, --clear` 清空计划中的关闭 + - `-s, --show` 列出计划中的关闭 + - `-w, --wall` 发送广播消息 + +shutdown 指令可用于关闭或重启 Koishi。 + +`-r` 和 `-R` 选项可用于重启机器人。其中软重启用于从 Koishi CLI 侧重启,硬重启用于从 Koishi Launcher (例如 Koishi Desktop 或 Koishi Android) 侧重启。 + +`-c` 和 `-s` 选项可用于取消或查看计划中的关闭。 + +当传入了 `wall` 参数或使用 `-w` 选项时,将会发送广播消息。该消息会发送给**全部** Koishi 接入的频道。 diff --git a/docs/en-US/plugins/spawn.md b/docs/en-US/plugins/spawn.md new file mode 100644 index 00000000..bbb13a66 --- /dev/null +++ b/docs/en-US/plugins/spawn.md @@ -0,0 +1,40 @@ +# koishi-plugin-spawn + +使用 Koishi 运行终端命令。 + +## 功能展示 + + +exec echo hello +[运行开始] echo hello +[运行完毕] echo hello
hello
+
+ +## 配置项 + +### root + +- 类型:`string` +- 默认值:Koishi 应用目录 + +工作路径。 + +### shell + +- 类型:`string` + +运行命令的程序。 + +### encoding + +- 类型:`string` +- 默认值:`utf8` + +输出内容编码。如果您的系统文本编码不是 `utf8`,可以修改此项以避免乱码。 + +### timeout + +- 类型:`number` +- 默认值:`60000` + +最长运行时间 (毫秒)。超时后将会强制终止进程。 diff --git a/docs/en-US/plugins/sudo.md b/docs/en-US/plugins/sudo.md new file mode 100644 index 00000000..0fe32f1f --- /dev/null +++ b/docs/en-US/plugins/sudo.md @@ -0,0 +1,38 @@ +# koishi-plugin-sudo + +::: tip +要使用本插件,你需要安装数据库支持。 +::: + +koishi-plugin-sudo 提供了名为 sudo 的指令,允许管理员模拟其他用户调用指令。 + +## 指令:sudo + +- 基本语法:`sudo ` +- 最低权限:3 +- 选项: + - `-u, --user [@user]` 目标用户(私聊) + - `-m, --member [@user]` 目标用户(群聊) + - `-c, --channel [#channel]` 目标频道 + +sudo 指令允许你模拟其他用户调用指令。例如当你在私聊上下文时: + +```sh +teach foo bar # 无效,因为 teach 指令只对群上下文生效 +sudo -g #456 teach foo bar # 有效,相当于在群 456 调用 teach foo bar +``` + +除此以外,你还可以模拟在其他频道中调用(假设你现在在频道 123 中调用指令): + +```sh +sudo -g #456 command # 模拟你在群 456 的上下文 +sudo -u @789 command # 模拟用户 789 的私聊上下文 +sudo -m @789 command # 模拟用户 789 在当前频道的上下文 +sudo -u @789 -g #456 command # 模拟用户 789 在频道 456 的上下文 +``` + +尽管切换了调用上下文,但 sudo 指令的输出仍然产生在原上下文中。这在你想调用群指令的时候是很有用的。 + +::: tip +为了安全性考虑,sudo 命令设计的最低使用权限为 3 级,同时切换的用户等级不能高于或等于调用者自身。 +::: diff --git a/docs/en-US/plugins/verifier.md b/docs/en-US/plugins/verifier.md new file mode 100644 index 00000000..5728717c --- /dev/null +++ b/docs/en-US/plugins/verifier.md @@ -0,0 +1,34 @@ +# koishi-plugin-verifier + +koishi-plugin-verifier 可用于处理机器人接收到的各类申请。 + +## 可选行为 + +RequestHandler 可以包含以下行为: + +- 无操作,可留待人工判断 +- 通过全部此类申请 +- 拒绝全部此类申请 +- 当申请者打到某个权限等级时通过,否则无操作 (需要额外填写这里的权限等级) + +你可以在配置界面的下拉菜单中选择其中的行为。 + +## 配置项 + +### onFriendRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应好友请求? + +### onGuildMemberRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应入群申请? + +### onGuildRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应入群邀请? diff --git a/docs/fr-FR/index.md b/docs/fr-FR/index.md new file mode 100644 index 00000000..b4b2ffee --- /dev/null +++ b/docs/fr-FR/index.md @@ -0,0 +1,25 @@ +# Introduction + +这里包含了一系列常用 Koishi 插件的集合。 + +这些插件的功能都十分简单,我们因此将它们放到同一个仓库管理,以便于用户查阅。你也可以将这里理解成一个插件的示例仓库——如果你有与这些插件类似的需求,可以参考这里的代码。 + +## plugin + +- [别名指令 (Alias)](./plugins/alias.md) +- [@ 指令 (At Command)](./plugins/at-command.md) +- [发送反馈 (Feedback)](./plugins/feedback.md) +- [消息转发 (Forward)](./plugins/forward.md) +- [速率限制 (Rate Limit)](./plugins/rate-limit.md) +- [撤回消息 (Recall)](./plugins/recall.md) +- [复读机 (Repeater)](./plugins/repeater.md) +- [自定义回复 (Respondent)](./plugins/respondent.md) +- [计划任务 (Schedule)](./plugins/schedule.md) +- [关闭与重启 (Shutdown)](./plugins/shutdown.md) +- [执行命令 (Spawn)](./plugins/spawn.md) +- [模拟调用 (Sudo)](./plugins/sudo.md) +- [处理申请 (Verifier)](./plugins/verifier.md) + +## 历史 + +这里的插件大都来自于 [Koishi 官方仓库](https://github.com/koishijs/koishi),有些甚至是早期版本 Koishi 的内置功能。自 v4 版本起,Koishi 逐步将许多内置功能移至独立的插件中,以便于用户自由选择需要的功能。 diff --git a/docs/fr-FR/plugins/alias.md b/docs/fr-FR/plugins/alias.md new file mode 100644 index 00000000..f4baa251 --- /dev/null +++ b/docs/fr-FR/plugins/alias.md @@ -0,0 +1,45 @@ +# koishi-plugin-alias + +koishi-plugin-alias 可用于创建和删除别名指令。 + +## 基本用法 + + + +

alias about echo

+

Koishi est un framework chatbots multiplateforme qui est performant et extensible.

+

官方网站:https://koishi.chat

+
+已成功创建别名指令 about。 +about + +

Koishi est un framework chatbots multiplateforme qui est performant et extensible.

+

官方网站:https://koishi.chat

+
+
+ +### 指令:alias + +- 基本语法:`alias ` + +alias 指令用于创建别名指令。 + +### 指令:unalias + +- 基本语法:`unalias ` + +unalias 指令用于删除别名指令。 + +## 功能对比 + +一些其他插件也可以实现类似的功能,但是它们之间有一些区别。 + +### commands + +[@koishijs/plugin-commands](https://koishi.chat/zh-CN/plugins/console/commands.html) 插件提供了 `command` 指令,可以通过 `--alias` 和 `--unalias` 选项来创建和删除别名。与本插件的区别在于,commands 插件创建的只是已有指令的别名,必须依附于某一条指令存在;而本插件创建的指令是独立存在的,因此可以实现多指令的顺序或嵌套调用,在使用上更加灵活。 + +当然,@koishijs/plugin-commands 还提供了其他能力,例如修改父指令、修改指令配置等。你可以同时使用两个插件,以便充分发挥它们的功能。 + +### dialogue + +[koishi-plugin-dialogue](https://dialogue.koishi.chat/zh-CN/) 插件功能十分强大。借助于其自带的指令插值语法,本插件所能实现的功能它都能实现。不过它的语法更复杂,且依赖数据库服务。 diff --git a/docs/fr-FR/plugins/at-command.md b/docs/fr-FR/plugins/at-command.md new file mode 100644 index 00000000..6abe44eb --- /dev/null +++ b/docs/fr-FR/plugins/at-command.md @@ -0,0 +1,24 @@ +# koishi-plugin-at-command + +koishi-plugin-at-command 可用于在有人发送「@机器人」时触发特定指令。 + + +@Koishi + +

当前可用的指令有:

+

……

+
+
+ +## 配置项 + +### config.execute + +- 类型:`string` +- 默认值:`'help'` + +要调用的指令。 + +## 替代方案 + +可以使用 [koishi-plugin-dialogue](https://dialogue.koishi.chat/zh-CN/) 实现此插件的全部功能。 diff --git a/docs/fr-FR/plugins/feedback.md b/docs/fr-FR/plugins/feedback.md new file mode 100644 index 00000000..3546a3b6 --- /dev/null +++ b/docs/fr-FR/plugins/feedback.md @@ -0,0 +1,35 @@ +# koishi-plugin-feedback + +## 指令:feedback + +- 基本语法:`feedback ` +- 选项: + - `-r, --receive` 添加到反馈频道列表 (需要 3 级权限) + - `-R` 从反馈频道列表移除 (需要 3 级权限) + +feedback 指令用于向开发者反馈信息。当有人调用 feedback 指令时,传入的 message 就会自动被发送给所有监听反馈的频道。你可以直接回复收到的反馈信息,机器人会把这些消息重新发回到调用 feedback 指令的上下文。这里的用法类似于 [消息转发](./forward.md)。 + + + +

收到来自 Alice 的反馈信息:

+

我也不知道该写什么总之这是一句话

+
+ +
+

收到来自 Alice 的反馈信息:

+

我也不知道该写什么总之这是一句话

+
+

那么这是一句回复

+
+
+ +要管理接收反馈的频道,你可以使用 `-r` 和 `-R` 选项。在任何频道中使用 `-r` 选项,都会将该频道添加到反馈频道列表中;使用 `-R` 选项,会将该频道从反馈频道列表中移除。 + +## 配置项 + +### replyTimeout + +- 类型:`number` +- 默认值:`Time.day` + +反馈回复时限 (单位毫秒)。 diff --git a/docs/fr-FR/plugins/forward.md b/docs/fr-FR/plugins/forward.md new file mode 100644 index 00000000..708af4e9 --- /dev/null +++ b/docs/fr-FR/plugins/forward.md @@ -0,0 +1,95 @@ +# koishi-plugin-forward + +koishi-plugin-forward 支持在不同的频道之间转发消息。它有两种使用方法: + +## 无数据库模式 + +当没有加载数据库服务时,你需要手动提供转发规则数组。 + +```yaml title=koishi.yml +plugins: + forward: + # 请使用 {platform}:{channelId} 的格式 + - source: qq:123456789 + target: discord:987654321 + selfId: '33557799' +``` + +当用户 Alice 在频道 `source` 中发送消息 foo 的时候,`selfId` 对应的机器人就会在频道 `target` 中发送如下的内容。接着,频道 `target` 中的用户 Bob 也可以通过引用回复这条消息的方式将自己想说的话发回到频道 `source` 中去。 + + + +

Alice: foo

+
+ +

Alice: foo

+

bar

+
+
+ +## 有数据库模式 + +如果已经加载了数据库服务,那么上述规则列表将失效。此时插件会提供指令来管理转发规则。 + +| 指令语法 | 简写形式 | 功能描述 | +| -------------------------------- | ----------- | ---------------------------------------------------- | +| `forward add ` | `fwd add` | Ajouter un canal pour transfert de message | +| `forward remove ` | `fwd rm` | Supprimer le canal pour transfert de message. | +| `forward clear` | `fwd clear` | Supprimer tous les canaux pour transfert de message. | +| `forward list` | `fwd ls` | Voir la liste des canaux pour transfert de message. | + +::: warning +上述 `` 的语法是 `#{platform}:{channelId}`,前置的 `#` 字符不可忽略,请注意与配置项的不同。 +::: + +## 配置项 + +### storage + +- 类型:`'database' | 'config'` +- 默认值:`'config'` + +转发规则的存储方式。 + +### rules + +- 类型:`Rule[]` + +转发规则列表。详见 [转发规则](#转发规则)。 + +### replyTimeout + +- 类型:`number` +- 默认值:`3600000` + +转发消息不再响应回复的时间 (毫秒)。 + +## 转发规则 + +### rule.source + +- 类型:`string` +- 必须参数 + +来源频道。 + +### rule.target + +- 类型:`string` +- 必须参数 + +目标频道。 + +### rule.selfId + +- 类型:`string` +- 必须参数 + +负责推送的机器人账号。 + +### rule.guildId + +- 类型:`string` +- 必须参数 + +目标频道的群组编号。 diff --git a/docs/fr-FR/plugins/rate-limit.md b/docs/fr-FR/plugins/rate-limit.md new file mode 100644 index 00000000..a7c9ed6f --- /dev/null +++ b/docs/fr-FR/plugins/rate-limit.md @@ -0,0 +1,34 @@ +# koishi-plugin-rate-limit + +::: tip +要使用本插件,你需要安装数据库支持,并配合 [@koishijs/plugin-commands](https://koishi.chat/manual/usage/command.html#指令管理) 使用。 +::: + +koishi-plugin-rate-limit 可用于限制指令调用频率。 + +## 基本用法 + +安装此插件后,控制台的「指令管理」页面将会增加一些配置项。 + +有些指令 (例如签到抽卡,限制次数的 API 调用等) 我们并不希望被无限调用,这时我们可以通过 `maxUsage` 设置每天访问额度的上限。当超出总次数后,机器人将回复「调用次数已达上限」。 + +另一些指令 (例如高强度刷屏,需要等待一定时间才有结果的功能) 我们并不希望被短时间内重复调用,这时我们可以通过 `minInterval` 设置最短触发间隔。如果一个处于冷却中的指令再次被调用,机器人将会提示「调用过于频繁,请稍后再试」。 + +如果你希望某些选项不计入总次数,可以使用选项配置中的 `notUsage`。启用此项后,当指令调用含有对应的选项时,将不会收到 `maxUsage` 和 `minInterval` 的限制。 + +最后,如果我们希望让多个指令共同同一套速率限制,可以通过 `usageName` 来进行管理。只需将这些指令的 `usageName` 设置为相同的值即可。 + +## 扩展用户字段 + +- **usage:** `Record` 指令调用次数 +- **timers:** `Record` 指令调用时间 + +## 指令:user.usage / user.timer + +- 基本语法:`user.xxx [key] [value]` +- 选项: + - `-s, --set` 设置访问记录(需要 4 级权限) + - `-c, --clear` 清除访问记录(需要 4 级权限) + - `-t, --target [@user]` 目标用户(需要 3 级权限) + +如果不提供 `-s` 和 `-c` 选项,则会显示当前的访问记录。如果使用了 `-s`,就会设置名为 `key` 的访问记录为 `value`。如果使用了 `-c` 且提供了 `key`,就会清除名为 `key` 的访问记录;否则会清除所有的访问记录。 diff --git a/docs/fr-FR/plugins/recall.md b/docs/fr-FR/plugins/recall.md new file mode 100644 index 00000000..ceda4e3f --- /dev/null +++ b/docs/fr-FR/plugins/recall.md @@ -0,0 +1,24 @@ +# koishi-plugin-recall + +koishi-plugin-recall 可用于在群聊中撤回已发送的消息。 + +## 指令:recall + +- 基本语法:`recall [count]` +- 最低权限:2 + +recall 指令有两种用法: + +1. 直接调用时,撤回机器人在当前频道发送的最后几条消息 +2. 引用回复调用时,撤回引用的消息 + +`count` 是要撤回的消息的数量,缺省时为 1。与 broadcast 类似,为了避免风控,每撤回一条消息后 Koishi 也会等待一段时间,同样可以通过 [`delay.broadcast`](htrtps://koishi.chat/api/core/app.md#options-delay) 进行配置。 + +## 配置项 + +### timeout + +- 类型:`number` +- 默认值:`Time.hour` + +保存已发送消息的时间 (毫秒)。超时的消息将被清除。 diff --git a/docs/fr-FR/plugins/repeater.md b/docs/fr-FR/plugins/repeater.md new file mode 100644 index 00000000..c0a6f01f --- /dev/null +++ b/docs/fr-FR/plugins/repeater.md @@ -0,0 +1,129 @@ +# koishi-plugin-repeater + +复读功能一直是很多机器人的传统艺能,但是 Koishi 敢说自己能做得更多。利用内置的复读插件,你的机器人不仅可以实现概率复读,还可以概率打断,甚至可以检测他人重复复读或打断复读的行为并做出回应。让我们开始吧! + +## 控制复读时机和概率 + +通过提供 `onRepeat` 参数,我们可以定义机器人在检测到复读时进行怎样的行为,是跟着复读,还是进行打断,甚至是出警。首先让我们看一个最简单的例子: + +```yaml title=koishi.yml +plugins: + repeater: + onRepeat: + minTimes: 3 + probability: 0.5 +``` + + +foo +foo +foo +foo +foo + + +在这种配置下,当复读语句达到 3 句后,每一次其他人的复读都有 50% 的概率触发机器人的复读行为。而一旦复读后,机器人将不再重复复读。 + +`onRepeat` 除了可以接受一个对象作为参数以外,也支持接受一个函数来自定义当机器人检测到复读时执行的具体行为。下面我们来举几个例子。 + +## 自动打断复读 + +`onRepeat` 函数可以接受两个参数。第一个参数为当前复读行为的状态 state,其中包含目前复读次数 times, 复读语句内容 content,参与复读的用户与他们的复读次数 users,机器人是否已经复读 repeated;第二个参数是当前的会话 session。 + +当我们也不希望机器人复读所有的内容,我们可以通过如下配置让机器人自动打断某些复读: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat: (state) => + state.times >= 2 && + state.content === "这机器人又开始复读了" && + "打断复读!", + } + } +} +``` + + +这机器人又开始复读了 +这机器人又开始复读了 +打断复读! + + +## 检测重复复读 + +来看一个更复杂的例子。我们还可以让 Koishi 对所有将同一句话复读 2 次的用户作出警告。你可以这样配置: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat: (state, session) => + state.users[session.userId] > 1 && + segment.at(session.userId) + "不许重复复读!" + }, + }, +} +``` + + +foo +foo +foo +不许重复复读! + + +## 检测打断复读 + +复读机插件支持的另一个参数 `onInterrupt` 可以定义机器人在检测到复读被其他人打断时的行为。可以传入一个函数来定义此行为,函数签名与 `onRepeat` 一致。 + +例如,如果你想让你的机器人在一条信息已经复读过 5 次以上,且自己也已经复读过后,对任何打断复读的人以 50% 的概率出警。你可以这样配置: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat:{ + minTimes: 2 + }, + onInterrupt: (state, session) => + state.repeated && + state.times >= 3 && + Math.random() > 0.5 && + segment.at(session.userId) + "在?为什么打断复读?", + }, + }, +} +``` + + +bar +bar + bar +打断复读 + 在?为什么打断复读? + + +## 配置项 + +```ts +interface RepeatState { + content: string + repeated: boolean + times: number + users: Record +} + +type StateCallback = (state: RepeatState, session: Session) => void | string + +interface RepeatHandler { + minTimes: number + probability?: number +} + +interface RepeaterOptions { + onRepeat?: RepeatHandler | StateCallback + onInterrupt?: StateCallback +} +``` diff --git a/docs/fr-FR/plugins/respondent.md b/docs/fr-FR/plugins/respondent.md new file mode 100644 index 00000000..e357c178 --- /dev/null +++ b/docs/fr-FR/plugins/respondent.md @@ -0,0 +1,27 @@ +# koishi-plugin-respondent + +自动回复插件,允许设置一套自定义问答规则。 + +如果想要通过指令设置和管理问答,以及更多的功能,可以使用 [koishi-plugin-dialogue](https://dialogue.koishi.chat)。 + +## 配置项 + +### rules[].match + +- 类型: `string` +- 必需参数 + +要匹配的输入。 + +### rules[].reply + +- 类型: `string` +- 必需参数 + +要回复的内容。 + +### rules[].regexp + +- 类型: `boolean` + +是否使用正则表达式匹配。 diff --git a/docs/fr-FR/plugins/schedule.md b/docs/fr-FR/plugins/schedule.md new file mode 100644 index 00000000..66b8b917 --- /dev/null +++ b/docs/fr-FR/plugins/schedule.md @@ -0,0 +1,45 @@ +# koishi-plugin-schedule + +koishi-plugin-schedule 用于在用户侧设置计划任务。 + +::: tip +如果想要在开发者侧设置计划任务,可以使用 [koishi-plugin-cron](https://cron.koishi.chat)。 +::: + + +schedule 1m -- echo 233 +日程已创建,编号为 1。 +schedule -l +1. 今天 10:01:echo 233 +

——— 1 分钟后 ———

+233 +
+ +## 指令:schedule + +添加或查找计划任务。 + +- 基本语法:`schedule [time] -- [command]` +- 选项列表: + - `/ ` 设置触发的间隔秒数 + - `-l, --list` 查看已经设置的日程 + - `-e, --ensure` 错过时间也确保执行 + - `-f, --full` 查找全部上下文 + - `-d, --delete ` 删除已经设置的日程 + +### 定时器语法 + +- `1m`: 1 分钟后触发 +- `2h30m`: 2 小时 30 分钟后触发 +- `10:00`: 今天 10 点触发 +- `1m / 10s`: 1 分钟后每隔 10 秒触发 +- `10:00 / 1d`: 从今天起每天 10 点触发 + +## 配置项 + +### minInterval + +- 类型: `number` +- 默认值: `60000` + +允许的最短时间间隔,单位为毫秒。如果传入的 interval 参数小于这个值,将会提示“时间间隔过短”。 diff --git a/docs/fr-FR/plugins/shutdown.md b/docs/fr-FR/plugins/shutdown.md new file mode 100644 index 00000000..af6f026b --- /dev/null +++ b/docs/fr-FR/plugins/shutdown.md @@ -0,0 +1,23 @@ +# koishi-plugin-shutdown + +koishi-plugin-shutdown 提供了适用于 Koishi 的 [shutdown(8)](https://www.freedesktop.org/software/systemd/man/shutdown.html)。通过指令关闭和重启机器人,支持定时和取消。 + +## 指令:shutdown + +- 基本语法:`shutdown [time] [wall]` +- 别名:`exit` +- 最低权限:3 +- 选项: + - `-r, --reboot` 软重启 + - `-R, --reboot-hard` 硬重启 + - `-c, --clear` 清空计划中的关闭 + - `-s, --show` 列出计划中的关闭 + - `-w, --wall` 发送广播消息 + +shutdown 指令可用于关闭或重启 Koishi。 + +`-r` 和 `-R` 选项可用于重启机器人。其中软重启用于从 Koishi CLI 侧重启,硬重启用于从 Koishi Launcher (例如 Koishi Desktop 或 Koishi Android) 侧重启。 + +`-c` 和 `-s` 选项可用于取消或查看计划中的关闭。 + +当传入了 `wall` 参数或使用 `-w` 选项时,将会发送广播消息。该消息会发送给**全部** Koishi 接入的频道。 diff --git a/docs/fr-FR/plugins/spawn.md b/docs/fr-FR/plugins/spawn.md new file mode 100644 index 00000000..bbb13a66 --- /dev/null +++ b/docs/fr-FR/plugins/spawn.md @@ -0,0 +1,40 @@ +# koishi-plugin-spawn + +使用 Koishi 运行终端命令。 + +## 功能展示 + + +exec echo hello +[运行开始] echo hello +[运行完毕] echo hello
hello
+
+ +## 配置项 + +### root + +- 类型:`string` +- 默认值:Koishi 应用目录 + +工作路径。 + +### shell + +- 类型:`string` + +运行命令的程序。 + +### encoding + +- 类型:`string` +- 默认值:`utf8` + +输出内容编码。如果您的系统文本编码不是 `utf8`,可以修改此项以避免乱码。 + +### timeout + +- 类型:`number` +- 默认值:`60000` + +最长运行时间 (毫秒)。超时后将会强制终止进程。 diff --git a/docs/fr-FR/plugins/sudo.md b/docs/fr-FR/plugins/sudo.md new file mode 100644 index 00000000..0fe32f1f --- /dev/null +++ b/docs/fr-FR/plugins/sudo.md @@ -0,0 +1,38 @@ +# koishi-plugin-sudo + +::: tip +要使用本插件,你需要安装数据库支持。 +::: + +koishi-plugin-sudo 提供了名为 sudo 的指令,允许管理员模拟其他用户调用指令。 + +## 指令:sudo + +- 基本语法:`sudo ` +- 最低权限:3 +- 选项: + - `-u, --user [@user]` 目标用户(私聊) + - `-m, --member [@user]` 目标用户(群聊) + - `-c, --channel [#channel]` 目标频道 + +sudo 指令允许你模拟其他用户调用指令。例如当你在私聊上下文时: + +```sh +teach foo bar # 无效,因为 teach 指令只对群上下文生效 +sudo -g #456 teach foo bar # 有效,相当于在群 456 调用 teach foo bar +``` + +除此以外,你还可以模拟在其他频道中调用(假设你现在在频道 123 中调用指令): + +```sh +sudo -g #456 command # 模拟你在群 456 的上下文 +sudo -u @789 command # 模拟用户 789 的私聊上下文 +sudo -m @789 command # 模拟用户 789 在当前频道的上下文 +sudo -u @789 -g #456 command # 模拟用户 789 在频道 456 的上下文 +``` + +尽管切换了调用上下文,但 sudo 指令的输出仍然产生在原上下文中。这在你想调用群指令的时候是很有用的。 + +::: tip +为了安全性考虑,sudo 命令设计的最低使用权限为 3 级,同时切换的用户等级不能高于或等于调用者自身。 +::: diff --git a/docs/fr-FR/plugins/verifier.md b/docs/fr-FR/plugins/verifier.md new file mode 100644 index 00000000..5728717c --- /dev/null +++ b/docs/fr-FR/plugins/verifier.md @@ -0,0 +1,34 @@ +# koishi-plugin-verifier + +koishi-plugin-verifier 可用于处理机器人接收到的各类申请。 + +## 可选行为 + +RequestHandler 可以包含以下行为: + +- 无操作,可留待人工判断 +- 通过全部此类申请 +- 拒绝全部此类申请 +- 当申请者打到某个权限等级时通过,否则无操作 (需要额外填写这里的权限等级) + +你可以在配置界面的下拉菜单中选择其中的行为。 + +## 配置项 + +### onFriendRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应好友请求? + +### onGuildMemberRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应入群申请? + +### onGuildRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应入群邀请? diff --git a/docs/ja-JP/index.md b/docs/ja-JP/index.md new file mode 100644 index 00000000..2cf8ecff --- /dev/null +++ b/docs/ja-JP/index.md @@ -0,0 +1,25 @@ +# 介绍 + +这里包含了一系列常用 Koishi 插件的集合。 + +这些插件的功能都十分简单,我们因此将它们放到同一个仓库管理,以便于用户查阅。你也可以将这里理解成一个插件的示例仓库——如果你有与这些插件类似的需求,可以参考这里的代码。 + +## プラグイン + +- [别名指令 (Alias)](./plugins/alias.md) +- [@ 指令 (At Command)](./plugins/at-command.md) +- [发送反馈 (Feedback)](./plugins/feedback.md) +- [消息转发 (Forward)](./plugins/forward.md) +- [速率限制 (Rate Limit)](./plugins/rate-limit.md) +- [撤回消息 (Recall)](./plugins/recall.md) +- [复读机 (Repeater)](./plugins/repeater.md) +- [自定义回复 (Respondent)](./plugins/respondent.md) +- [计划任务 (Schedule)](./plugins/schedule.md) +- [关闭与重启 (Shutdown)](./plugins/shutdown.md) +- [执行命令 (Spawn)](./plugins/spawn.md) +- [模拟调用 (Sudo)](./plugins/sudo.md) +- [处理申请 (Verifier)](./plugins/verifier.md) + +## 历史 + +这里的插件大都来自于 [Koishi 官方仓库](https://github.com/koishijs/koishi),有些甚至是早期版本 Koishi 的内置功能。自 v4 版本起,Koishi 逐步将许多内置功能移至独立的插件中,以便于用户自由选择需要的功能。 diff --git a/docs/ja-JP/plugins/alias.md b/docs/ja-JP/plugins/alias.md new file mode 100644 index 00000000..73882146 --- /dev/null +++ b/docs/ja-JP/plugins/alias.md @@ -0,0 +1,45 @@ +# koishi-plugin-alias + +koishi-plugin-alias 可用于创建和删除别名指令。 + +## 基本用法 + + + +

alias about echo

+

Koishi はクロスプラットフォーム、拡張可能な高性能チャットボットフレームワークです。

+

官方网站:https://koishi.chat

+
+已成功创建别名指令 about。 +about + +

Koishi はクロスプラットフォーム、拡張可能な高性能チャットボットフレームワークです。

+

官方网站:https://koishi.chat

+
+
+ +### 指令:alias + +- 基本语法:`alias ` + +alias 指令用于创建别名指令。 + +### 指令:unalias + +- 基本语法:`unalias ` + +unalias 指令用于删除别名指令。 + +## 功能对比 + +一些其他插件也可以实现类似的功能,但是它们之间有一些区别。 + +### commands + +[@koishijs/plugin-commands](https://koishi.chat/zh-CN/plugins/console/commands.html) 插件提供了 `command` 指令,可以通过 `--alias` 和 `--unalias` 选项来创建和删除别名。与本插件的区别在于,commands 插件创建的只是已有指令的别名,必须依附于某一条指令存在;而本插件创建的指令是独立存在的,因此可以实现多指令的顺序或嵌套调用,在使用上更加灵活。 + +当然,@koishijs/plugin-commands 还提供了其他能力,例如修改父指令、修改指令配置等。你可以同时使用两个插件,以便充分发挥它们的功能。 + +### dialogue + +[koishi-plugin-dialogue](https://dialogue.koishi.chat/zh-CN/) 插件功能十分强大。借助于其自带的指令插值语法,本插件所能实现的功能它都能实现。不过它的语法更复杂,且依赖数据库服务。 diff --git a/docs/ja-JP/plugins/at-command.md b/docs/ja-JP/plugins/at-command.md new file mode 100644 index 00000000..6abe44eb --- /dev/null +++ b/docs/ja-JP/plugins/at-command.md @@ -0,0 +1,24 @@ +# koishi-plugin-at-command + +koishi-plugin-at-command 可用于在有人发送「@机器人」时触发特定指令。 + + +@Koishi + +

当前可用的指令有:

+

……

+
+
+ +## 配置项 + +### config.execute + +- 类型:`string` +- 默认值:`'help'` + +要调用的指令。 + +## 替代方案 + +可以使用 [koishi-plugin-dialogue](https://dialogue.koishi.chat/zh-CN/) 实现此插件的全部功能。 diff --git a/docs/ja-JP/plugins/feedback.md b/docs/ja-JP/plugins/feedback.md new file mode 100644 index 00000000..3546a3b6 --- /dev/null +++ b/docs/ja-JP/plugins/feedback.md @@ -0,0 +1,35 @@ +# koishi-plugin-feedback + +## 指令:feedback + +- 基本语法:`feedback ` +- 选项: + - `-r, --receive` 添加到反馈频道列表 (需要 3 级权限) + - `-R` 从反馈频道列表移除 (需要 3 级权限) + +feedback 指令用于向开发者反馈信息。当有人调用 feedback 指令时,传入的 message 就会自动被发送给所有监听反馈的频道。你可以直接回复收到的反馈信息,机器人会把这些消息重新发回到调用 feedback 指令的上下文。这里的用法类似于 [消息转发](./forward.md)。 + + + +

收到来自 Alice 的反馈信息:

+

我也不知道该写什么总之这是一句话

+
+ +
+

收到来自 Alice 的反馈信息:

+

我也不知道该写什么总之这是一句话

+
+

那么这是一句回复

+
+
+ +要管理接收反馈的频道,你可以使用 `-r` 和 `-R` 选项。在任何频道中使用 `-r` 选项,都会将该频道添加到反馈频道列表中;使用 `-R` 选项,会将该频道从反馈频道列表中移除。 + +## 配置项 + +### replyTimeout + +- 类型:`number` +- 默认值:`Time.day` + +反馈回复时限 (单位毫秒)。 diff --git a/docs/ja-JP/plugins/forward.md b/docs/ja-JP/plugins/forward.md new file mode 100644 index 00000000..debae356 --- /dev/null +++ b/docs/ja-JP/plugins/forward.md @@ -0,0 +1,95 @@ +# koishi-plugin-forward + +koishi-plugin-forward 支持在不同的频道之间转发消息。它有两种使用方法: + +## 无数据库模式 + +当没有加载数据库服务时,你需要手动提供转发规则数组。 + +```yaml title=koishi.yml +plugins: + forward: + # 请使用 {platform}:{channelId} 的格式 + - source: qq:123456789 + target: discord:987654321 + selfId: '33557799' +``` + +当用户 Alice 在频道 `source` 中发送消息 foo 的时候,`selfId` 对应的机器人就会在频道 `target` 中发送如下的内容。接着,频道 `target` 中的用户 Bob 也可以通过引用回复这条消息的方式将自己想说的话发回到频道 `source` 中去。 + + + +

Alice: foo

+
+ +

Alice: foo

+

bar

+
+
+ +## 有数据库模式 + +如果已经加载了数据库服务,那么上述规则列表将失效。此时插件会提供指令来管理转发规则。 + +| 指令语法 | 简写形式 | 功能描述 | +| -------------------------------- | ----------- | -------- | +| `forward add ` | `fwd add` | 添加目标频道 | +| `forward remove ` | `fwd rm` | 移除目标频道 | +| `forward clear` | `fwd clear` | 移除全部目标频道 | +| `forward list` | `fwd ls` | 查看目标频道列表 | + +::: warning +上述 `` 的语法是 `#{platform}:{channelId}`,前置的 `#` 字符不可忽略,请注意与配置项的不同。 +::: + +## 配置项 + +### storage + +- 类型:`'database' | 'config'` +- 默认值:`'config'` + +转发规则的存储方式。 + +### rules + +- 类型:`Rule[]` + +转发规则列表。详见 [转发规则](#转发规则)。 + +### replyTimeout + +- 类型:`number` +- 默认值:`3600000` + +转发消息不再响应回复的时间 (毫秒)。 + +## 转发规则 + +### rule.source + +- 类型:`string` +- 必须参数 + +来源频道。 + +### rule.target + +- 类型:`string` +- 必须参数 + +目标频道。 + +### rule.selfId + +- 类型:`string` +- 必须参数 + +负责推送的机器人账号。 + +### rule.guildId + +- 类型:`string` +- 必须参数 + +目标频道的群组编号。 diff --git a/docs/ja-JP/plugins/rate-limit.md b/docs/ja-JP/plugins/rate-limit.md new file mode 100644 index 00000000..a7c9ed6f --- /dev/null +++ b/docs/ja-JP/plugins/rate-limit.md @@ -0,0 +1,34 @@ +# koishi-plugin-rate-limit + +::: tip +要使用本插件,你需要安装数据库支持,并配合 [@koishijs/plugin-commands](https://koishi.chat/manual/usage/command.html#指令管理) 使用。 +::: + +koishi-plugin-rate-limit 可用于限制指令调用频率。 + +## 基本用法 + +安装此插件后,控制台的「指令管理」页面将会增加一些配置项。 + +有些指令 (例如签到抽卡,限制次数的 API 调用等) 我们并不希望被无限调用,这时我们可以通过 `maxUsage` 设置每天访问额度的上限。当超出总次数后,机器人将回复「调用次数已达上限」。 + +另一些指令 (例如高强度刷屏,需要等待一定时间才有结果的功能) 我们并不希望被短时间内重复调用,这时我们可以通过 `minInterval` 设置最短触发间隔。如果一个处于冷却中的指令再次被调用,机器人将会提示「调用过于频繁,请稍后再试」。 + +如果你希望某些选项不计入总次数,可以使用选项配置中的 `notUsage`。启用此项后,当指令调用含有对应的选项时,将不会收到 `maxUsage` 和 `minInterval` 的限制。 + +最后,如果我们希望让多个指令共同同一套速率限制,可以通过 `usageName` 来进行管理。只需将这些指令的 `usageName` 设置为相同的值即可。 + +## 扩展用户字段 + +- **usage:** `Record` 指令调用次数 +- **timers:** `Record` 指令调用时间 + +## 指令:user.usage / user.timer + +- 基本语法:`user.xxx [key] [value]` +- 选项: + - `-s, --set` 设置访问记录(需要 4 级权限) + - `-c, --clear` 清除访问记录(需要 4 级权限) + - `-t, --target [@user]` 目标用户(需要 3 级权限) + +如果不提供 `-s` 和 `-c` 选项,则会显示当前的访问记录。如果使用了 `-s`,就会设置名为 `key` 的访问记录为 `value`。如果使用了 `-c` 且提供了 `key`,就会清除名为 `key` 的访问记录;否则会清除所有的访问记录。 diff --git a/docs/ja-JP/plugins/recall.md b/docs/ja-JP/plugins/recall.md new file mode 100644 index 00000000..ceda4e3f --- /dev/null +++ b/docs/ja-JP/plugins/recall.md @@ -0,0 +1,24 @@ +# koishi-plugin-recall + +koishi-plugin-recall 可用于在群聊中撤回已发送的消息。 + +## 指令:recall + +- 基本语法:`recall [count]` +- 最低权限:2 + +recall 指令有两种用法: + +1. 直接调用时,撤回机器人在当前频道发送的最后几条消息 +2. 引用回复调用时,撤回引用的消息 + +`count` 是要撤回的消息的数量,缺省时为 1。与 broadcast 类似,为了避免风控,每撤回一条消息后 Koishi 也会等待一段时间,同样可以通过 [`delay.broadcast`](htrtps://koishi.chat/api/core/app.md#options-delay) 进行配置。 + +## 配置项 + +### timeout + +- 类型:`number` +- 默认值:`Time.hour` + +保存已发送消息的时间 (毫秒)。超时的消息将被清除。 diff --git a/docs/ja-JP/plugins/repeater.md b/docs/ja-JP/plugins/repeater.md new file mode 100644 index 00000000..c0a6f01f --- /dev/null +++ b/docs/ja-JP/plugins/repeater.md @@ -0,0 +1,129 @@ +# koishi-plugin-repeater + +复读功能一直是很多机器人的传统艺能,但是 Koishi 敢说自己能做得更多。利用内置的复读插件,你的机器人不仅可以实现概率复读,还可以概率打断,甚至可以检测他人重复复读或打断复读的行为并做出回应。让我们开始吧! + +## 控制复读时机和概率 + +通过提供 `onRepeat` 参数,我们可以定义机器人在检测到复读时进行怎样的行为,是跟着复读,还是进行打断,甚至是出警。首先让我们看一个最简单的例子: + +```yaml title=koishi.yml +plugins: + repeater: + onRepeat: + minTimes: 3 + probability: 0.5 +``` + + +foo +foo +foo +foo +foo + + +在这种配置下,当复读语句达到 3 句后,每一次其他人的复读都有 50% 的概率触发机器人的复读行为。而一旦复读后,机器人将不再重复复读。 + +`onRepeat` 除了可以接受一个对象作为参数以外,也支持接受一个函数来自定义当机器人检测到复读时执行的具体行为。下面我们来举几个例子。 + +## 自动打断复读 + +`onRepeat` 函数可以接受两个参数。第一个参数为当前复读行为的状态 state,其中包含目前复读次数 times, 复读语句内容 content,参与复读的用户与他们的复读次数 users,机器人是否已经复读 repeated;第二个参数是当前的会话 session。 + +当我们也不希望机器人复读所有的内容,我们可以通过如下配置让机器人自动打断某些复读: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat: (state) => + state.times >= 2 && + state.content === "这机器人又开始复读了" && + "打断复读!", + } + } +} +``` + + +这机器人又开始复读了 +这机器人又开始复读了 +打断复读! + + +## 检测重复复读 + +来看一个更复杂的例子。我们还可以让 Koishi 对所有将同一句话复读 2 次的用户作出警告。你可以这样配置: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat: (state, session) => + state.users[session.userId] > 1 && + segment.at(session.userId) + "不许重复复读!" + }, + }, +} +``` + + +foo +foo +foo +不许重复复读! + + +## 检测打断复读 + +复读机插件支持的另一个参数 `onInterrupt` 可以定义机器人在检测到复读被其他人打断时的行为。可以传入一个函数来定义此行为,函数签名与 `onRepeat` 一致。 + +例如,如果你想让你的机器人在一条信息已经复读过 5 次以上,且自己也已经复读过后,对任何打断复读的人以 50% 的概率出警。你可以这样配置: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat:{ + minTimes: 2 + }, + onInterrupt: (state, session) => + state.repeated && + state.times >= 3 && + Math.random() > 0.5 && + segment.at(session.userId) + "在?为什么打断复读?", + }, + }, +} +``` + + +bar +bar + bar +打断复读 + 在?为什么打断复读? + + +## 配置项 + +```ts +interface RepeatState { + content: string + repeated: boolean + times: number + users: Record +} + +type StateCallback = (state: RepeatState, session: Session) => void | string + +interface RepeatHandler { + minTimes: number + probability?: number +} + +interface RepeaterOptions { + onRepeat?: RepeatHandler | StateCallback + onInterrupt?: StateCallback +} +``` diff --git a/docs/ja-JP/plugins/respondent.md b/docs/ja-JP/plugins/respondent.md new file mode 100644 index 00000000..e357c178 --- /dev/null +++ b/docs/ja-JP/plugins/respondent.md @@ -0,0 +1,27 @@ +# koishi-plugin-respondent + +自动回复插件,允许设置一套自定义问答规则。 + +如果想要通过指令设置和管理问答,以及更多的功能,可以使用 [koishi-plugin-dialogue](https://dialogue.koishi.chat)。 + +## 配置项 + +### rules[].match + +- 类型: `string` +- 必需参数 + +要匹配的输入。 + +### rules[].reply + +- 类型: `string` +- 必需参数 + +要回复的内容。 + +### rules[].regexp + +- 类型: `boolean` + +是否使用正则表达式匹配。 diff --git a/docs/ja-JP/plugins/schedule.md b/docs/ja-JP/plugins/schedule.md new file mode 100644 index 00000000..66b8b917 --- /dev/null +++ b/docs/ja-JP/plugins/schedule.md @@ -0,0 +1,45 @@ +# koishi-plugin-schedule + +koishi-plugin-schedule 用于在用户侧设置计划任务。 + +::: tip +如果想要在开发者侧设置计划任务,可以使用 [koishi-plugin-cron](https://cron.koishi.chat)。 +::: + + +schedule 1m -- echo 233 +日程已创建,编号为 1。 +schedule -l +1. 今天 10:01:echo 233 +

——— 1 分钟后 ———

+233 +
+ +## 指令:schedule + +添加或查找计划任务。 + +- 基本语法:`schedule [time] -- [command]` +- 选项列表: + - `/ ` 设置触发的间隔秒数 + - `-l, --list` 查看已经设置的日程 + - `-e, --ensure` 错过时间也确保执行 + - `-f, --full` 查找全部上下文 + - `-d, --delete ` 删除已经设置的日程 + +### 定时器语法 + +- `1m`: 1 分钟后触发 +- `2h30m`: 2 小时 30 分钟后触发 +- `10:00`: 今天 10 点触发 +- `1m / 10s`: 1 分钟后每隔 10 秒触发 +- `10:00 / 1d`: 从今天起每天 10 点触发 + +## 配置项 + +### minInterval + +- 类型: `number` +- 默认值: `60000` + +允许的最短时间间隔,单位为毫秒。如果传入的 interval 参数小于这个值,将会提示“时间间隔过短”。 diff --git a/docs/ja-JP/plugins/shutdown.md b/docs/ja-JP/plugins/shutdown.md new file mode 100644 index 00000000..af6f026b --- /dev/null +++ b/docs/ja-JP/plugins/shutdown.md @@ -0,0 +1,23 @@ +# koishi-plugin-shutdown + +koishi-plugin-shutdown 提供了适用于 Koishi 的 [shutdown(8)](https://www.freedesktop.org/software/systemd/man/shutdown.html)。通过指令关闭和重启机器人,支持定时和取消。 + +## 指令:shutdown + +- 基本语法:`shutdown [time] [wall]` +- 别名:`exit` +- 最低权限:3 +- 选项: + - `-r, --reboot` 软重启 + - `-R, --reboot-hard` 硬重启 + - `-c, --clear` 清空计划中的关闭 + - `-s, --show` 列出计划中的关闭 + - `-w, --wall` 发送广播消息 + +shutdown 指令可用于关闭或重启 Koishi。 + +`-r` 和 `-R` 选项可用于重启机器人。其中软重启用于从 Koishi CLI 侧重启,硬重启用于从 Koishi Launcher (例如 Koishi Desktop 或 Koishi Android) 侧重启。 + +`-c` 和 `-s` 选项可用于取消或查看计划中的关闭。 + +当传入了 `wall` 参数或使用 `-w` 选项时,将会发送广播消息。该消息会发送给**全部** Koishi 接入的频道。 diff --git a/docs/ja-JP/plugins/spawn.md b/docs/ja-JP/plugins/spawn.md new file mode 100644 index 00000000..bbb13a66 --- /dev/null +++ b/docs/ja-JP/plugins/spawn.md @@ -0,0 +1,40 @@ +# koishi-plugin-spawn + +使用 Koishi 运行终端命令。 + +## 功能展示 + + +exec echo hello +[运行开始] echo hello +[运行完毕] echo hello
hello
+
+ +## 配置项 + +### root + +- 类型:`string` +- 默认值:Koishi 应用目录 + +工作路径。 + +### shell + +- 类型:`string` + +运行命令的程序。 + +### encoding + +- 类型:`string` +- 默认值:`utf8` + +输出内容编码。如果您的系统文本编码不是 `utf8`,可以修改此项以避免乱码。 + +### timeout + +- 类型:`number` +- 默认值:`60000` + +最长运行时间 (毫秒)。超时后将会强制终止进程。 diff --git a/docs/ja-JP/plugins/sudo.md b/docs/ja-JP/plugins/sudo.md new file mode 100644 index 00000000..0fe32f1f --- /dev/null +++ b/docs/ja-JP/plugins/sudo.md @@ -0,0 +1,38 @@ +# koishi-plugin-sudo + +::: tip +要使用本插件,你需要安装数据库支持。 +::: + +koishi-plugin-sudo 提供了名为 sudo 的指令,允许管理员模拟其他用户调用指令。 + +## 指令:sudo + +- 基本语法:`sudo ` +- 最低权限:3 +- 选项: + - `-u, --user [@user]` 目标用户(私聊) + - `-m, --member [@user]` 目标用户(群聊) + - `-c, --channel [#channel]` 目标频道 + +sudo 指令允许你模拟其他用户调用指令。例如当你在私聊上下文时: + +```sh +teach foo bar # 无效,因为 teach 指令只对群上下文生效 +sudo -g #456 teach foo bar # 有效,相当于在群 456 调用 teach foo bar +``` + +除此以外,你还可以模拟在其他频道中调用(假设你现在在频道 123 中调用指令): + +```sh +sudo -g #456 command # 模拟你在群 456 的上下文 +sudo -u @789 command # 模拟用户 789 的私聊上下文 +sudo -m @789 command # 模拟用户 789 在当前频道的上下文 +sudo -u @789 -g #456 command # 模拟用户 789 在频道 456 的上下文 +``` + +尽管切换了调用上下文,但 sudo 指令的输出仍然产生在原上下文中。这在你想调用群指令的时候是很有用的。 + +::: tip +为了安全性考虑,sudo 命令设计的最低使用权限为 3 级,同时切换的用户等级不能高于或等于调用者自身。 +::: diff --git a/docs/ja-JP/plugins/verifier.md b/docs/ja-JP/plugins/verifier.md new file mode 100644 index 00000000..5728717c --- /dev/null +++ b/docs/ja-JP/plugins/verifier.md @@ -0,0 +1,34 @@ +# koishi-plugin-verifier + +koishi-plugin-verifier 可用于处理机器人接收到的各类申请。 + +## 可选行为 + +RequestHandler 可以包含以下行为: + +- 无操作,可留待人工判断 +- 通过全部此类申请 +- 拒绝全部此类申请 +- 当申请者打到某个权限等级时通过,否则无操作 (需要额外填写这里的权限等级) + +你可以在配置界面的下拉菜单中选择其中的行为。 + +## 配置项 + +### onFriendRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应好友请求? + +### onGuildMemberRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应入群申请? + +### onGuildRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应入群邀请? diff --git a/docs/ru-RU/index.md b/docs/ru-RU/index.md new file mode 100644 index 00000000..3940b5c8 --- /dev/null +++ b/docs/ru-RU/index.md @@ -0,0 +1,25 @@ +# 介绍 + +这里包含了一系列常用 Koishi 插件的集合。 + +这些插件的功能都十分简单,我们因此将它们放到同一个仓库管理,以便于用户查阅。你也可以将这里理解成一个插件的示例仓库——如果你有与这些插件类似的需求,可以参考这里的代码。 + +## 插件 + +- [别名指令 (Alias)](./plugins/alias.md) +- [@ 指令 (At Command)](./plugins/at-command.md) +- [发送反馈 (Feedback)](./plugins/feedback.md) +- [消息转发 (Forward)](./plugins/forward.md) +- [速率限制 (Rate Limit)](./plugins/rate-limit.md) +- [撤回消息 (Recall)](./plugins/recall.md) +- [复读机 (Repeater)](./plugins/repeater.md) +- [自定义回复 (Respondent)](./plugins/respondent.md) +- [计划任务 (Schedule)](./plugins/schedule.md) +- [关闭与重启 (Shutdown)](./plugins/shutdown.md) +- [执行命令 (Spawn)](./plugins/spawn.md) +- [模拟调用 (Sudo)](./plugins/sudo.md) +- [处理申请 (Verifier)](./plugins/verifier.md) + +## 历史 + +这里的插件大都来自于 [Koishi 官方仓库](https://github.com/koishijs/koishi),有些甚至是早期版本 Koishi 的内置功能。自 v4 版本起,Koishi 逐步将许多内置功能移至独立的插件中,以便于用户自由选择需要的功能。 diff --git a/docs/ru-RU/plugins/alias.md b/docs/ru-RU/plugins/alias.md new file mode 100644 index 00000000..0f8ef09e --- /dev/null +++ b/docs/ru-RU/plugins/alias.md @@ -0,0 +1,45 @@ +# koishi-plugin-alias + +koishi-plugin-alias 可用于创建和删除别名指令。 + +## 基本用法 + + + +

alias about echo

+

Koishi 是一个跨平台、可扩展、高性能的聊天机器人框架。

+

官方网站:https://koishi.chat

+
+已成功创建别名指令 about。 +about + +

Koishi 是一个跨平台、可扩展、高性能的聊天机器人框架。

+

官方网站:https://koishi.chat

+
+
+ +### 指令:alias + +- 基本语法:`alias ` + +alias 指令用于创建别名指令。 + +### 指令:unalias + +- 基本语法:`unalias ` + +unalias 指令用于删除别名指令。 + +## 功能对比 + +一些其他插件也可以实现类似的功能,但是它们之间有一些区别。 + +### commands + +[@koishijs/plugin-commands](https://koishi.chat/zh-CN/plugins/console/commands.html) 插件提供了 `command` 指令,可以通过 `--alias` 和 `--unalias` 选项来创建和删除别名。与本插件的区别在于,commands 插件创建的只是已有指令的别名,必须依附于某一条指令存在;而本插件创建的指令是独立存在的,因此可以实现多指令的顺序或嵌套调用,在使用上更加灵活。 + +当然,@koishijs/plugin-commands 还提供了其他能力,例如修改父指令、修改指令配置等。你可以同时使用两个插件,以便充分发挥它们的功能。 + +### dialogue + +[koishi-plugin-dialogue](https://dialogue.koishi.chat/zh-CN/) 插件功能十分强大。借助于其自带的指令插值语法,本插件所能实现的功能它都能实现。不过它的语法更复杂,且依赖数据库服务。 diff --git a/docs/ru-RU/plugins/at-command.md b/docs/ru-RU/plugins/at-command.md new file mode 100644 index 00000000..6abe44eb --- /dev/null +++ b/docs/ru-RU/plugins/at-command.md @@ -0,0 +1,24 @@ +# koishi-plugin-at-command + +koishi-plugin-at-command 可用于在有人发送「@机器人」时触发特定指令。 + + +@Koishi + +

当前可用的指令有:

+

……

+
+
+ +## 配置项 + +### config.execute + +- 类型:`string` +- 默认值:`'help'` + +要调用的指令。 + +## 替代方案 + +可以使用 [koishi-plugin-dialogue](https://dialogue.koishi.chat/zh-CN/) 实现此插件的全部功能。 diff --git a/docs/ru-RU/plugins/feedback.md b/docs/ru-RU/plugins/feedback.md new file mode 100644 index 00000000..3546a3b6 --- /dev/null +++ b/docs/ru-RU/plugins/feedback.md @@ -0,0 +1,35 @@ +# koishi-plugin-feedback + +## 指令:feedback + +- 基本语法:`feedback ` +- 选项: + - `-r, --receive` 添加到反馈频道列表 (需要 3 级权限) + - `-R` 从反馈频道列表移除 (需要 3 级权限) + +feedback 指令用于向开发者反馈信息。当有人调用 feedback 指令时,传入的 message 就会自动被发送给所有监听反馈的频道。你可以直接回复收到的反馈信息,机器人会把这些消息重新发回到调用 feedback 指令的上下文。这里的用法类似于 [消息转发](./forward.md)。 + + + +

收到来自 Alice 的反馈信息:

+

我也不知道该写什么总之这是一句话

+
+ +
+

收到来自 Alice 的反馈信息:

+

我也不知道该写什么总之这是一句话

+
+

那么这是一句回复

+
+
+ +要管理接收反馈的频道,你可以使用 `-r` 和 `-R` 选项。在任何频道中使用 `-r` 选项,都会将该频道添加到反馈频道列表中;使用 `-R` 选项,会将该频道从反馈频道列表中移除。 + +## 配置项 + +### replyTimeout + +- 类型:`number` +- 默认值:`Time.day` + +反馈回复时限 (单位毫秒)。 diff --git a/docs/ru-RU/plugins/forward.md b/docs/ru-RU/plugins/forward.md new file mode 100644 index 00000000..8ef9b35b --- /dev/null +++ b/docs/ru-RU/plugins/forward.md @@ -0,0 +1,95 @@ +# koishi-plugin-forward + +koishi-plugin-forward 支持在不同的频道之间转发消息。它有两种使用方法: + +## 无数据库模式 + +当没有加载数据库服务时,你需要手动提供转发规则数组。 + +```yaml title=koishi.yml +plugins: + forward: + # 请使用 {platform}:{channelId} 的格式 + - source: qq:123456789 + target: discord:987654321 + selfId: '33557799' +``` + +当用户 Alice 在频道 `source` 中发送消息 foo 的时候,`selfId` 对应的机器人就会在频道 `target` 中发送如下的内容。接着,频道 `target` 中的用户 Bob 也可以通过引用回复这条消息的方式将自己想说的话发回到频道 `source` 中去。 + + + +

Alice: foo

+
+ +

Alice: foo

+

bar

+
+
+ +## 有数据库模式 + +如果已经加载了数据库服务,那么上述规则列表将失效。此时插件会提供指令来管理转发规则。 + +| 指令语法 | 简写形式 | 功能描述 | +| -------------------------------- | ----------- | ---------------------------------- | +| `forward add ` | `fwd add` | Добавить целевой канал | +| `forward remove ` | `fwd rm` | Удалить целевой канал | +| `forward clear` | `fwd clear` | Удалить все целевые каналы | +| `forward list` | `fwd ls` | Просмотреть списка целевых каналов | + +::: warning +上述 `` 的语法是 `#{platform}:{channelId}`,前置的 `#` 字符不可忽略,请注意与配置项的不同。 +::: + +## 配置项 + +### storage + +- 类型:`'database' | 'config'` +- 默认值:`'config'` + +转发规则的存储方式。 + +### rules + +- 类型:`Rule[]` + +转发规则列表。详见 [转发规则](#转发规则)。 + +### replyTimeout + +- 类型:`number` +- 默认值:`3600000` + +转发消息不再响应回复的时间 (毫秒)。 + +## 转发规则 + +### rule.source + +- 类型:`string` +- 必须参数 + +来源频道。 + +### rule.target + +- 类型:`string` +- 必须参数 + +目标频道。 + +### rule.selfId + +- 类型:`string` +- 必须参数 + +负责推送的机器人账号。 + +### rule.guildId + +- 类型:`string` +- 必须参数 + +目标频道的群组编号。 diff --git a/docs/ru-RU/plugins/rate-limit.md b/docs/ru-RU/plugins/rate-limit.md new file mode 100644 index 00000000..a7c9ed6f --- /dev/null +++ b/docs/ru-RU/plugins/rate-limit.md @@ -0,0 +1,34 @@ +# koishi-plugin-rate-limit + +::: tip +要使用本插件,你需要安装数据库支持,并配合 [@koishijs/plugin-commands](https://koishi.chat/manual/usage/command.html#指令管理) 使用。 +::: + +koishi-plugin-rate-limit 可用于限制指令调用频率。 + +## 基本用法 + +安装此插件后,控制台的「指令管理」页面将会增加一些配置项。 + +有些指令 (例如签到抽卡,限制次数的 API 调用等) 我们并不希望被无限调用,这时我们可以通过 `maxUsage` 设置每天访问额度的上限。当超出总次数后,机器人将回复「调用次数已达上限」。 + +另一些指令 (例如高强度刷屏,需要等待一定时间才有结果的功能) 我们并不希望被短时间内重复调用,这时我们可以通过 `minInterval` 设置最短触发间隔。如果一个处于冷却中的指令再次被调用,机器人将会提示「调用过于频繁,请稍后再试」。 + +如果你希望某些选项不计入总次数,可以使用选项配置中的 `notUsage`。启用此项后,当指令调用含有对应的选项时,将不会收到 `maxUsage` 和 `minInterval` 的限制。 + +最后,如果我们希望让多个指令共同同一套速率限制,可以通过 `usageName` 来进行管理。只需将这些指令的 `usageName` 设置为相同的值即可。 + +## 扩展用户字段 + +- **usage:** `Record` 指令调用次数 +- **timers:** `Record` 指令调用时间 + +## 指令:user.usage / user.timer + +- 基本语法:`user.xxx [key] [value]` +- 选项: + - `-s, --set` 设置访问记录(需要 4 级权限) + - `-c, --clear` 清除访问记录(需要 4 级权限) + - `-t, --target [@user]` 目标用户(需要 3 级权限) + +如果不提供 `-s` 和 `-c` 选项,则会显示当前的访问记录。如果使用了 `-s`,就会设置名为 `key` 的访问记录为 `value`。如果使用了 `-c` 且提供了 `key`,就会清除名为 `key` 的访问记录;否则会清除所有的访问记录。 diff --git a/docs/ru-RU/plugins/recall.md b/docs/ru-RU/plugins/recall.md new file mode 100644 index 00000000..ceda4e3f --- /dev/null +++ b/docs/ru-RU/plugins/recall.md @@ -0,0 +1,24 @@ +# koishi-plugin-recall + +koishi-plugin-recall 可用于在群聊中撤回已发送的消息。 + +## 指令:recall + +- 基本语法:`recall [count]` +- 最低权限:2 + +recall 指令有两种用法: + +1. 直接调用时,撤回机器人在当前频道发送的最后几条消息 +2. 引用回复调用时,撤回引用的消息 + +`count` 是要撤回的消息的数量,缺省时为 1。与 broadcast 类似,为了避免风控,每撤回一条消息后 Koishi 也会等待一段时间,同样可以通过 [`delay.broadcast`](htrtps://koishi.chat/api/core/app.md#options-delay) 进行配置。 + +## 配置项 + +### timeout + +- 类型:`number` +- 默认值:`Time.hour` + +保存已发送消息的时间 (毫秒)。超时的消息将被清除。 diff --git a/docs/ru-RU/plugins/repeater.md b/docs/ru-RU/plugins/repeater.md new file mode 100644 index 00000000..c0a6f01f --- /dev/null +++ b/docs/ru-RU/plugins/repeater.md @@ -0,0 +1,129 @@ +# koishi-plugin-repeater + +复读功能一直是很多机器人的传统艺能,但是 Koishi 敢说自己能做得更多。利用内置的复读插件,你的机器人不仅可以实现概率复读,还可以概率打断,甚至可以检测他人重复复读或打断复读的行为并做出回应。让我们开始吧! + +## 控制复读时机和概率 + +通过提供 `onRepeat` 参数,我们可以定义机器人在检测到复读时进行怎样的行为,是跟着复读,还是进行打断,甚至是出警。首先让我们看一个最简单的例子: + +```yaml title=koishi.yml +plugins: + repeater: + onRepeat: + minTimes: 3 + probability: 0.5 +``` + + +foo +foo +foo +foo +foo + + +在这种配置下,当复读语句达到 3 句后,每一次其他人的复读都有 50% 的概率触发机器人的复读行为。而一旦复读后,机器人将不再重复复读。 + +`onRepeat` 除了可以接受一个对象作为参数以外,也支持接受一个函数来自定义当机器人检测到复读时执行的具体行为。下面我们来举几个例子。 + +## 自动打断复读 + +`onRepeat` 函数可以接受两个参数。第一个参数为当前复读行为的状态 state,其中包含目前复读次数 times, 复读语句内容 content,参与复读的用户与他们的复读次数 users,机器人是否已经复读 repeated;第二个参数是当前的会话 session。 + +当我们也不希望机器人复读所有的内容,我们可以通过如下配置让机器人自动打断某些复读: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat: (state) => + state.times >= 2 && + state.content === "这机器人又开始复读了" && + "打断复读!", + } + } +} +``` + + +这机器人又开始复读了 +这机器人又开始复读了 +打断复读! + + +## 检测重复复读 + +来看一个更复杂的例子。我们还可以让 Koishi 对所有将同一句话复读 2 次的用户作出警告。你可以这样配置: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat: (state, session) => + state.users[session.userId] > 1 && + segment.at(session.userId) + "不许重复复读!" + }, + }, +} +``` + + +foo +foo +foo +不许重复复读! + + +## 检测打断复读 + +复读机插件支持的另一个参数 `onInterrupt` 可以定义机器人在检测到复读被其他人打断时的行为。可以传入一个函数来定义此行为,函数签名与 `onRepeat` 一致。 + +例如,如果你想让你的机器人在一条信息已经复读过 5 次以上,且自己也已经复读过后,对任何打断复读的人以 50% 的概率出警。你可以这样配置: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat:{ + minTimes: 2 + }, + onInterrupt: (state, session) => + state.repeated && + state.times >= 3 && + Math.random() > 0.5 && + segment.at(session.userId) + "在?为什么打断复读?", + }, + }, +} +``` + + +bar +bar + bar +打断复读 + 在?为什么打断复读? + + +## 配置项 + +```ts +interface RepeatState { + content: string + repeated: boolean + times: number + users: Record +} + +type StateCallback = (state: RepeatState, session: Session) => void | string + +interface RepeatHandler { + minTimes: number + probability?: number +} + +interface RepeaterOptions { + onRepeat?: RepeatHandler | StateCallback + onInterrupt?: StateCallback +} +``` diff --git a/docs/ru-RU/plugins/respondent.md b/docs/ru-RU/plugins/respondent.md new file mode 100644 index 00000000..e357c178 --- /dev/null +++ b/docs/ru-RU/plugins/respondent.md @@ -0,0 +1,27 @@ +# koishi-plugin-respondent + +自动回复插件,允许设置一套自定义问答规则。 + +如果想要通过指令设置和管理问答,以及更多的功能,可以使用 [koishi-plugin-dialogue](https://dialogue.koishi.chat)。 + +## 配置项 + +### rules[].match + +- 类型: `string` +- 必需参数 + +要匹配的输入。 + +### rules[].reply + +- 类型: `string` +- 必需参数 + +要回复的内容。 + +### rules[].regexp + +- 类型: `boolean` + +是否使用正则表达式匹配。 diff --git a/docs/ru-RU/plugins/schedule.md b/docs/ru-RU/plugins/schedule.md new file mode 100644 index 00000000..66b8b917 --- /dev/null +++ b/docs/ru-RU/plugins/schedule.md @@ -0,0 +1,45 @@ +# koishi-plugin-schedule + +koishi-plugin-schedule 用于在用户侧设置计划任务。 + +::: tip +如果想要在开发者侧设置计划任务,可以使用 [koishi-plugin-cron](https://cron.koishi.chat)。 +::: + + +schedule 1m -- echo 233 +日程已创建,编号为 1。 +schedule -l +1. 今天 10:01:echo 233 +

——— 1 分钟后 ———

+233 +
+ +## 指令:schedule + +添加或查找计划任务。 + +- 基本语法:`schedule [time] -- [command]` +- 选项列表: + - `/ ` 设置触发的间隔秒数 + - `-l, --list` 查看已经设置的日程 + - `-e, --ensure` 错过时间也确保执行 + - `-f, --full` 查找全部上下文 + - `-d, --delete ` 删除已经设置的日程 + +### 定时器语法 + +- `1m`: 1 分钟后触发 +- `2h30m`: 2 小时 30 分钟后触发 +- `10:00`: 今天 10 点触发 +- `1m / 10s`: 1 分钟后每隔 10 秒触发 +- `10:00 / 1d`: 从今天起每天 10 点触发 + +## 配置项 + +### minInterval + +- 类型: `number` +- 默认值: `60000` + +允许的最短时间间隔,单位为毫秒。如果传入的 interval 参数小于这个值,将会提示“时间间隔过短”。 diff --git a/docs/ru-RU/plugins/shutdown.md b/docs/ru-RU/plugins/shutdown.md new file mode 100644 index 00000000..af6f026b --- /dev/null +++ b/docs/ru-RU/plugins/shutdown.md @@ -0,0 +1,23 @@ +# koishi-plugin-shutdown + +koishi-plugin-shutdown 提供了适用于 Koishi 的 [shutdown(8)](https://www.freedesktop.org/software/systemd/man/shutdown.html)。通过指令关闭和重启机器人,支持定时和取消。 + +## 指令:shutdown + +- 基本语法:`shutdown [time] [wall]` +- 别名:`exit` +- 最低权限:3 +- 选项: + - `-r, --reboot` 软重启 + - `-R, --reboot-hard` 硬重启 + - `-c, --clear` 清空计划中的关闭 + - `-s, --show` 列出计划中的关闭 + - `-w, --wall` 发送广播消息 + +shutdown 指令可用于关闭或重启 Koishi。 + +`-r` 和 `-R` 选项可用于重启机器人。其中软重启用于从 Koishi CLI 侧重启,硬重启用于从 Koishi Launcher (例如 Koishi Desktop 或 Koishi Android) 侧重启。 + +`-c` 和 `-s` 选项可用于取消或查看计划中的关闭。 + +当传入了 `wall` 参数或使用 `-w` 选项时,将会发送广播消息。该消息会发送给**全部** Koishi 接入的频道。 diff --git a/docs/ru-RU/plugins/spawn.md b/docs/ru-RU/plugins/spawn.md new file mode 100644 index 00000000..bbb13a66 --- /dev/null +++ b/docs/ru-RU/plugins/spawn.md @@ -0,0 +1,40 @@ +# koishi-plugin-spawn + +使用 Koishi 运行终端命令。 + +## 功能展示 + + +exec echo hello +[运行开始] echo hello +[运行完毕] echo hello
hello
+
+ +## 配置项 + +### root + +- 类型:`string` +- 默认值:Koishi 应用目录 + +工作路径。 + +### shell + +- 类型:`string` + +运行命令的程序。 + +### encoding + +- 类型:`string` +- 默认值:`utf8` + +输出内容编码。如果您的系统文本编码不是 `utf8`,可以修改此项以避免乱码。 + +### timeout + +- 类型:`number` +- 默认值:`60000` + +最长运行时间 (毫秒)。超时后将会强制终止进程。 diff --git a/docs/ru-RU/plugins/sudo.md b/docs/ru-RU/plugins/sudo.md new file mode 100644 index 00000000..0fe32f1f --- /dev/null +++ b/docs/ru-RU/plugins/sudo.md @@ -0,0 +1,38 @@ +# koishi-plugin-sudo + +::: tip +要使用本插件,你需要安装数据库支持。 +::: + +koishi-plugin-sudo 提供了名为 sudo 的指令,允许管理员模拟其他用户调用指令。 + +## 指令:sudo + +- 基本语法:`sudo ` +- 最低权限:3 +- 选项: + - `-u, --user [@user]` 目标用户(私聊) + - `-m, --member [@user]` 目标用户(群聊) + - `-c, --channel [#channel]` 目标频道 + +sudo 指令允许你模拟其他用户调用指令。例如当你在私聊上下文时: + +```sh +teach foo bar # 无效,因为 teach 指令只对群上下文生效 +sudo -g #456 teach foo bar # 有效,相当于在群 456 调用 teach foo bar +``` + +除此以外,你还可以模拟在其他频道中调用(假设你现在在频道 123 中调用指令): + +```sh +sudo -g #456 command # 模拟你在群 456 的上下文 +sudo -u @789 command # 模拟用户 789 的私聊上下文 +sudo -m @789 command # 模拟用户 789 在当前频道的上下文 +sudo -u @789 -g #456 command # 模拟用户 789 在频道 456 的上下文 +``` + +尽管切换了调用上下文,但 sudo 指令的输出仍然产生在原上下文中。这在你想调用群指令的时候是很有用的。 + +::: tip +为了安全性考虑,sudo 命令设计的最低使用权限为 3 级,同时切换的用户等级不能高于或等于调用者自身。 +::: diff --git a/docs/ru-RU/plugins/verifier.md b/docs/ru-RU/plugins/verifier.md new file mode 100644 index 00000000..5728717c --- /dev/null +++ b/docs/ru-RU/plugins/verifier.md @@ -0,0 +1,34 @@ +# koishi-plugin-verifier + +koishi-plugin-verifier 可用于处理机器人接收到的各类申请。 + +## 可选行为 + +RequestHandler 可以包含以下行为: + +- 无操作,可留待人工判断 +- 通过全部此类申请 +- 拒绝全部此类申请 +- 当申请者打到某个权限等级时通过,否则无操作 (需要额外填写这里的权限等级) + +你可以在配置界面的下拉菜单中选择其中的行为。 + +## 配置项 + +### onFriendRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应好友请求? + +### onGuildMemberRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应入群申请? + +### onGuildRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应入群邀请? diff --git a/docs/zh-TW/index.md b/docs/zh-TW/index.md new file mode 100644 index 00000000..7a976ad3 --- /dev/null +++ b/docs/zh-TW/index.md @@ -0,0 +1,25 @@ +# 介紹 + +这里包含了一系列常用 Koishi 插件的集合。 + +这些插件的功能都十分简单,我们因此将它们放到同一个仓库管理,以便于用户查阅。你也可以将这里理解成一个插件的示例仓库——如果你有与这些插件类似的需求,可以参考这里的代码。 + +## 插件 + +- [别名指令 (Alias)](./plugins/alias.md) +- [@ 指令 (At Command)](./plugins/at-command.md) +- [发送反馈 (Feedback)](./plugins/feedback.md) +- [消息转发 (Forward)](./plugins/forward.md) +- [速率限制 (Rate Limit)](./plugins/rate-limit.md) +- [撤回消息 (Recall)](./plugins/recall.md) +- [复读机 (Repeater)](./plugins/repeater.md) +- [自定义回复 (Respondent)](./plugins/respondent.md) +- [计划任务 (Schedule)](./plugins/schedule.md) +- [关闭与重启 (Shutdown)](./plugins/shutdown.md) +- [执行命令 (Spawn)](./plugins/spawn.md) +- [模拟调用 (Sudo)](./plugins/sudo.md) +- [处理申请 (Verifier)](./plugins/verifier.md) + +## 历史 + +这里的插件大都来自于 [Koishi 官方仓库](https://github.com/koishijs/koishi),有些甚至是早期版本 Koishi 的内置功能。自 v4 版本起,Koishi 逐步将许多内置功能移至独立的插件中,以便于用户自由选择需要的功能。 diff --git a/docs/zh-TW/plugins/alias.md b/docs/zh-TW/plugins/alias.md new file mode 100644 index 00000000..05c2b0dd --- /dev/null +++ b/docs/zh-TW/plugins/alias.md @@ -0,0 +1,45 @@ +# koishi-plugin-alias + +koishi-plugin-alias 可用于创建和删除别名指令。 + +## 基本用法 + + + +

alias about echo

+

Koishi 是一個跨平臺、可擴充套件、高效能的聊天機器人框架。

+

官方网站:https://koishi.chat

+
+已成功创建别名指令 about。 +about + +

Koishi 是一個跨平臺、可擴充套件、高效能的聊天機器人框架。

+

官方网站:https://koishi.chat

+
+
+ +### 指令:alias + +- 基本语法:`alias ` + +alias 指令用于创建别名指令。 + +### 指令:unalias + +- 基本语法:`unalias ` + +unalias 指令用于删除别名指令。 + +## 功能对比 + +一些其他插件也可以实现类似的功能,但是它们之间有一些区别。 + +### commands + +[@koishijs/plugin-commands](https://koishi.chat/zh-CN/plugins/console/commands.html) 插件提供了 `command` 指令,可以通过 `--alias` 和 `--unalias` 选项来创建和删除别名。与本插件的区别在于,commands 插件创建的只是已有指令的别名,必须依附于某一条指令存在;而本插件创建的指令是独立存在的,因此可以实现多指令的顺序或嵌套调用,在使用上更加灵活。 + +当然,@koishijs/plugin-commands 还提供了其他能力,例如修改父指令、修改指令配置等。你可以同时使用两个插件,以便充分发挥它们的功能。 + +### dialogue + +[koishi-plugin-dialogue](https://dialogue.koishi.chat/zh-CN/) 插件功能十分强大。借助于其自带的指令插值语法,本插件所能实现的功能它都能实现。不过它的语法更复杂,且依赖数据库服务。 diff --git a/docs/zh-TW/plugins/at-command.md b/docs/zh-TW/plugins/at-command.md new file mode 100644 index 00000000..6abe44eb --- /dev/null +++ b/docs/zh-TW/plugins/at-command.md @@ -0,0 +1,24 @@ +# koishi-plugin-at-command + +koishi-plugin-at-command 可用于在有人发送「@机器人」时触发特定指令。 + + +@Koishi + +

当前可用的指令有:

+

……

+
+
+ +## 配置项 + +### config.execute + +- 类型:`string` +- 默认值:`'help'` + +要调用的指令。 + +## 替代方案 + +可以使用 [koishi-plugin-dialogue](https://dialogue.koishi.chat/zh-CN/) 实现此插件的全部功能。 diff --git a/docs/zh-TW/plugins/feedback.md b/docs/zh-TW/plugins/feedback.md new file mode 100644 index 00000000..3546a3b6 --- /dev/null +++ b/docs/zh-TW/plugins/feedback.md @@ -0,0 +1,35 @@ +# koishi-plugin-feedback + +## 指令:feedback + +- 基本语法:`feedback ` +- 选项: + - `-r, --receive` 添加到反馈频道列表 (需要 3 级权限) + - `-R` 从反馈频道列表移除 (需要 3 级权限) + +feedback 指令用于向开发者反馈信息。当有人调用 feedback 指令时,传入的 message 就会自动被发送给所有监听反馈的频道。你可以直接回复收到的反馈信息,机器人会把这些消息重新发回到调用 feedback 指令的上下文。这里的用法类似于 [消息转发](./forward.md)。 + + + +

收到来自 Alice 的反馈信息:

+

我也不知道该写什么总之这是一句话

+
+ +
+

收到来自 Alice 的反馈信息:

+

我也不知道该写什么总之这是一句话

+
+

那么这是一句回复

+
+
+ +要管理接收反馈的频道,你可以使用 `-r` 和 `-R` 选项。在任何频道中使用 `-r` 选项,都会将该频道添加到反馈频道列表中;使用 `-R` 选项,会将该频道从反馈频道列表中移除。 + +## 配置项 + +### replyTimeout + +- 类型:`number` +- 默认值:`Time.day` + +反馈回复时限 (单位毫秒)。 diff --git a/docs/zh-TW/plugins/forward.md b/docs/zh-TW/plugins/forward.md new file mode 100644 index 00000000..f477bcdc --- /dev/null +++ b/docs/zh-TW/plugins/forward.md @@ -0,0 +1,95 @@ +# koishi-plugin-forward + +koishi-plugin-forward 支持在不同的频道之间转发消息。它有两种使用方法: + +## 无数据库模式 + +当没有加载数据库服务时,你需要手动提供转发规则数组。 + +```yaml title=koishi.yml +plugins: + forward: + # 请使用 {platform}:{channelId} 的格式 + - source: qq:123456789 + target: discord:987654321 + selfId: '33557799' +``` + +当用户 Alice 在频道 `source` 中发送消息 foo 的时候,`selfId` 对应的机器人就会在频道 `target` 中发送如下的内容。接着,频道 `target` 中的用户 Bob 也可以通过引用回复这条消息的方式将自己想说的话发回到频道 `source` 中去。 + + + +

Alice: foo

+
+ +

Alice: foo

+

bar

+
+
+ +## 有数据库模式 + +如果已经加载了数据库服务,那么上述规则列表将失效。此时插件会提供指令来管理转发规则。 + +| 指令语法 | 简写形式 | 功能描述 | +| -------------------------------- | ----------- | -------- | +| `forward add ` | `fwd add` | 添加目標頻道 | +| `forward remove ` | `fwd rm` | 移除目標頻道 | +| `forward clear` | `fwd clear` | 移除全部目標頻道 | +| `forward list` | `fwd ls` | 查看目標頻道列表 | + +::: warning +上述 `` 的语法是 `#{platform}:{channelId}`,前置的 `#` 字符不可忽略,请注意与配置项的不同。 +::: + +## 配置项 + +### storage + +- 类型:`'database' | 'config'` +- 默认值:`'config'` + +转发规则的存储方式。 + +### rules + +- 类型:`Rule[]` + +转发规则列表。详见 [转发规则](#转发规则)。 + +### replyTimeout + +- 类型:`number` +- 默认值:`3600000` + +转发消息不再响应回复的时间 (毫秒)。 + +## 转发规则 + +### rule.source + +- 类型:`string` +- 必须参数 + +来源频道。 + +### rule.target + +- 类型:`string` +- 必须参数 + +目标频道。 + +### rule.selfId + +- 类型:`string` +- 必须参数 + +负责推送的机器人账号。 + +### rule.guildId + +- 类型:`string` +- 必须参数 + +目标频道的群组编号。 diff --git a/docs/zh-TW/plugins/rate-limit.md b/docs/zh-TW/plugins/rate-limit.md new file mode 100644 index 00000000..25495dd7 --- /dev/null +++ b/docs/zh-TW/plugins/rate-limit.md @@ -0,0 +1,34 @@ +# koishi-plugin-rate-limit + +::: tip +要使用本插件,你需要安装数据库支持,并配合 [@koishijs/plugin-commands](https://koishi.chat/manual/usage/command.html#指令管理) 使用。 +::: + +koishi-plugin-rate-limit 可用于限制指令调用频率。 + +## 基本用法 + +安装此插件后,控制台的「指令管理」页面将会增加一些配置项。 + +有些指令 (例如簽到抽卡,限制次數的 API 呼叫等) 我們並不希望被無限呼叫,這時我們可以透過 `maxUsage` 設定每天訪問額度的上限。當超出總次數後,機器人將回復「呼叫次數已達上限」。 + +另一些指令 (例如高強度刷屏,需要等待一定時間才有結果的功能) 我們並不希望被短時間內重複呼叫,這時我們可以透過 `minInterval` 設定最短觸發間隔。如果一個處於冷卻中的指令再次被呼叫,機器人將會提示「呼叫過於頻繁,請稍後再試」。 + +如果你希望某些選項不計入總次數,可以使用選項配置中的 `notUsage`。啟用此項後,當指令呼叫含有對應的選項時,將不會收到 `maxUsage` 和 `minInterval` 的限制。 + +最後,如果我們希望讓多個指令共同同一套速率限制,可以透過 `usageName` 來進行管理。只需將這些指令的 `usageName` 設定為相同的值即可。 + +## 扩展用户字段 + +- **usage:** `Record` 指令调用次数 +- **timers:** `Record` 指令调用时间 + +## 指令:user.usage / user.timer + +- 基本语法:`user.xxx [key] [value]` +- 选项: + - `-s, --set` 设置访问记录(需要 4 级权限) + - `-c, --clear` 清除访问记录(需要 4 级权限) + - `-t, --target [@user]` 目标用户(需要 3 级权限) + +如果不提供 `-s` 和 `-c` 选项,则会显示当前的访问记录。如果使用了 `-s`,就会设置名为 `key` 的访问记录为 `value`。如果使用了 `-c` 且提供了 `key`,就会清除名为 `key` 的访问记录;否则会清除所有的访问记录。 diff --git a/docs/zh-TW/plugins/recall.md b/docs/zh-TW/plugins/recall.md new file mode 100644 index 00000000..ceda4e3f --- /dev/null +++ b/docs/zh-TW/plugins/recall.md @@ -0,0 +1,24 @@ +# koishi-plugin-recall + +koishi-plugin-recall 可用于在群聊中撤回已发送的消息。 + +## 指令:recall + +- 基本语法:`recall [count]` +- 最低权限:2 + +recall 指令有两种用法: + +1. 直接调用时,撤回机器人在当前频道发送的最后几条消息 +2. 引用回复调用时,撤回引用的消息 + +`count` 是要撤回的消息的数量,缺省时为 1。与 broadcast 类似,为了避免风控,每撤回一条消息后 Koishi 也会等待一段时间,同样可以通过 [`delay.broadcast`](htrtps://koishi.chat/api/core/app.md#options-delay) 进行配置。 + +## 配置项 + +### timeout + +- 类型:`number` +- 默认值:`Time.hour` + +保存已发送消息的时间 (毫秒)。超时的消息将被清除。 diff --git a/docs/zh-TW/plugins/repeater.md b/docs/zh-TW/plugins/repeater.md new file mode 100644 index 00000000..c0a6f01f --- /dev/null +++ b/docs/zh-TW/plugins/repeater.md @@ -0,0 +1,129 @@ +# koishi-plugin-repeater + +复读功能一直是很多机器人的传统艺能,但是 Koishi 敢说自己能做得更多。利用内置的复读插件,你的机器人不仅可以实现概率复读,还可以概率打断,甚至可以检测他人重复复读或打断复读的行为并做出回应。让我们开始吧! + +## 控制复读时机和概率 + +通过提供 `onRepeat` 参数,我们可以定义机器人在检测到复读时进行怎样的行为,是跟着复读,还是进行打断,甚至是出警。首先让我们看一个最简单的例子: + +```yaml title=koishi.yml +plugins: + repeater: + onRepeat: + minTimes: 3 + probability: 0.5 +``` + + +foo +foo +foo +foo +foo + + +在这种配置下,当复读语句达到 3 句后,每一次其他人的复读都有 50% 的概率触发机器人的复读行为。而一旦复读后,机器人将不再重复复读。 + +`onRepeat` 除了可以接受一个对象作为参数以外,也支持接受一个函数来自定义当机器人检测到复读时执行的具体行为。下面我们来举几个例子。 + +## 自动打断复读 + +`onRepeat` 函数可以接受两个参数。第一个参数为当前复读行为的状态 state,其中包含目前复读次数 times, 复读语句内容 content,参与复读的用户与他们的复读次数 users,机器人是否已经复读 repeated;第二个参数是当前的会话 session。 + +当我们也不希望机器人复读所有的内容,我们可以通过如下配置让机器人自动打断某些复读: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat: (state) => + state.times >= 2 && + state.content === "这机器人又开始复读了" && + "打断复读!", + } + } +} +``` + + +这机器人又开始复读了 +这机器人又开始复读了 +打断复读! + + +## 检测重复复读 + +来看一个更复杂的例子。我们还可以让 Koishi 对所有将同一句话复读 2 次的用户作出警告。你可以这样配置: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat: (state, session) => + state.users[session.userId] > 1 && + segment.at(session.userId) + "不许重复复读!" + }, + }, +} +``` + + +foo +foo +foo +不许重复复读! + + +## 检测打断复读 + +复读机插件支持的另一个参数 `onInterrupt` 可以定义机器人在检测到复读被其他人打断时的行为。可以传入一个函数来定义此行为,函数签名与 `onRepeat` 一致。 + +例如,如果你想让你的机器人在一条信息已经复读过 5 次以上,且自己也已经复读过后,对任何打断复读的人以 50% 的概率出警。你可以这样配置: + +```ts title=koishi.ts +export default { + plugins: { + repeater: { + onRepeat:{ + minTimes: 2 + }, + onInterrupt: (state, session) => + state.repeated && + state.times >= 3 && + Math.random() > 0.5 && + segment.at(session.userId) + "在?为什么打断复读?", + }, + }, +} +``` + + +bar +bar + bar +打断复读 + 在?为什么打断复读? + + +## 配置项 + +```ts +interface RepeatState { + content: string + repeated: boolean + times: number + users: Record +} + +type StateCallback = (state: RepeatState, session: Session) => void | string + +interface RepeatHandler { + minTimes: number + probability?: number +} + +interface RepeaterOptions { + onRepeat?: RepeatHandler | StateCallback + onInterrupt?: StateCallback +} +``` diff --git a/docs/zh-TW/plugins/respondent.md b/docs/zh-TW/plugins/respondent.md new file mode 100644 index 00000000..e357c178 --- /dev/null +++ b/docs/zh-TW/plugins/respondent.md @@ -0,0 +1,27 @@ +# koishi-plugin-respondent + +自动回复插件,允许设置一套自定义问答规则。 + +如果想要通过指令设置和管理问答,以及更多的功能,可以使用 [koishi-plugin-dialogue](https://dialogue.koishi.chat)。 + +## 配置项 + +### rules[].match + +- 类型: `string` +- 必需参数 + +要匹配的输入。 + +### rules[].reply + +- 类型: `string` +- 必需参数 + +要回复的内容。 + +### rules[].regexp + +- 类型: `boolean` + +是否使用正则表达式匹配。 diff --git a/docs/zh-TW/plugins/schedule.md b/docs/zh-TW/plugins/schedule.md new file mode 100644 index 00000000..66b8b917 --- /dev/null +++ b/docs/zh-TW/plugins/schedule.md @@ -0,0 +1,45 @@ +# koishi-plugin-schedule + +koishi-plugin-schedule 用于在用户侧设置计划任务。 + +::: tip +如果想要在开发者侧设置计划任务,可以使用 [koishi-plugin-cron](https://cron.koishi.chat)。 +::: + + +schedule 1m -- echo 233 +日程已创建,编号为 1。 +schedule -l +1. 今天 10:01:echo 233 +

——— 1 分钟后 ———

+233 +
+ +## 指令:schedule + +添加或查找计划任务。 + +- 基本语法:`schedule [time] -- [command]` +- 选项列表: + - `/ ` 设置触发的间隔秒数 + - `-l, --list` 查看已经设置的日程 + - `-e, --ensure` 错过时间也确保执行 + - `-f, --full` 查找全部上下文 + - `-d, --delete ` 删除已经设置的日程 + +### 定时器语法 + +- `1m`: 1 分钟后触发 +- `2h30m`: 2 小时 30 分钟后触发 +- `10:00`: 今天 10 点触发 +- `1m / 10s`: 1 分钟后每隔 10 秒触发 +- `10:00 / 1d`: 从今天起每天 10 点触发 + +## 配置项 + +### minInterval + +- 类型: `number` +- 默认值: `60000` + +允许的最短时间间隔,单位为毫秒。如果传入的 interval 参数小于这个值,将会提示“时间间隔过短”。 diff --git a/docs/zh-TW/plugins/shutdown.md b/docs/zh-TW/plugins/shutdown.md new file mode 100644 index 00000000..af6f026b --- /dev/null +++ b/docs/zh-TW/plugins/shutdown.md @@ -0,0 +1,23 @@ +# koishi-plugin-shutdown + +koishi-plugin-shutdown 提供了适用于 Koishi 的 [shutdown(8)](https://www.freedesktop.org/software/systemd/man/shutdown.html)。通过指令关闭和重启机器人,支持定时和取消。 + +## 指令:shutdown + +- 基本语法:`shutdown [time] [wall]` +- 别名:`exit` +- 最低权限:3 +- 选项: + - `-r, --reboot` 软重启 + - `-R, --reboot-hard` 硬重启 + - `-c, --clear` 清空计划中的关闭 + - `-s, --show` 列出计划中的关闭 + - `-w, --wall` 发送广播消息 + +shutdown 指令可用于关闭或重启 Koishi。 + +`-r` 和 `-R` 选项可用于重启机器人。其中软重启用于从 Koishi CLI 侧重启,硬重启用于从 Koishi Launcher (例如 Koishi Desktop 或 Koishi Android) 侧重启。 + +`-c` 和 `-s` 选项可用于取消或查看计划中的关闭。 + +当传入了 `wall` 参数或使用 `-w` 选项时,将会发送广播消息。该消息会发送给**全部** Koishi 接入的频道。 diff --git a/docs/zh-TW/plugins/spawn.md b/docs/zh-TW/plugins/spawn.md new file mode 100644 index 00000000..bbb13a66 --- /dev/null +++ b/docs/zh-TW/plugins/spawn.md @@ -0,0 +1,40 @@ +# koishi-plugin-spawn + +使用 Koishi 运行终端命令。 + +## 功能展示 + + +exec echo hello +[运行开始] echo hello +[运行完毕] echo hello
hello
+
+ +## 配置项 + +### root + +- 类型:`string` +- 默认值:Koishi 应用目录 + +工作路径。 + +### shell + +- 类型:`string` + +运行命令的程序。 + +### encoding + +- 类型:`string` +- 默认值:`utf8` + +输出内容编码。如果您的系统文本编码不是 `utf8`,可以修改此项以避免乱码。 + +### timeout + +- 类型:`number` +- 默认值:`60000` + +最长运行时间 (毫秒)。超时后将会强制终止进程。 diff --git a/docs/zh-TW/plugins/sudo.md b/docs/zh-TW/plugins/sudo.md new file mode 100644 index 00000000..0fe32f1f --- /dev/null +++ b/docs/zh-TW/plugins/sudo.md @@ -0,0 +1,38 @@ +# koishi-plugin-sudo + +::: tip +要使用本插件,你需要安装数据库支持。 +::: + +koishi-plugin-sudo 提供了名为 sudo 的指令,允许管理员模拟其他用户调用指令。 + +## 指令:sudo + +- 基本语法:`sudo ` +- 最低权限:3 +- 选项: + - `-u, --user [@user]` 目标用户(私聊) + - `-m, --member [@user]` 目标用户(群聊) + - `-c, --channel [#channel]` 目标频道 + +sudo 指令允许你模拟其他用户调用指令。例如当你在私聊上下文时: + +```sh +teach foo bar # 无效,因为 teach 指令只对群上下文生效 +sudo -g #456 teach foo bar # 有效,相当于在群 456 调用 teach foo bar +``` + +除此以外,你还可以模拟在其他频道中调用(假设你现在在频道 123 中调用指令): + +```sh +sudo -g #456 command # 模拟你在群 456 的上下文 +sudo -u @789 command # 模拟用户 789 的私聊上下文 +sudo -m @789 command # 模拟用户 789 在当前频道的上下文 +sudo -u @789 -g #456 command # 模拟用户 789 在频道 456 的上下文 +``` + +尽管切换了调用上下文,但 sudo 指令的输出仍然产生在原上下文中。这在你想调用群指令的时候是很有用的。 + +::: tip +为了安全性考虑,sudo 命令设计的最低使用权限为 3 级,同时切换的用户等级不能高于或等于调用者自身。 +::: diff --git a/docs/zh-TW/plugins/verifier.md b/docs/zh-TW/plugins/verifier.md new file mode 100644 index 00000000..5728717c --- /dev/null +++ b/docs/zh-TW/plugins/verifier.md @@ -0,0 +1,34 @@ +# koishi-plugin-verifier + +koishi-plugin-verifier 可用于处理机器人接收到的各类申请。 + +## 可选行为 + +RequestHandler 可以包含以下行为: + +- 无操作,可留待人工判断 +- 通过全部此类申请 +- 拒绝全部此类申请 +- 当申请者打到某个权限等级时通过,否则无操作 (需要额外填写这里的权限等级) + +你可以在配置界面的下拉菜单中选择其中的行为。 + +## 配置项 + +### onFriendRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应好友请求? + +### onGuildMemberRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应入群申请? + +### onGuildRequest + +- 类型: [`RequestHandler`](#可选行为) + +如何响应入群邀请? diff --git a/packages/alias/src/locales/de-DE.yml b/packages/alias/src/locales/de-DE.yml new file mode 100644 index 00000000..d3404426 --- /dev/null +++ b/packages/alias/src/locales/de-DE.yml @@ -0,0 +1,11 @@ +commands: + alias: + description: 创建别名指令 + messages: + created: 已成功创建别名指令 {0}。 + updated: 已成功更新别名指令 {0}。 + unalias: + description: 删除别名指令 + messages: + deleted: 已成功删除别名指令 {0}。 + not-found: 未找到别名指令 {0}。 diff --git a/packages/alias/src/locales/en-US.yml b/packages/alias/src/locales/en-US.yml new file mode 100644 index 00000000..d3404426 --- /dev/null +++ b/packages/alias/src/locales/en-US.yml @@ -0,0 +1,11 @@ +commands: + alias: + description: 创建别名指令 + messages: + created: 已成功创建别名指令 {0}。 + updated: 已成功更新别名指令 {0}。 + unalias: + description: 删除别名指令 + messages: + deleted: 已成功删除别名指令 {0}。 + not-found: 未找到别名指令 {0}。 diff --git a/packages/alias/src/locales/fr-FR.yml b/packages/alias/src/locales/fr-FR.yml new file mode 100644 index 00000000..d3404426 --- /dev/null +++ b/packages/alias/src/locales/fr-FR.yml @@ -0,0 +1,11 @@ +commands: + alias: + description: 创建别名指令 + messages: + created: 已成功创建别名指令 {0}。 + updated: 已成功更新别名指令 {0}。 + unalias: + description: 删除别名指令 + messages: + deleted: 已成功删除别名指令 {0}。 + not-found: 未找到别名指令 {0}。 diff --git a/packages/alias/src/locales/ja-JP.yml b/packages/alias/src/locales/ja-JP.yml new file mode 100644 index 00000000..d3404426 --- /dev/null +++ b/packages/alias/src/locales/ja-JP.yml @@ -0,0 +1,11 @@ +commands: + alias: + description: 创建别名指令 + messages: + created: 已成功创建别名指令 {0}。 + updated: 已成功更新别名指令 {0}。 + unalias: + description: 删除别名指令 + messages: + deleted: 已成功删除别名指令 {0}。 + not-found: 未找到别名指令 {0}。 diff --git a/packages/alias/src/locales/ru-RU.yml b/packages/alias/src/locales/ru-RU.yml new file mode 100644 index 00000000..d3404426 --- /dev/null +++ b/packages/alias/src/locales/ru-RU.yml @@ -0,0 +1,11 @@ +commands: + alias: + description: 创建别名指令 + messages: + created: 已成功创建别名指令 {0}。 + updated: 已成功更新别名指令 {0}。 + unalias: + description: 删除别名指令 + messages: + deleted: 已成功删除别名指令 {0}。 + not-found: 未找到别名指令 {0}。 diff --git a/packages/alias/src/locales/zh-TW.yml b/packages/alias/src/locales/zh-TW.yml new file mode 100644 index 00000000..d3404426 --- /dev/null +++ b/packages/alias/src/locales/zh-TW.yml @@ -0,0 +1,11 @@ +commands: + alias: + description: 创建别名指令 + messages: + created: 已成功创建别名指令 {0}。 + updated: 已成功更新别名指令 {0}。 + unalias: + description: 删除别名指令 + messages: + deleted: 已成功删除别名指令 {0}。 + not-found: 未找到别名指令 {0}。 diff --git a/packages/feedback/src/locales/de-DE.yml b/packages/feedback/src/locales/de-DE.yml new file mode 100644 index 00000000..163e7c90 --- /dev/null +++ b/packages/feedback/src/locales/de-DE.yml @@ -0,0 +1,14 @@ +commands: + feedback: + description: 发送反馈信息给作者 + options: + receive.true: 添加到反馈频道列表 + receive.false: 从反馈频道列表移除 + messages: + expect-text: 请输入要发送的文本。 + receive: |- + 收到来自 {0} 的反馈信息: + {1} + success: 反馈信息发送成功! + updated: 反馈频道更新成功! + not-modified: 反馈频道没有改动。 diff --git a/packages/feedback/src/locales/en-US.yml b/packages/feedback/src/locales/en-US.yml new file mode 100644 index 00000000..dc0f4e6d --- /dev/null +++ b/packages/feedback/src/locales/en-US.yml @@ -0,0 +1,14 @@ +commands: + feedback: + description: 发送反馈信息给作者 + options: + receive.true: 添加到反馈频道列表 + receive.false: 从反馈频道列表移除 + messages: + expect-text: Please type to send + receive: |- + 收到来自 {0} 的反馈信息: + {1} + success: 反馈信息发送成功! + updated: 反馈频道更新成功! + not-modified: 反馈频道没有改动。 diff --git a/packages/feedback/src/locales/fr-FR.yml b/packages/feedback/src/locales/fr-FR.yml new file mode 100644 index 00000000..e07d3663 --- /dev/null +++ b/packages/feedback/src/locales/fr-FR.yml @@ -0,0 +1,14 @@ +commands: + feedback: + description: 发送反馈信息给作者 + options: + receive.true: 添加到反馈频道列表 + receive.false: 从反馈频道列表移除 + messages: + expect-text: Veuillez entrer le texte à envoyer. + receive: |- + 收到来自 {0} 的反馈信息: + {1} + success: 反馈信息发送成功! + updated: 反馈频道更新成功! + not-modified: 反馈频道没有改动。 diff --git a/packages/feedback/src/locales/ja-JP.yml b/packages/feedback/src/locales/ja-JP.yml new file mode 100644 index 00000000..163e7c90 --- /dev/null +++ b/packages/feedback/src/locales/ja-JP.yml @@ -0,0 +1,14 @@ +commands: + feedback: + description: 发送反馈信息给作者 + options: + receive.true: 添加到反馈频道列表 + receive.false: 从反馈频道列表移除 + messages: + expect-text: 请输入要发送的文本。 + receive: |- + 收到来自 {0} 的反馈信息: + {1} + success: 反馈信息发送成功! + updated: 反馈频道更新成功! + not-modified: 反馈频道没有改动。 diff --git a/packages/feedback/src/locales/ru-RU.yml b/packages/feedback/src/locales/ru-RU.yml new file mode 100644 index 00000000..163e7c90 --- /dev/null +++ b/packages/feedback/src/locales/ru-RU.yml @@ -0,0 +1,14 @@ +commands: + feedback: + description: 发送反馈信息给作者 + options: + receive.true: 添加到反馈频道列表 + receive.false: 从反馈频道列表移除 + messages: + expect-text: 请输入要发送的文本。 + receive: |- + 收到来自 {0} 的反馈信息: + {1} + success: 反馈信息发送成功! + updated: 反馈频道更新成功! + not-modified: 反馈频道没有改动。 diff --git a/packages/feedback/src/locales/zh-TW.yml b/packages/feedback/src/locales/zh-TW.yml new file mode 100644 index 00000000..68948cbb --- /dev/null +++ b/packages/feedback/src/locales/zh-TW.yml @@ -0,0 +1,14 @@ +commands: + feedback: + description: 发送反馈信息给作者 + options: + receive.true: 添加到反馈频道列表 + receive.false: 从反馈频道列表移除 + messages: + expect-text: 請輸入要發送的文本。 + receive: |- + 收到来自 {0} 的反馈信息: + {1} + success: 反馈信息发送成功! + updated: 反馈频道更新成功! + not-modified: 反馈频道没有改动。 diff --git a/packages/forward/src/locales/de-DE.yml b/packages/forward/src/locales/de-DE.yml new file mode 100644 index 00000000..3aa67429 --- /dev/null +++ b/packages/forward/src/locales/de-DE.yml @@ -0,0 +1,23 @@ +commands: + forward: + description: 设置消息转发 + usage: 当前频道 ID:{cid} + forward.add: + description: 添加目标频道 + messages: + unchanged: '{0} 已经是当前频道的目标频道。' + updated: '已成功添加目标频道 {0}。' + forward.remove: + description: 移除目标频道 + messages: + unchanged: '{0} 不是当前频道的目标频道。' + updated: '已成功移除目标频道 {0}。' + forward.clear: + description: 移除全部目标频道 + messages: + updated: '已成功移除全部目标频道。' + forward.list: + description: 查看目标频道列表 + messages: + empty: '当前频道没有设置目标频道。' + header: '当前频道的目标频道列表为:' diff --git a/packages/forward/src/locales/en-US.yml b/packages/forward/src/locales/en-US.yml new file mode 100644 index 00000000..3aa67429 --- /dev/null +++ b/packages/forward/src/locales/en-US.yml @@ -0,0 +1,23 @@ +commands: + forward: + description: 设置消息转发 + usage: 当前频道 ID:{cid} + forward.add: + description: 添加目标频道 + messages: + unchanged: '{0} 已经是当前频道的目标频道。' + updated: '已成功添加目标频道 {0}。' + forward.remove: + description: 移除目标频道 + messages: + unchanged: '{0} 不是当前频道的目标频道。' + updated: '已成功移除目标频道 {0}。' + forward.clear: + description: 移除全部目标频道 + messages: + updated: '已成功移除全部目标频道。' + forward.list: + description: 查看目标频道列表 + messages: + empty: '当前频道没有设置目标频道。' + header: '当前频道的目标频道列表为:' diff --git a/packages/forward/src/locales/fr-FR.yml b/packages/forward/src/locales/fr-FR.yml new file mode 100644 index 00000000..61419065 --- /dev/null +++ b/packages/forward/src/locales/fr-FR.yml @@ -0,0 +1,23 @@ +commands: + forward: + description: Définir la règle du transfert de message + usage: 'ID de canal actuel : {cid}' + forward.add: + description: Ajouter un canal pour transfert de message + messages: + unchanged: '{0} est déjà le canal cible du canal actuel pour transfert de message.' + updated: 'Le canal pour transfert de message {0} a été ajouté avec succès.' + forward.remove: + description: Supprimer le canal pour transfert de message. + messages: + unchanged: '{0} n''est pas le canal du canal actuel pour transfert de message.' + updated: 'Le canal pour transfert de message {0} a été supprimé avec succès.' + forward.clear: + description: Supprimer tous les canaux pour transfert de message. + messages: + updated: 'Tous les canaux pour transfert de message ont été supprimés avec succès.' + forward.list: + description: Voir la liste des canaux pour transfert de message. + messages: + empty: 'Le canal actuel ne définir pas le canal pour transfert de message.' + header: 'Les canaux de canal actuel pour transfert de message :' diff --git a/packages/forward/src/locales/ja-JP.yml b/packages/forward/src/locales/ja-JP.yml new file mode 100644 index 00000000..3aa67429 --- /dev/null +++ b/packages/forward/src/locales/ja-JP.yml @@ -0,0 +1,23 @@ +commands: + forward: + description: 设置消息转发 + usage: 当前频道 ID:{cid} + forward.add: + description: 添加目标频道 + messages: + unchanged: '{0} 已经是当前频道的目标频道。' + updated: '已成功添加目标频道 {0}。' + forward.remove: + description: 移除目标频道 + messages: + unchanged: '{0} 不是当前频道的目标频道。' + updated: '已成功移除目标频道 {0}。' + forward.clear: + description: 移除全部目标频道 + messages: + updated: '已成功移除全部目标频道。' + forward.list: + description: 查看目标频道列表 + messages: + empty: '当前频道没有设置目标频道。' + header: '当前频道的目标频道列表为:' diff --git a/packages/forward/src/locales/ru-RU.yml b/packages/forward/src/locales/ru-RU.yml new file mode 100644 index 00000000..2e8bee23 --- /dev/null +++ b/packages/forward/src/locales/ru-RU.yml @@ -0,0 +1,23 @@ +commands: + forward: + description: Настроить переадресации сообщений + usage: Текущий канал:{cid} + forward.add: + description: Добавить целевой канал + messages: + unchanged: '{0} Это целевой канал текущего.' + updated: 'Успешно добавлен целевой канал {0}.' + forward.remove: + description: Удалить целевой канал + messages: + unchanged: '{0} Нет целевой канал текущего' + updated: 'Успешно удавлен целевой канал {0}.' + forward.clear: + description: Удалить все целевые каналы + messages: + updated: 'Успешно удавлен все целевые каналы.' + forward.list: + description: Просмотреть списка целевых каналов + messages: + empty: 'Для текущего канала не задан целевой канал.' + header: 'Списка целевых каналов текущего:' diff --git a/packages/forward/src/locales/zh-TW.yml b/packages/forward/src/locales/zh-TW.yml new file mode 100644 index 00000000..cfb611eb --- /dev/null +++ b/packages/forward/src/locales/zh-TW.yml @@ -0,0 +1,23 @@ +commands: + forward: + description: 設置消息轉發 + usage: 當前頻道 ID:{cid} + forward.add: + description: 添加目標頻道 + messages: + unchanged: '{0} 已經是當前頻道的目標頻道。' + updated: '已成功添加目標頻道 {0}。' + forward.remove: + description: 移除目標頻道 + messages: + unchanged: '{0} 不是當前頻道的目標頻道。' + updated: '已成功移除目標頻道 {0}。' + forward.clear: + description: 移除全部目標頻道 + messages: + updated: '已成功移除全部目標頻道。' + forward.list: + description: 查看目標頻道列表 + messages: + empty: '當前頻道沒有設置目標頻道。' + header: '當前頻道的目標頻道列表為:' diff --git a/packages/rate-limit/src/locales/de-DE.yml b/packages/rate-limit/src/locales/de-DE.yml new file mode 100644 index 00000000..8b5f9094 --- /dev/null +++ b/packages/rate-limit/src/locales/de-DE.yml @@ -0,0 +1,29 @@ +internal: + usage-exhausted: 调用次数已达上限。 + too-frequent: 调用过于频繁,请稍后再试。 + option-not-usage: ' (不计入调用)' + command-max-usage: 已调用次数:{0}/{1}。 + command-min-interval: 距离下次调用还需:{0}/{1} 秒。 +commands: + usage: + description: 调用次数信息 + options: + set: 设置调用次数 + clear: 清空调用次数 + messages: + present: 今日 {0} 功能的调用次数为:{1} + list: 今日各功能的调用次数为: + none: 今日没有调用过消耗次数的功能。 + updated: 设置成功。 + timer: + description: 定时器信息 + options: + set: 设置定时器 + clear: 清空定时器 + messages: + present: 定时器 {0} 的生效时间为:剩余 + absent: 定时器 {0} 当前并未生效。 + list: 各定时器的生效时间为: + item: '

{0}:剩余

' + none: 当前没有生效的定时器。 + updated: 设置成功。 diff --git a/packages/rate-limit/src/locales/en-US.yml b/packages/rate-limit/src/locales/en-US.yml new file mode 100644 index 00000000..6ad6cc3a --- /dev/null +++ b/packages/rate-limit/src/locales/en-US.yml @@ -0,0 +1,29 @@ +internal: + usage-exhausted: Maximum number of use reached. + too-frequent: 调用过于频繁,请稍后再试。 + option-not-usage: ' (不计入调用)' + command-max-usage: 已调用次数:{0}/{1}。 + command-min-interval: 距离下次调用还需:{0}/{1} 秒。 +commands: + usage: + description: 调用次数信息 + options: + set: 设置调用次数 + clear: 清空调用次数 + messages: + present: 今日 {0} 功能的调用次数为:{1} + list: 今日各功能的调用次数为: + none: 今日没有调用过消耗次数的功能。 + updated: 设置成功。 + timer: + description: 定时器信息 + options: + set: 设置定时器 + clear: 清空定时器 + messages: + present: 定时器 {0} 的生效时间为:剩余 + absent: 定时器 {0} 当前并未生效。 + list: 各定时器的生效时间为: + item: '

{0}:剩余

' + none: 当前没有生效的定时器。 + updated: 设置成功。 diff --git a/packages/rate-limit/src/locales/fr-FR.yml b/packages/rate-limit/src/locales/fr-FR.yml new file mode 100644 index 00000000..8b5f9094 --- /dev/null +++ b/packages/rate-limit/src/locales/fr-FR.yml @@ -0,0 +1,29 @@ +internal: + usage-exhausted: 调用次数已达上限。 + too-frequent: 调用过于频繁,请稍后再试。 + option-not-usage: ' (不计入调用)' + command-max-usage: 已调用次数:{0}/{1}。 + command-min-interval: 距离下次调用还需:{0}/{1} 秒。 +commands: + usage: + description: 调用次数信息 + options: + set: 设置调用次数 + clear: 清空调用次数 + messages: + present: 今日 {0} 功能的调用次数为:{1} + list: 今日各功能的调用次数为: + none: 今日没有调用过消耗次数的功能。 + updated: 设置成功。 + timer: + description: 定时器信息 + options: + set: 设置定时器 + clear: 清空定时器 + messages: + present: 定时器 {0} 的生效时间为:剩余 + absent: 定时器 {0} 当前并未生效。 + list: 各定时器的生效时间为: + item: '

{0}:剩余

' + none: 当前没有生效的定时器。 + updated: 设置成功。 diff --git a/packages/rate-limit/src/locales/ja-JP.yml b/packages/rate-limit/src/locales/ja-JP.yml new file mode 100644 index 00000000..8b5f9094 --- /dev/null +++ b/packages/rate-limit/src/locales/ja-JP.yml @@ -0,0 +1,29 @@ +internal: + usage-exhausted: 调用次数已达上限。 + too-frequent: 调用过于频繁,请稍后再试。 + option-not-usage: ' (不计入调用)' + command-max-usage: 已调用次数:{0}/{1}。 + command-min-interval: 距离下次调用还需:{0}/{1} 秒。 +commands: + usage: + description: 调用次数信息 + options: + set: 设置调用次数 + clear: 清空调用次数 + messages: + present: 今日 {0} 功能的调用次数为:{1} + list: 今日各功能的调用次数为: + none: 今日没有调用过消耗次数的功能。 + updated: 设置成功。 + timer: + description: 定时器信息 + options: + set: 设置定时器 + clear: 清空定时器 + messages: + present: 定时器 {0} 的生效时间为:剩余 + absent: 定时器 {0} 当前并未生效。 + list: 各定时器的生效时间为: + item: '

{0}:剩余

' + none: 当前没有生效的定时器。 + updated: 设置成功。 diff --git a/packages/rate-limit/src/locales/ru-RU.yml b/packages/rate-limit/src/locales/ru-RU.yml new file mode 100644 index 00000000..8b5f9094 --- /dev/null +++ b/packages/rate-limit/src/locales/ru-RU.yml @@ -0,0 +1,29 @@ +internal: + usage-exhausted: 调用次数已达上限。 + too-frequent: 调用过于频繁,请稍后再试。 + option-not-usage: ' (不计入调用)' + command-max-usage: 已调用次数:{0}/{1}。 + command-min-interval: 距离下次调用还需:{0}/{1} 秒。 +commands: + usage: + description: 调用次数信息 + options: + set: 设置调用次数 + clear: 清空调用次数 + messages: + present: 今日 {0} 功能的调用次数为:{1} + list: 今日各功能的调用次数为: + none: 今日没有调用过消耗次数的功能。 + updated: 设置成功。 + timer: + description: 定时器信息 + options: + set: 设置定时器 + clear: 清空定时器 + messages: + present: 定时器 {0} 的生效时间为:剩余 + absent: 定时器 {0} 当前并未生效。 + list: 各定时器的生效时间为: + item: '

{0}:剩余

' + none: 当前没有生效的定时器。 + updated: 设置成功。 diff --git a/packages/rate-limit/src/locales/zh-TW.yml b/packages/rate-limit/src/locales/zh-TW.yml new file mode 100644 index 00000000..23765a84 --- /dev/null +++ b/packages/rate-limit/src/locales/zh-TW.yml @@ -0,0 +1,29 @@ +internal: + usage-exhausted: 調用次數已達上限。 + too-frequent: 調用過於頻繁,請稍後再試。 + option-not-usage: ' (不計入調用)' + command-max-usage: 已調用次數:{0}/{1}。 + command-min-interval: 距離下次調用還需:{0}/{1} 秒。 +commands: + usage: + description: 調用次數訊息 + options: + set: 設定調用次數 + clear: 清空調用次數 + messages: + present: 今日 {0} 功能的調用次數為:{1} + list: 今日各功能的調用次數為: + none: 今日沒有調用過消耗次數的功能。 + updated: 设置成功。 + timer: + description: 定時器訊息 + options: + set: 設定定時器 + clear: 清空定時器 + messages: + present: 定時器 {0} 的生效時間為:剩餘 + absent: 定時器 {0} 當前並未生效。 + list: 各定時器的生效時間為: + item: '

{0}:剩余

' + none: 當前沒有生效的定時器。 + updated: 设置成功。 diff --git a/packages/recall/src/locales/de-DE.yml b/packages/recall/src/locales/de-DE.yml new file mode 100644 index 00000000..52fb3fdc --- /dev/null +++ b/packages/recall/src/locales/de-DE.yml @@ -0,0 +1,5 @@ +commands: + recall: + description: 撤回机器人发送的消息 + messages: + no-recent: 近期没有发送消息。 diff --git a/packages/recall/src/locales/en-US.yml b/packages/recall/src/locales/en-US.yml new file mode 100644 index 00000000..52fb3fdc --- /dev/null +++ b/packages/recall/src/locales/en-US.yml @@ -0,0 +1,5 @@ +commands: + recall: + description: 撤回机器人发送的消息 + messages: + no-recent: 近期没有发送消息。 diff --git a/packages/recall/src/locales/fr-FR.yml b/packages/recall/src/locales/fr-FR.yml new file mode 100644 index 00000000..52fb3fdc --- /dev/null +++ b/packages/recall/src/locales/fr-FR.yml @@ -0,0 +1,5 @@ +commands: + recall: + description: 撤回机器人发送的消息 + messages: + no-recent: 近期没有发送消息。 diff --git a/packages/recall/src/locales/ja-JP.yml b/packages/recall/src/locales/ja-JP.yml new file mode 100644 index 00000000..52fb3fdc --- /dev/null +++ b/packages/recall/src/locales/ja-JP.yml @@ -0,0 +1,5 @@ +commands: + recall: + description: 撤回机器人发送的消息 + messages: + no-recent: 近期没有发送消息。 diff --git a/packages/recall/src/locales/ru-RU.yml b/packages/recall/src/locales/ru-RU.yml new file mode 100644 index 00000000..52fb3fdc --- /dev/null +++ b/packages/recall/src/locales/ru-RU.yml @@ -0,0 +1,5 @@ +commands: + recall: + description: 撤回机器人发送的消息 + messages: + no-recent: 近期没有发送消息。 diff --git a/packages/recall/src/locales/zh-TW.yml b/packages/recall/src/locales/zh-TW.yml new file mode 100644 index 00000000..52fb3fdc --- /dev/null +++ b/packages/recall/src/locales/zh-TW.yml @@ -0,0 +1,5 @@ +commands: + recall: + description: 撤回机器人发送的消息 + messages: + no-recent: 近期没有发送消息。 diff --git a/packages/schedule/src/locales/de-DE.yml b/packages/schedule/src/locales/de-DE.yml new file mode 100644 index 00000000..399d8b2f --- /dev/null +++ b/packages/schedule/src/locales/de-DE.yml @@ -0,0 +1,36 @@ +general: + days: + - 日 + - 一 + - 二 + - 三 + - 四 + - 五 + - 六 + everyday: 每天 {0} + everyweek: 每周{0} {1} + interval: 每隔 (剩余 ) +commands: + schedule: + description: 设置定时命令 + options: + rest: 要执行的指令 + interval: 设置触发的间隔秒数 + list: 查看已经设置的日程 + ensure: 错过时间也确保执行 + full: 查找全部上下文 + delete: 删除已经设置的日程 + messages: + context: ',上下文:{0}' + context.private: 私聊 {user.id} + context.guild: 频道 {channel.id} + delete-success: 日程 {0} 已删除。 + create-success: 日程已创建,编号为 {0}。 + list-empty: 当前没有等待执行的日程。 + command-expected: 请输入要执行的指令。 + date-invalid: 请输入合法的日期。 + date-invalid-suggestion: 请输入合法的日期。你要输入的是不是 {0}s? + date-expected: 请输入执行时间。 + date-past: 不能指定过去的时间为执行时间。 + interval-invalid: 请输入合法的时间间隔。 + interval-too-short: 时间间隔过短。 diff --git a/packages/schedule/src/locales/en-US.yml b/packages/schedule/src/locales/en-US.yml new file mode 100644 index 00000000..ecaf3eef --- /dev/null +++ b/packages/schedule/src/locales/en-US.yml @@ -0,0 +1,36 @@ +general: + days: + - Sunday + - Monday + - Tuesday + - Wednesday + - Thursday + - Friday + - Saturday + everyday: '{0} every day' + everyweek: '{1} every {0}' + interval: every ( remains) +commands: + schedule: + description: Set scheduled command + options: + rest: Command + interval: Set execution interval + list: Show all scheduled tasks + ensure: 错过时间也确保执行 + full: 查找全部上下文 + delete: 删除已经设置的日程 + messages: + context: ', context: {0}' + context.private: 私聊 {user.id} + context.guild: 频道 {channel.id} + delete-success: Schedule {0} was deleted. + create-success: Schedule created with number {0}. + list-empty: There are currently no pending schedules. + command-expected: Please enter the command to execute. + date-invalid: Please enter a valid date. + date-invalid-suggestion: Please enter a valid date. Do you want to enter {0}s? + date-expected: 请输入执行时间。 + date-past: 不能指定过去的时间为执行时间。 + interval-invalid: 请输入合法的时间间隔。 + interval-too-short: 时间间隔过短。 diff --git a/packages/schedule/src/locales/fr-FR.yml b/packages/schedule/src/locales/fr-FR.yml new file mode 100644 index 00000000..399d8b2f --- /dev/null +++ b/packages/schedule/src/locales/fr-FR.yml @@ -0,0 +1,36 @@ +general: + days: + - 日 + - 一 + - 二 + - 三 + - 四 + - 五 + - 六 + everyday: 每天 {0} + everyweek: 每周{0} {1} + interval: 每隔 (剩余 ) +commands: + schedule: + description: 设置定时命令 + options: + rest: 要执行的指令 + interval: 设置触发的间隔秒数 + list: 查看已经设置的日程 + ensure: 错过时间也确保执行 + full: 查找全部上下文 + delete: 删除已经设置的日程 + messages: + context: ',上下文:{0}' + context.private: 私聊 {user.id} + context.guild: 频道 {channel.id} + delete-success: 日程 {0} 已删除。 + create-success: 日程已创建,编号为 {0}。 + list-empty: 当前没有等待执行的日程。 + command-expected: 请输入要执行的指令。 + date-invalid: 请输入合法的日期。 + date-invalid-suggestion: 请输入合法的日期。你要输入的是不是 {0}s? + date-expected: 请输入执行时间。 + date-past: 不能指定过去的时间为执行时间。 + interval-invalid: 请输入合法的时间间隔。 + interval-too-short: 时间间隔过短。 diff --git a/packages/schedule/src/locales/ja-JP.yml b/packages/schedule/src/locales/ja-JP.yml new file mode 100644 index 00000000..ef7e6aa7 --- /dev/null +++ b/packages/schedule/src/locales/ja-JP.yml @@ -0,0 +1,36 @@ +general: + days: + - 日曜日 + - 月曜日 + - 火曜日 + - 水曜日 + - 木曜日 + - 金曜日 + - 土曜日 + everyday: 毎日 {0} + everyweek: 毎週{0} {1} + interval: ごとに (残り ) +commands: + schedule: + description: コマンドをスケジュールする + options: + rest: 実行するコマンドを指定 + interval: 繰り返す間隔の秒数を指定する + list: 設定されたスケジュールを表示する + ensure: 設定された時間を過ぎても実行を保証する + full: すべてのコンテキストから検索する + delete: 設定されたスケジュールを削除する + messages: + context: '、コンテキスト:{0}' + context.private: 私聊 {user.id} + context.guild: 频道 {channel.id} + delete-success: スケジュール {0} は削除されました。 + create-success: スケジュールが作成され、番号は {0} です。 + list-empty: 実行待ちのスケジュールはありません。 + command-expected: 実行するコマンドを入力してください。 + date-invalid: 有効な日付を入力してください。 + date-invalid-suggestion: 有効な日付を入力してください。入力したいのは {0}s ですか? + date-expected: 実行時間を入力してください。 + date-past: 過去の時間を実行時間として指定することはできません。 + interval-invalid: 有効な時間間隔を入力してください。 + interval-too-short: 時間間隔は短すぎます。 diff --git a/packages/schedule/src/locales/ru-RU.yml b/packages/schedule/src/locales/ru-RU.yml new file mode 100644 index 00000000..399d8b2f --- /dev/null +++ b/packages/schedule/src/locales/ru-RU.yml @@ -0,0 +1,36 @@ +general: + days: + - 日 + - 一 + - 二 + - 三 + - 四 + - 五 + - 六 + everyday: 每天 {0} + everyweek: 每周{0} {1} + interval: 每隔 (剩余 ) +commands: + schedule: + description: 设置定时命令 + options: + rest: 要执行的指令 + interval: 设置触发的间隔秒数 + list: 查看已经设置的日程 + ensure: 错过时间也确保执行 + full: 查找全部上下文 + delete: 删除已经设置的日程 + messages: + context: ',上下文:{0}' + context.private: 私聊 {user.id} + context.guild: 频道 {channel.id} + delete-success: 日程 {0} 已删除。 + create-success: 日程已创建,编号为 {0}。 + list-empty: 当前没有等待执行的日程。 + command-expected: 请输入要执行的指令。 + date-invalid: 请输入合法的日期。 + date-invalid-suggestion: 请输入合法的日期。你要输入的是不是 {0}s? + date-expected: 请输入执行时间。 + date-past: 不能指定过去的时间为执行时间。 + interval-invalid: 请输入合法的时间间隔。 + interval-too-short: 时间间隔过短。 diff --git a/packages/schedule/src/locales/zh-TW.yml b/packages/schedule/src/locales/zh-TW.yml new file mode 100644 index 00000000..689cdbe3 --- /dev/null +++ b/packages/schedule/src/locales/zh-TW.yml @@ -0,0 +1,36 @@ +general: + days: + - 日 + - 一 + - 二 + - 三 + - 四 + - 五 + - 六 + everyday: 每天 {0} + everyweek: 每周{0} {1} + interval: 每隔 (剩余 ) +commands: + schedule: + description: 設置定時命令 + options: + rest: 要執行的指令 + interval: 設置觸發的間隔秒數 + list: 查看已經設置的日程 + ensure: 錯過時間也確保執行 + full: 查找全部上下文 + delete: 删除已经设置的日程 + messages: + context: ',上下文:{0}' + context.private: 私聊 {user.id} + context.guild: 频道 {channel.id} + delete-success: 日程 {0} 已删除。 + create-success: 日程已创建,编号为 {0}。 + list-empty: 当前没有等待执行的日程。 + command-expected: 请输入要执行的指令。 + date-invalid: 请输入合法的日期。 + date-invalid-suggestion: 请输入合法的日期。你要输入的是不是 {0}s? + date-expected: 请输入执行时间。 + date-past: 不能指定过去的时间为执行时间。 + interval-invalid: 请输入合法的时间间隔。 + interval-too-short: 时间间隔过短。 diff --git a/packages/shutdown/src/locales/de-DE.yml b/packages/shutdown/src/locales/de-DE.yml new file mode 100644 index 00000000..ea6c93be --- /dev/null +++ b/packages/shutdown/src/locales/de-DE.yml @@ -0,0 +1,30 @@ +commands: + shutdown: + description: 关闭或重启 Koishi + usage: |- + 此指令可用于关闭或重启 Koishi。 + 第一个参数是一个时间字符串 (通常是“now”)。 + 时间字符串用于指定执行关机的时间。可以是“hh:mm”格式的小时/分钟,也可以直接通过“+m”中表示从现在开始指定的分钟数 m。 + “now”是“+0”的别名,即触发立即关闭。如果未指定时间参数,则默认“+1”。 + 可选地,这之后可能会在关闭之前向所有登录用户发送一条墙消息。 + options: + reboot: 软重启 + rebootHard: 硬重启 + wall: 发送提示信息 + clear: 清除所有计划中的关闭 + show: 列出计划中的关闭操作 + messages: + no-pending: 没有计划中的关闭 + list-header: 计划中的关闭: + list-item: + reboot: 重启计划于:{0} + poweroff: 关闭计划于:{0} + invalid-time: 无法解析时间:{0} + clear: 已清除所有计划中的关闭。 + reboot: 计划于 {0} 重启,使用“shutdown -c”以取消。 + poweroff: 计划于 {0} 关闭,使用“shutdown -c”以取消。 + restarted: 机器人已重新启动。 + wall-messages: + clear: 关闭已经取消。 + reboot: 系统将在 {0} 重启。 + poweroff: 系统将在 {0} 关闭。 diff --git a/packages/shutdown/src/locales/en-US.yml b/packages/shutdown/src/locales/en-US.yml index 277399d9..b0cd5e50 100644 --- a/packages/shutdown/src/locales/en-US.yml +++ b/packages/shutdown/src/locales/en-US.yml @@ -7,14 +7,12 @@ commands: The time string may either be in the format "hh:mm" for hour/minutes specifying the time to execute the shutdown at, specified in 24h clock format. Alternatively it may be in the syntax "+m" referring to the specified number of minutes m from now. "now" is an alias for "+0", i.e. for triggering an immediate shutdown. If no time argument is specified, "+1" is implied. Optionally, this may be followed by a wall message to be sent to all logged-in users before going down. - options: reboot: Soft reboot. rebootHard: Hard reboot. wall: Send wall message before power off or reboot. clear: Clear all pending shutdowns. show: List all pending shutdown actions. - messages: no-pending: There's no pending shutdown. list-header: 'Pending shutdowns:' @@ -23,10 +21,9 @@ commands: poweroff: 'Power off scheduled at: {0}' invalid-time: 'Failed to parse time specification: {0}' clear: Cleared all pending shutdowns. - reboot: 'Reboot scheduled for {0}, use "shutdown -c" to cancel.' - poweroff: 'Power off scheduled for {0}, use "shutdown -c" to cancel.' - restarted: 'Koishi has been restarted.' - + reboot: Reboot scheduled for {0}, use "shutdown -c" to cancel. + poweroff: Power off scheduled for {0}, use "shutdown -c" to cancel. + restarted: Koishi has been restarted. wall-messages: clear: The system shutdown has been cancelled. reboot: The system is going down for reboot at {0}. diff --git a/packages/shutdown/src/locales/fr-FR.yml b/packages/shutdown/src/locales/fr-FR.yml new file mode 100644 index 00000000..ea6c93be --- /dev/null +++ b/packages/shutdown/src/locales/fr-FR.yml @@ -0,0 +1,30 @@ +commands: + shutdown: + description: 关闭或重启 Koishi + usage: |- + 此指令可用于关闭或重启 Koishi。 + 第一个参数是一个时间字符串 (通常是“now”)。 + 时间字符串用于指定执行关机的时间。可以是“hh:mm”格式的小时/分钟,也可以直接通过“+m”中表示从现在开始指定的分钟数 m。 + “now”是“+0”的别名,即触发立即关闭。如果未指定时间参数,则默认“+1”。 + 可选地,这之后可能会在关闭之前向所有登录用户发送一条墙消息。 + options: + reboot: 软重启 + rebootHard: 硬重启 + wall: 发送提示信息 + clear: 清除所有计划中的关闭 + show: 列出计划中的关闭操作 + messages: + no-pending: 没有计划中的关闭 + list-header: 计划中的关闭: + list-item: + reboot: 重启计划于:{0} + poweroff: 关闭计划于:{0} + invalid-time: 无法解析时间:{0} + clear: 已清除所有计划中的关闭。 + reboot: 计划于 {0} 重启,使用“shutdown -c”以取消。 + poweroff: 计划于 {0} 关闭,使用“shutdown -c”以取消。 + restarted: 机器人已重新启动。 + wall-messages: + clear: 关闭已经取消。 + reboot: 系统将在 {0} 重启。 + poweroff: 系统将在 {0} 关闭。 diff --git a/packages/shutdown/src/locales/ja-JP.yml b/packages/shutdown/src/locales/ja-JP.yml new file mode 100644 index 00000000..ea6c93be --- /dev/null +++ b/packages/shutdown/src/locales/ja-JP.yml @@ -0,0 +1,30 @@ +commands: + shutdown: + description: 关闭或重启 Koishi + usage: |- + 此指令可用于关闭或重启 Koishi。 + 第一个参数是一个时间字符串 (通常是“now”)。 + 时间字符串用于指定执行关机的时间。可以是“hh:mm”格式的小时/分钟,也可以直接通过“+m”中表示从现在开始指定的分钟数 m。 + “now”是“+0”的别名,即触发立即关闭。如果未指定时间参数,则默认“+1”。 + 可选地,这之后可能会在关闭之前向所有登录用户发送一条墙消息。 + options: + reboot: 软重启 + rebootHard: 硬重启 + wall: 发送提示信息 + clear: 清除所有计划中的关闭 + show: 列出计划中的关闭操作 + messages: + no-pending: 没有计划中的关闭 + list-header: 计划中的关闭: + list-item: + reboot: 重启计划于:{0} + poweroff: 关闭计划于:{0} + invalid-time: 无法解析时间:{0} + clear: 已清除所有计划中的关闭。 + reboot: 计划于 {0} 重启,使用“shutdown -c”以取消。 + poweroff: 计划于 {0} 关闭,使用“shutdown -c”以取消。 + restarted: 机器人已重新启动。 + wall-messages: + clear: 关闭已经取消。 + reboot: 系统将在 {0} 重启。 + poweroff: 系统将在 {0} 关闭。 diff --git a/packages/shutdown/src/locales/ru-RU.yml b/packages/shutdown/src/locales/ru-RU.yml new file mode 100644 index 00000000..ea6c93be --- /dev/null +++ b/packages/shutdown/src/locales/ru-RU.yml @@ -0,0 +1,30 @@ +commands: + shutdown: + description: 关闭或重启 Koishi + usage: |- + 此指令可用于关闭或重启 Koishi。 + 第一个参数是一个时间字符串 (通常是“now”)。 + 时间字符串用于指定执行关机的时间。可以是“hh:mm”格式的小时/分钟,也可以直接通过“+m”中表示从现在开始指定的分钟数 m。 + “now”是“+0”的别名,即触发立即关闭。如果未指定时间参数,则默认“+1”。 + 可选地,这之后可能会在关闭之前向所有登录用户发送一条墙消息。 + options: + reboot: 软重启 + rebootHard: 硬重启 + wall: 发送提示信息 + clear: 清除所有计划中的关闭 + show: 列出计划中的关闭操作 + messages: + no-pending: 没有计划中的关闭 + list-header: 计划中的关闭: + list-item: + reboot: 重启计划于:{0} + poweroff: 关闭计划于:{0} + invalid-time: 无法解析时间:{0} + clear: 已清除所有计划中的关闭。 + reboot: 计划于 {0} 重启,使用“shutdown -c”以取消。 + poweroff: 计划于 {0} 关闭,使用“shutdown -c”以取消。 + restarted: 机器人已重新启动。 + wall-messages: + clear: 关闭已经取消。 + reboot: 系统将在 {0} 重启。 + poweroff: 系统将在 {0} 关闭。 diff --git a/packages/shutdown/src/locales/zh-TW.yml b/packages/shutdown/src/locales/zh-TW.yml new file mode 100644 index 00000000..ea6c93be --- /dev/null +++ b/packages/shutdown/src/locales/zh-TW.yml @@ -0,0 +1,30 @@ +commands: + shutdown: + description: 关闭或重启 Koishi + usage: |- + 此指令可用于关闭或重启 Koishi。 + 第一个参数是一个时间字符串 (通常是“now”)。 + 时间字符串用于指定执行关机的时间。可以是“hh:mm”格式的小时/分钟,也可以直接通过“+m”中表示从现在开始指定的分钟数 m。 + “now”是“+0”的别名,即触发立即关闭。如果未指定时间参数,则默认“+1”。 + 可选地,这之后可能会在关闭之前向所有登录用户发送一条墙消息。 + options: + reboot: 软重启 + rebootHard: 硬重启 + wall: 发送提示信息 + clear: 清除所有计划中的关闭 + show: 列出计划中的关闭操作 + messages: + no-pending: 没有计划中的关闭 + list-header: 计划中的关闭: + list-item: + reboot: 重启计划于:{0} + poweroff: 关闭计划于:{0} + invalid-time: 无法解析时间:{0} + clear: 已清除所有计划中的关闭。 + reboot: 计划于 {0} 重启,使用“shutdown -c”以取消。 + poweroff: 计划于 {0} 关闭,使用“shutdown -c”以取消。 + restarted: 机器人已重新启动。 + wall-messages: + clear: 关闭已经取消。 + reboot: 系统将在 {0} 重启。 + poweroff: 系统将在 {0} 关闭。 diff --git a/packages/spawn/src/locales/de-DE.yml b/packages/spawn/src/locales/de-DE.yml new file mode 100644 index 00000000..2bd6feab --- /dev/null +++ b/packages/spawn/src/locales/de-DE.yml @@ -0,0 +1,9 @@ +commands: + exec: + description: 执行命令 + messages: + expect-input: 请输入要运行的命令。 + started: '[运行开始] {command}' + finished: |- + [运行完毕] {command} + {output} diff --git a/packages/spawn/src/locales/en-US.yml b/packages/spawn/src/locales/en-US.yml new file mode 100644 index 00000000..2bd6feab --- /dev/null +++ b/packages/spawn/src/locales/en-US.yml @@ -0,0 +1,9 @@ +commands: + exec: + description: 执行命令 + messages: + expect-input: 请输入要运行的命令。 + started: '[运行开始] {command}' + finished: |- + [运行完毕] {command} + {output} diff --git a/packages/spawn/src/locales/fr-FR.yml b/packages/spawn/src/locales/fr-FR.yml new file mode 100644 index 00000000..2bd6feab --- /dev/null +++ b/packages/spawn/src/locales/fr-FR.yml @@ -0,0 +1,9 @@ +commands: + exec: + description: 执行命令 + messages: + expect-input: 请输入要运行的命令。 + started: '[运行开始] {command}' + finished: |- + [运行完毕] {command} + {output} diff --git a/packages/spawn/src/locales/ja-JP.yml b/packages/spawn/src/locales/ja-JP.yml new file mode 100644 index 00000000..2bd6feab --- /dev/null +++ b/packages/spawn/src/locales/ja-JP.yml @@ -0,0 +1,9 @@ +commands: + exec: + description: 执行命令 + messages: + expect-input: 请输入要运行的命令。 + started: '[运行开始] {command}' + finished: |- + [运行完毕] {command} + {output} diff --git a/packages/spawn/src/locales/ru-RU.yml b/packages/spawn/src/locales/ru-RU.yml new file mode 100644 index 00000000..2bd6feab --- /dev/null +++ b/packages/spawn/src/locales/ru-RU.yml @@ -0,0 +1,9 @@ +commands: + exec: + description: 执行命令 + messages: + expect-input: 请输入要运行的命令。 + started: '[运行开始] {command}' + finished: |- + [运行完毕] {command} + {output} diff --git a/packages/spawn/src/locales/zh-TW.yml b/packages/spawn/src/locales/zh-TW.yml new file mode 100644 index 00000000..2bd6feab --- /dev/null +++ b/packages/spawn/src/locales/zh-TW.yml @@ -0,0 +1,9 @@ +commands: + exec: + description: 执行命令 + messages: + expect-input: 请输入要运行的命令。 + started: '[运行开始] {command}' + finished: |- + [运行完毕] {command} + {output} diff --git a/packages/sudo/src/locales/de-DE.yml b/packages/sudo/src/locales/de-DE.yml new file mode 100644 index 00000000..5b7835e5 --- /dev/null +++ b/packages/sudo/src/locales/de-DE.yml @@ -0,0 +1,11 @@ +commands: + sudo: + description: 在特定上下文中触发指令 + options: + user: 切换用户身份 + channel: 切换触发频道 + direct: 模拟私聊触发 + messages: + expect-command: 请输入要触发的指令。 + expect-context: 请提供新的上下文。 + direct-channel: '--channel 和 --direct 无法同时使用。' diff --git a/packages/sudo/src/locales/en-US.yml b/packages/sudo/src/locales/en-US.yml new file mode 100644 index 00000000..de525f06 --- /dev/null +++ b/packages/sudo/src/locales/en-US.yml @@ -0,0 +1,11 @@ +commands: + sudo: + description: Trigger command in specific context + options: + user: 切换用户身份 + channel: 切换触发频道 + direct: 模拟私聊触发 + messages: + expect-command: Please enter the command to trigger. + expect-context: Please provide a new context. + direct-channel: '--channel 和 --direct 无法同时使用。' diff --git a/packages/sudo/src/locales/fr-FR.yml b/packages/sudo/src/locales/fr-FR.yml new file mode 100644 index 00000000..5b7835e5 --- /dev/null +++ b/packages/sudo/src/locales/fr-FR.yml @@ -0,0 +1,11 @@ +commands: + sudo: + description: 在特定上下文中触发指令 + options: + user: 切换用户身份 + channel: 切换触发频道 + direct: 模拟私聊触发 + messages: + expect-command: 请输入要触发的指令。 + expect-context: 请提供新的上下文。 + direct-channel: '--channel 和 --direct 无法同时使用。' diff --git a/packages/sudo/src/locales/ja-JP.yml b/packages/sudo/src/locales/ja-JP.yml new file mode 100644 index 00000000..5b7835e5 --- /dev/null +++ b/packages/sudo/src/locales/ja-JP.yml @@ -0,0 +1,11 @@ +commands: + sudo: + description: 在特定上下文中触发指令 + options: + user: 切换用户身份 + channel: 切换触发频道 + direct: 模拟私聊触发 + messages: + expect-command: 请输入要触发的指令。 + expect-context: 请提供新的上下文。 + direct-channel: '--channel 和 --direct 无法同时使用。' diff --git a/packages/sudo/src/locales/ru-RU.yml b/packages/sudo/src/locales/ru-RU.yml new file mode 100644 index 00000000..5b7835e5 --- /dev/null +++ b/packages/sudo/src/locales/ru-RU.yml @@ -0,0 +1,11 @@ +commands: + sudo: + description: 在特定上下文中触发指令 + options: + user: 切换用户身份 + channel: 切换触发频道 + direct: 模拟私聊触发 + messages: + expect-command: 请输入要触发的指令。 + expect-context: 请提供新的上下文。 + direct-channel: '--channel 和 --direct 无法同时使用。' diff --git a/packages/sudo/src/locales/zh-TW.yml b/packages/sudo/src/locales/zh-TW.yml new file mode 100644 index 00000000..ea03d89f --- /dev/null +++ b/packages/sudo/src/locales/zh-TW.yml @@ -0,0 +1,11 @@ +commands: + sudo: + description: 在特定上下文中觸發指令 + options: + user: 切换用户身份 + channel: 切换触发频道 + direct: 模拟私聊触发 + messages: + expect-command: 請輸入要觸發的指令。 + expect-context: 請提供新的上下文。 + direct-channel: '--channel 和 --direct 无法同时使用。'