让 MAN 使用坏枪的 Markdown 处理器
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing

This commit is contained in:
2025-11-11 01:47:10 +08:00
parent df28fad697
commit eff25435e3
25 changed files with 502 additions and 331 deletions

View File

@ -1,4 +1,4 @@
关于「中间答案」或者「提示」 # 关于「中间答案」或者「提示」
在 KonaPH 中,当有人发送「提交答案 答案」时,会检查答案是否符合你设置的中间答案的 pattern。这个 pattern 可以有两种方式: 在 KonaPH 中,当有人发送「提交答案 答案」时,会检查答案是否符合你设置的中间答案的 pattern。这个 pattern 可以有两种方式:

View File

@ -1,2 +1,3 @@
关于罗文和洛温 # 关于罗文和洛温
AdoreLowen 希望和洛温阿特金森区分,所以最好就不要叫他洛温了!此方 BOT 会在一些群提醒叫错了的人。
AdoreLowen 希望和洛温阿特金森区分,所以最好就不要叫他洛温了!此方 BOT 会在一些群提醒叫错了的人。

View File

@ -1,45 +1,48 @@
指令介绍 # 指令介绍
is_admin - 用于判断当前事件是否来自管理员的内部权限校验函数
格式 `is_admin` - 用于判断当前事件是否来自管理员的内部权限校验函数
from konabot.common.nb.is_admin import is_admin
from nonebot import on
from nonebot.adapters import Event
from loguru import logger
@on().handle() # 格式
async def _(event: Event):
if is_admin(event):
logger.info("管理员发送了消息")
说明 ```python
is_admin 是 Bot 内部用于权限控制的核心函数根据事件来源QQ、Discord、控制台及插件配置判断触发事件的用户或群组是否具有管理员权限。 from konabot.common.nb.is_admin import is_admin
from nonebot import on
from nonebot.adapters import Event
from loguru import logger
@on().handle()
async def _(event: Event):
if is_admin(event):
logger.info("管理员发送了消息")
```
# 说明
is_admin 是 Bot 内部用于权限控制的核心函数根据事件来源QQ、Discord、控制台及插件配置判断触发事件的用户或群组是否具有管理员权限。
支持的适配器与判定逻辑: 支持的适配器与判定逻辑:
• OneBot V11QQ
- 若用户 ID 在配置项 admin_qq_account 中,则视为管理员
- 若为群聊消息,且群 ID 在配置项 admin_qq_group 中,则视为管理员
• Discord - OneBot V11QQ
- 若频道 ID 在配置项 admin_discord_channel 中,则视为管理员 - 若用户 ID 在配置项 admin_qq_account 中,则视为管理员
- 若用户 ID 在配置项 admin_discord_account 中,则视为管理员 - 若为群聊消息,且群 ID 在配置项 admin_qq_group 中,则视为管理员
- Discord
- 若频道 ID 在配置项 admin_discord_channel 中,则视为管理员
- 若用户 ID 在配置项 admin_discord_account 中,则视为管理员
- Console控制台
- 所有控制台输入均默认视为管理员操作,自动返回 True
• Console控制台 # 配置项(位于插件配置中
- 所有控制台输入均默认视为管理员操作,自动返回 True
配置项(位于插件配置中) - `ADMIN_QQ_GROUP`: `list[int]`
ADMIN_QQ_GROUP: list[int] - 允许的管理员 QQ 群 ID 列表
允许的管理员 QQ 群 ID 列表 - `ADMIN_QQ_ACCOUNT`: `list[int]`
- 允许的管理员 QQ 账号 ID 列表
- `ADMIN_DISCORD_CHANNEL`: `list[int]`
- 允许的管理员 Discord 频道 ID 列表
- `ADMIN_DISCORD_ACCOUNT`: `list[int]`
- 允许的管理员 Discord 用户 ID 列表
ADMIN_QQ_ACCOUNT: list[int] # 注意事项
允许的管理员 QQ 账号 ID 列表
ADMIN_DISCORD_CHANNEL: list[int] - 若未在配置文件中设置任何管理员 ID该函数对所有非控制台事件返回 False
允许的管理员 Discord 频道 ID 列表 - 控制台事件始终拥有管理员权限,便于本地调试与运维
ADMIN_DISCORD_ACCOUNT: list[int]
允许的管理员 Discord 用户 ID 列表
注意事项
- 若未在配置文件中设置任何管理员 ID该函数对所有非控制台事件返回 False
- 控制台事件始终拥有管理员权限,便于本地调试与运维

View File

@ -1,4 +1,5 @@
指令介绍 # 指令介绍
konaph - KonaBot 的 PuzzleHunt 管理工具
`konaph` - KonaBot 的 PuzzleHunt 管理工具
详细介绍请直接输入 konaph 获取使用指引(该指令权限仅对部分人开放。如果你有权限的话才有响应。建议在此方 BOT 私聊使用该指令。) 详细介绍请直接输入 konaph 获取使用指引(该指令权限仅对部分人开放。如果你有权限的话才有响应。建议在此方 BOT 私聊使用该指令。)

View File

@ -1,59 +1,83 @@
指令介绍 # giftool - 对 GIF 动图进行裁剪、抽帧等处理
giftool - 对 GIF 动图进行裁剪、抽帧等处理
格式 ## 格式
giftool [图片] [选项]
示例 ```bash
回复一张 GIF 并发送: giftool [图片] [选项]
`giftool --ss 1.5 -t 2.0` ```
从 1.5 秒处开始,截取 2 秒长度的片段。
`giftool [图片] --ss 0:10 -to 0:15` ## 示例
截取从 10 秒到 15 秒之间的片段(支持 MM:SS 或 HH:MM:SS 格式)。
`giftool [图片] --frames:v 10` - **回复一张 GIF 并发送:**
将整张 GIF 均匀抽帧,最终保留 10 帧。
`giftool [图片] --ss 2 --frames:v 5` ```bash
从第 2 秒开始截取,并将结果抽帧为 5 帧。 giftool --ss 1.5 -t 2.0
```
参数说明 从 1.5 秒处开始,截取 2 秒长度的片段。
图片(必需)
- 必须是 GIF 动图。
- 支持直接附带图片,或回复一条含 GIF 的消息后使用指令。
--ss <时间戳>(可选) - ```bash
- 指定开始时间(单位:秒),可使用以下格式: giftool [图片] --ss 0:10 -to 0:15
• 纯数字(如 `1.5` 表示 1.5 秒) ```
• 分秒格式(如 `1:30` 表示 1 分 30 秒)
• 时分秒格式(如 `0:1:30` 表示 1 分 30 秒)
- 默认从开头开始0 秒)。
-t <持续时间>(可选) 截取从 10 秒到 15 秒之间的片段(支持 `MM:SS` 或 `HH:MM:SS` 格式)。
- 指定截取的持续时间(单位:秒),格式同 --ss。
- 与 --ss 配合使用:截取 [ss, ss + t] 区间。
- 不能与 --to 同时使用。
--to <时间戳>(可选) - ```bash
- 指定结束时间(单位:秒),格式同 --ss。 giftool [图片] --frames:v 10
- 与 --ss 配合使用:截取 [ss, to] 区间。 ```
- 不能与 -t 同时使用。
--frames:v <帧数>(可选) 将整张 GIF 均匀抽帧,最终保留 10 帧。
- 对截取后的片段进行均匀抽帧,保留指定数量的帧。
- 帧数必须为正整数(> 0
- 若原始帧数 ≤ 指定帧数,则保留全部帧。
--speed <速度>(可选) - ```bash
- 调整 gif 图的速度。若为负数,则代表倒放 giftool [图片] --ss 2 --frames:v 5
```
使用方式 从第 2 秒开始截取,并将结果抽帧为 5 帧。
1. 发送指令前,请确保:
- 消息中附带一张 GIF 动图,或 ## 参数说明
- 回复一条包含 GIF 动图的消息后再发送指令。
2. 插件会自动: ### 图片(必需)
- 解析 GIF 的每一帧及其持续时间duration
- 根据时间参数转换为帧索引进行裁剪 - 必须是 GIF 动图。
- 如指定抽帧,则对裁剪后的片段均匀采样 - 支持直接附带图片,或回复一条含 GIF 的消息后使用指令。
- 生成新的 GIF 并保持原始循环设置loop=0
### `--ss <时间戳>`(可选)
- 指定开始时间(单位:秒),可使用以下格式:
- 纯数字(如 `1.5` 表示 1.5 秒)
- 分秒格式(如 `1:30` 表示 1 分 30 秒)
- 时分秒格式(如 `0:1:30` 表示 1 分 30 秒)
- 默认从开头开始0 秒)。
### `-t <持续时间>`(可选)
- 指定截取的持续时间(单位:秒),格式同 `--ss`。
- 与 `--ss` 配合使用:截取 `[ss, ss + t]` 区间。
- **不能与 `--to` 同时使用。**
### `--to <时间戳>`(可选)
- 指定结束时间(单位:秒),格式同 `--ss`。
- 与 `--ss` 配合使用:截取 `[ss, to]` 区间。
- **不能与 `-t` 同时使用。**
### `--frames:v <帧数>`(可选)
- 对截取后的片段进行均匀抽帧,保留指定数量的帧。
- 帧数必须为正整数(> 0
- 若原始帧数 ≤ 指定帧数,则保留全部帧。
### `--speed <速度>`(可选)
- 调整 GIF 图的速度。若为负数,则代表倒放。
## 使用方式
1. 发送指令前,请确保:
- 消息中附带一张 GIF 动图,**或**
- 回复一条包含 GIF 动图的消息后再发送指令。
2. 插件会自动:
- 解析 GIF 的每一帧及其持续时间duration
- 根据时间参数转换为帧索引进行裁剪
- 如指定抽帧,则对裁剪后的片段均匀采样
- 生成新的 GIF 并保持原始循环设置(`loop=0`

View File

@ -1,20 +1,33 @@
指令介绍 # 指令介绍
man - 用于展示此方 BOT 使用手册的指令
格式 `man` - 用于展示此方 BOT 使用手册的指令
man 文档类型
man [文档类型] <指令>
示例 ## 格式
`man` 查看所有有文档的指令清单
`man 3` 列举所有可读文档的库函数清单
`man 喵` 查看指令「喵」的使用说明
`man 8 out` 查看管理员指令「out」的使用说明
文档类型 ```
文档类型用来区分同一指令在不同场景下的情景。你可以使用数字编号进行筛选。分为这些种类: man 文档类型
man [文档类型] <指令>
```
- 1 用户态指令,用于日常使用的指令 ## 示例
- 3 库函数指令,用于 Bot 开发用的函数查询
- 7 概念指令,用于概念解释 - ``man``
- 8 系统指令,仅管理员可用 查看所有有文档的指令清单
- ``man 3``
列举所有可读文档的库函数清单
- ``man 喵``
查看指令「喵」的使用说明
- ``man 8 out``
查看管理员指令「out」的使用说明
## 文档类型
文档类型用来区分同一指令在不同场景下的情景。你可以使用数字编号进行筛选。分为以下种类:
- **1** 用户态指令:用于日常使用的指令
- **3** 库函数指令:用于 Bot 开发用的函数查询
- **7** 概念指令:用于概念解释
- **8** 系统指令:仅管理员可用

View File

@ -1,15 +1,16 @@
指令介绍 ## 指令介绍
ntfy - 配置使用 ntfy 来更好地为你通知此方 BOT 代办 **`ntfy`** - 配置使用 [ntfy](https://ntfy.sh/) 来更好地为你通知此方 BOT 代办事项。
指令示例 ## 指令示例
`ntfy 创建`
创建一个随机的 ntfy 订阅主题来提醒代办,此方 Bot 将会给你使用指引。你可以前往 https://ntfy.sh/ 官网下载 ntfy APP或者使用网页版 ntfy。
`ntfy 创建 kagami-notice` - **`ntfy 创建`**
创建一个名字含有 kagami-notice 的 ntfy 订阅主题 创建一个随机的 ntfy 订阅主题来提醒代办。此方 Bot 将会给你使用指引。你可以前往 [https://ntfy.sh/](https://ntfy.sh/) 官网下载 ntfy APP或者使用网页版 ntfy。
`ntfy 删除` - **`ntfy 创建 kagami-notice`**
清除并不再使用 ntfy 向你通知 创建一个名称包含 `kagami-notice` 的 ntfy 订阅主题。
另见 - **`ntfy 删除`**
提醒我(1) 查询提醒(1) 删除提醒(1) 清除配置,不再使用 ntfy 向你发送通知。
## 另见
[`提醒我(1)`](#) [`查询提醒(1)`](#) [`删除提醒(1)`](#)

View File

@ -1,21 +1,39 @@
指令介绍 # 指令介绍
openssl - 用于生成指定长度的加密安全随机数据
格式 `openssl rand` — 用于生成指定长度的加密安全随机数据。
openssl rand <模式> <字节数>
示例 ## 格式
`openssl rand -hex 16` 生成 16 字节的十六进制随机数
`openssl rand -base64 32` 生成 32 字节并以 Base64 编码输出的随机数据
说明 ```bash
该指令使用 Python 的 secrets 模块生成加密安全的随机字节,并支持以十六进制(-hex或 Base64-base64格式输出。 openssl rand <模式> <字节数>
```
参数说明 ## 示例
模式mode
- -hex :以十六进制字符串形式输出随机数据
- -base64 :以 Base64 编码字符串形式输出随机数据
字节数num - ```bash
- 必须为正整数 openssl rand -hex 16
- 最大支持 256 字节 ```
生成 16 字节的十六进制随机数。
- ```bash
openssl rand -base64 32
```
生成 32 字节并以 Base64 编码输出的随机数据。
## 说明
该指令使用 Python 的 `secrets` 模块生成加密安全的随机字节,并支持以以下格式输出:
- 十六进制(`-hex`
- Base64 编码(`-base64`
## 参数说明
### 模式mode
- `-hex`:以十六进制字符串形式输出随机数据
- `-base64`:以 Base64 编码字符串形式输出随机数据
### 字节数num
- 必须为正整数
- 最大支持 256 字节

View File

@ -1,47 +1,55 @@
指令介绍 # 指令介绍
shadertool - 使用 SkSLSkia Shader Language代码实时渲染并生成 GIF 动画 `shadertool` - 使用 SkSLSkia Shader Language代码实时渲染并生成 GIF 动画
格式 ## 格式
shadertool [选项] <SkSL 代码> ```bash
shadertool [选项] <SkSL 代码>
```
示例 ## 示例
shadertool """ ```bash
uniform float u_time; shadertool """
uniform float2 u_resolution; uniform float u_time;
uniform float2 u_resolution;
half4 main(float2 coord) { half4 main(float2 coord) {
return half4( return half4(
1.0, 1.0,
sin((coord.y / u_resolution.y + u_time) * 3.1415926 * 2) * 0.5 + 0.5, sin((coord.y / u_resolution.y + u_time) * 3.1415926 * 2) * 0.5 + 0.5,
coord.x / u_resolution.x, coord.x / u_resolution.x,
1.0 1.0
); );
} }
""" """
```
参数说明 ## 参数说明
SkSL 代码(必填)
- 类型:字符串(建议用英文双引号包裹)
- 内容:符合 SkSL 语法的片段着色器代码,必须包含 `void main()` 函数,并为 `sk_FragColor` 赋值。
- 注意:插件会自动去除代码首尾的单引号或双引号,便于命令行输入。
--width <整数>(可选) ### SkSL 代码(必填)
- 默认值320 - **类型**:字符串(建议用英文双引号包裹)
- 作用:输出 GIF 的宽度(像素),必须大于 0 - **内容**:符合 SkSL 语法的片段着色器代码,必须包含 `main` 函数,并返回 `half4` 类型的颜色值
- **注意**:插件会自动去除代码首尾的单引号或双引号,便于命令行输入。
--height <整数>(可选) ### `--width <整数>`(可选)
- 默认值180 - **默认值**`320`
- 作用:输出 GIF 的度(像素),必须大于 0。 - **作用**:输出 GIF 的度(像素),必须大于 0。
--duration <浮点数>(可选) ### `--height <整数>`(可选)
- 默认值1.0 - **默认值**`180`
- 作用:动画总时长(秒),必须大于 0。 - **作用**:输出 GIF 的高度(像素),必须大于 0。
- 限制:`duration × fps` 必须 ≥ 1 且 ≤ 100即至少 1 帧,最多 100 帧)。
--fps <浮点数>(可选) ### `--duration <浮点数>`(可选)
- 默认值15.0 - **默认值**`1.0`
- 作用:每秒帧数,控制动画流畅度,必须大于 0。 - **作用**:动画总时长(秒),必须大于 0。
- 常见值10低配流畅、15默认、24/30电影/视频级)。 - **限制**`duration × fps` 必须 ≥ 1 且 ≤ 100即至少 1 帧,最多 100 帧)。
使用方式 ### `--fps <浮点数>`(可选)
直接在群聊或私聊中发送 `shadertool` 指令,附上合法的 SkSL 代码即可。 - **默认值**`15.0`
- **作用**:每秒帧数,控制动画流畅度,必须大于 0。
- **常见值**
- `10`:低配流畅
- `15`:默认
- `24` / `30`:电影/视频级流畅度
## 使用方式
直接在群聊或私聊中发送 `shadertool` 指令,附上合法的 SkSL 代码即可。

View File

@ -1,41 +1,72 @@
指令介绍 # `ytpgif` 指令说明
ytpgif - 生成来回镜像翻转的仿 YTPMV 动图
格式 ## 功能简介
ytpgif [倍速] `ytpgif` 用于生成来回镜像翻转的仿 YTPMVYouTube Poop Music Video风格动图。
示例 ---
`ytpgif`
使用默认倍速1.0)处理你发送或回复的图片,生成镜像动图。
`ytpgif 2.5` ## 命令格式
以 2.5 倍速处理图片,生成更快节奏的镜像动图。 ```bash
ytpgif [倍速]
```
回复一张图片并发送 `ytpgif 0.5` ---
以慢速0.5 倍)生成镜像动图。
参数说明 ## 使用示例
倍速(可选)
- 类型:浮点数
- 默认值1.0
- 有效范围0.1 20.0
- 作用:
• 对于静态图:控制镜像切换的快慢(值越大,切换越快)。
• 对于动图:控制截取原始动图正向和反向片段的时长(值越大,截取的片段越长)。
使用方式 - **默认倍速**
发送指令前,请确保: ```bash
- 直接在消息中附带一张图片,或 ytpgif
- 回复一条包含图片的消息后再发送指令。 ```
使用默认倍速1.0)处理你发送或回复的图片,生成镜像动图。
插件会自动: - **指定倍速(较快)**
- 下载并识别图片(支持静态图和 GIF 动图) ```bash
- 自动缩放至最大边长不超过 256 像素(保持宽高比) ytpgif 2.5
- 静态图 → 生成“原图↔镜像”循环动图 ```
- 动图 → 截取开头一段正向播放 + 同一段镜像翻转播放,拼接成新动图 以 2.5 倍速处理图片,生成节奏更快的镜像动图
- 保留透明通道(如原图含透明),否则转为 RGB 避免颜色异常
注意事项 - **指定倍速(较慢)**
- 图片过大、格式损坏或网络问题可能导致处理失败。 回复一张图片并发送:
- 动图帧数过多或单帧过短可能无法生成有效输出。 ```bash
- 输出 GIF 最大单段帧数限制为 500 帧,以防资源耗尽。 ytpgif 0.5
```
以 0.5 倍速生成慢节奏的镜像动图。
---
## 参数说明
### `倍速`(可选)
- **类型**:浮点数
- **默认值**`1.0`
- **有效范围**`0.1 20.0`
#### 作用:
- **静态图**:控制“原图 ↔ 镜像”切换的速度(值越大,切换越快)。
- **GIF 动图**:控制截取原始动图正向与反向片段的时长(值越大,截取的片段越长)。
---
## 使用方式
在发送指令前,请确保满足以下任一条件:
- 在消息中**直接附带一张图片**,或
- **回复一条包含图片的消息**后再发送指令。
插件将自动执行以下操作:
1. 下载并识别图片(支持静态图和 GIF 动图)。
2. 自动缩放图像,**最大边长不超过 256 像素**(保持宽高比)。
3. 根据图片类型处理:
- **静态图** → 生成“原图 ↔ 镜像”循环动图。
- **GIF 动图** → 截取开头一段正向播放 + 同一段镜像翻转播放,拼接成新动图。
4. **保留透明通道**(若原图含透明),否则转为 RGB 模式以避免颜色异常。
---
## 注意事项
⚠️ 以下情况可能导致处理失败或效果不佳:
- 图片过大、格式损坏或网络问题;
- 动图帧数过多或单帧持续时间过短;
- 输出 GIF 单段帧数超过 **500 帧**(系统将自动限制以防资源耗尽)。

View File

@ -1,8 +1,9 @@
指令介绍 ## 指令介绍
删除提醒 - 删除在`查询提醒(1)`中查到的提醒 **删除提醒** - 删除在 [`查询提醒(1)`](查询提醒(1)) 中查到的提醒
指令示例 ## 指令示例
`删除提醒 1` 在查询提醒后,删除编号为 1 的提醒 `删除提醒 1`
在查询提醒后,删除编号为 1 的提醒
另见 ## 另见
提醒我(1) 查询提醒(1) ntfy(1) [`提醒我(1)`](提醒我(1)) [`查询提醒(1)`](查询提醒(1)) [`ntfy(1)`](ntfy(1))

View File

@ -1,20 +1,24 @@
指令介绍 # 指令介绍
卵总展示 - 让卵总举起你的图片
格式 **卵总展示** - 让卵总举起你的图片
<引用图片> 卵总展示 [选项]
卵总展示 [选项] <图片>
选项 ## 格式
`--whiteness <number>` 白度
将原图进行指数变换,以调整它的白的程度,默认为 0.0
`--black-level <number>` 黑色等级 ```
将原图减淡,数值越大越淡,范围 0.0-1.0,默认 0.2 <引用图片> 卵总展示 [选项]
卵总展示 [选项] <图片>
```
`--opacity <number>` 不透明度 ## 选项
将你的图片叠放在图片上的不透明度,默认为 0.8
`--saturation <number>` 饱和度 - `--whiteness <number>` **白度**
调整原图的饱和度,应该要大于 0.0,默认为 0.85 将原图进行指数变换,以调整它的白的程度,默认为 `0.0`。
- `--black-level <number>` **黑色等级**
将原图减淡,数值越大越淡,范围 `0.01.0`,默认为 `0.2`。
- `--opacity <number>` **不透明度**
将你的图片叠放在图片上的不透明度,默认为 `0.8`。
- `--saturation <number>` **饱和度**
调整原图的饱和度,应大于 `0.0`,默认为 `0.85`。

View File

@ -1,11 +1,16 @@
指令介绍 ### 指令介绍
发起投票 - 发起一个投票 **发起投票** - 发起一个投票
格式 ### 格式
发起投票 <投票标题> <选项1> <选项2> ... ```
发起投票 <投票标题> <选项1> <选项2> ...
```
示例 ### 示例
`发起投票 这是一个投票 A B C` 发起标题为“这是一个投票”选项为“A”、“B”、“C”的投票 `发起投票 这是一个投票 A B C`
发起标题为“这是一个投票”选项为“A”、“B”、“C”的投票。
说明 ### 说明
投票各个选项之间用空格分隔选项数量为2-15项。投票的默认有效期为24小时 - 投票各个选项之间用空格分隔。
- 选项数量必须为 **2 到 15 项**。
- 投票的默认有效期为 **24 小时**。

View File

@ -1,2 +1,3 @@
指令介绍 # 指令介绍
喵 - 你发喵,此方就会回复喵
喵 - 你发喵,此方就会回复喵

View File

@ -1,12 +1,16 @@
指令介绍 ## 指令介绍
投票 - 参与已发起的投票 **投票** - 参与已发起的投票
格式 ## 格式
投票 <投票ID/标题> <选项文本> ```
投票 <投票ID/标题> <选项文本>
```
示例 ## 示例
`投票 1 A` 在ID为1的投票中投给“A” - `投票 1 A`
`投票 这是一个投票 B` 在标题为“这是一个投票”的投票中,投给“B 在 ID 为 1 的投票中,投给 “A
- `投票 这是一个投票 B`
在标题为 “这是一个投票” 的投票中,投给 “B”
说明 ## 说明
目前不支持单人多投,每个人只能投一项。 目前不支持单人多投,每个人只能投一项。

View File

@ -1,15 +1,18 @@
指令介绍 ## 指令介绍
提醒我 - 在指定的时间提醒人事项的工具
使用示例 **提醒我** - 在指定的时间提醒人事项的工具
`下午五点提醒我吃饭`
创建一个下午五点的提醒,提醒你吃饭
`两分钟后提醒我睡觉` ## 使用示例
创建一个相对于现在推迟 2 分钟的提醒,提醒你睡觉
`2026年4月25日20点整提醒我生日快乐` - `下午五点提醒我吃饭`
创建一个指定日期和时间的提醒 创建一个下午五点的提醒,提醒你吃饭
另见 - `两分钟后提醒我睡觉`
查询提醒(1) 删除提醒(1) ntfy(1) 创建一个相对于现在推迟 2 分钟的提醒,提醒你睡觉
- `2026年4月25日20点整提醒我生日快乐`
创建一个指定日期和时间的提醒
## 另见
[`查询提醒(1)`](查询提醒) [`删除提醒(1)`](删除提醒) [`ntfy(1)`](ntfy)

View File

@ -1,7 +1,13 @@
指令介绍 ## 指令介绍
摇数字 - 生成一个随机数字并发送
示例 **摇数字** - 生成一个随机数字并发送
`摇数字` 随机生成一个 1-6 的数字
该指令不接受任何参数,直接调用即可。 ### 示例
```
摇数字
```
随机生成一个 1-6 的数字。
> 该指令不接受任何参数,直接调用即可。

View File

@ -1,22 +1,33 @@
指令介绍 # 指令介绍
摇骰子 - 用于生成随机数并以骰子图像形式展示的指令
格式 **摇骰子** - 用于生成随机数并以骰子图像形式展示的指令
摇骰子 [最小值] [最大值]
示例 ## 格式
`摇骰子` 随机生成一个 1-6 的数字,并显示对应的骰子图像
`摇骰子 10` 生成 1 到 10 之间的随机整数
`摇骰子 0.5` 生成 0 到 0.5 之间的随机小数
`摇骰子 -5 5` 生成 -5 到 5 之间的随机数
说明 ```
该指令支持以下几种调用方式: 摇骰子 [最小值] [最大值]
- 不带参数:使用默认范围生成随机数 ```
- 仅指定一个参数 f1
- 若 f1 > 1则生成 [1, f1] 范围内的随机数 ## 示例
- 若 0 < f1 ≤ 1则生成 [0, f1] 范围内的随机数
- 若 f1 ≤ 0则生成 [f1, 0] 范围内的随机数 - `摇骰子`
- 指定两个参数 f1 和 f2生成 [f1, f2] 范围内的随机数(顺序无关,内部会自动处理大小) 随机生成一个 16 的数字,并显示对应的骰子图像
- `摇骰子 10`
生成 1 到 10 之间的随机整数
- `摇骰子 0.5`
生成 0 到 0.5 之间的随机小数
- `摇骰子 -5 5`
生成 -5 到 5 之间的随机数
## 说明
该指令支持以下几种调用方式:
- **不带参数**使用默认范围16生成随机数
- **仅指定一个参数 `f1`**
- 若 `f1 > 1`,则生成 `[1, f1]` 范围内的随机数
- 若 `0 < f1 ≤ 1`,则生成 `[0, f1]` 范围内的随机数
- 若 `f1 ≤ 0`,则生成 `[f1, 0]` 范围内的随机数
- **指定两个参数 `f1` 和 `f2`**:生成 `[f1, f2]` 范围内的随机数(顺序无关,内部会自动处理大小)
返回结果将以骰子样式的图像形式展示生成的随机数值。 返回结果将以骰子样式的图像形式展示生成的随机数值。

View File

@ -1,12 +1,22 @@
指令介绍 # 指令介绍
查看投票 - 查看已发起的投票
格式 **查看投票** - 查看已发起的投票
查看投票 <投票ID或标题>
示例 ## 格式
`查看投票 1` 查看ID为1的投票
`查看投票 这是一个投票` 查看标题为“这是一个投票”的投票
说明 ```
投票在进行时,使用此命令可以看到投票的各个选项;投票结束后,则可以看到各项的票数。 查看投票 <投票ID或标题>
```
## 示例
- `查看投票 1`
查看 ID 为 1 的投票
- `查看投票 这是一个投票`
查看标题为“这是一个投票”的投票
## 说明
- 投票进行中时,使用此命令可查看投票的各个选项;
- 投票结束后,可查看各选项的最终票数。

View File

@ -1,9 +1,9 @@
指令介绍 # 指令介绍
查询提醒 - 查询已经创建的提醒 **查询提醒** - 查询已经创建的提醒
指令格式 ## 指令格式
`查询提醒` 查询提醒 - `查询提醒`查询提醒
`查询提醒 2` 查询第二页提醒 - `查询提醒 2`查询第二页提醒
另见 ## 另见
提醒我(1) 删除提醒(1) ntfy(1) [提醒我(1)]()[删除提醒(1)]()[ntfy(1)]()

View File

@ -1,8 +1,17 @@
指令介绍 ## 指令介绍
生成二维码 - 将文本内容转换为二维码
格式 **生成二维码** - 将文本内容转换为二维码
生成二维码 <文本内容>
示例 ### 格式
`生成二维码 嗨嗨嗨` 生成扫描结果为“嗨嗨嗨”的二维码图片
```
生成二维码 <文本内容>
```
### 示例
```
生成二维码 嗨嗨嗨
```
生成扫描结果为“嗨嗨嗨”的二维码图片

View File

@ -1,22 +1,30 @@
指令介绍 # 指令介绍
订阅 - 收听此方 BOT 的自动消息发送
格式 **订阅** - 收听此方 BOT 的自动消息发送。
订阅 <频道名称>
取消订阅 <频道名称>
查询订阅 [页码]
可用订阅 [页码]
示例 ---
`订阅 此方谜题`
在当前的聊天上下文订阅「此方谜题」频道。此后会每天推送此方谜题(由 konaph(8) 管理的)。
如果你是私聊,则能够每天发送此方谜题到你的私聊;如果在群聊中使用该指令,则会每天发送题目到这个群里面。
`取消订阅 此方谜题` ## 格式
取消订阅「此方谜题」频道。
`查询订阅` - `订阅 <频道名称>`
查询当前聊天上下文订阅的所有频道。 - `取消订阅 <频道名称>`
- `查询订阅 [页码]`
- `可用订阅 [页码]`
`可用订阅 2` ---
查询所有可用的订阅的第二页
## 示例
- **`订阅 此方谜题`**
在当前的聊天上下文订阅「此方谜题」频道。此后会每天推送此方谜题(由 konaph(8) 管理的)。
- 如果你是私聊,则能够每天发送此方谜题到你的私聊;
- 如果在群聊中使用该指令,则会每天发送题目到这个群里面。
- **`取消订阅 此方谜题`**
取消订阅「此方谜题」频道。
- **`查询订阅`**
查询当前聊天上下文订阅的所有频道。
- **`可用订阅 2`**
查询所有可用的订阅的第二页。

View File

@ -1,13 +1,20 @@
指令介绍 # 指令介绍
雷达回波 - 用于获取指定地区的天气雷达回波图像
格式 **雷达回波** - 用于获取指定地区的天气雷达回波图像。
雷达回波 <地区>
示例 ## 格式
`雷达回波 华南` 获取华南地区的天气雷达回波图
`雷达回波 全国` 获取全国的天气雷达回波图
说明 ```
该指令通过查询中国气象局 https://www.nmc.cn/publish/radar/chinaall.html ,获取指定地区的实时天气雷达回波图像。 雷达回波 <地区>
支持的地区有:全国 华北 东北 华东 华中 华南 西南 西北。 ```
## 示例
- `雷达回波 华南`:获取华南地区的天气雷达回波图
- `雷达回波 全国`:获取全国的天气雷达回波图
## 说明
该指令通过查询中国气象局 [https://www.nmc.cn/publish/radar/chinaall.html](https://www.nmc.cn/publish/radar/chinaall.html),获取指定地区的实时天气雷达回波图像。
支持的地区有:**全国**、**华北**、**东北**、**华东**、**华中**、**华南**、**西南**、**西北**。

View File

@ -1,5 +1,7 @@
指令介绍 ## 指令介绍
黑白 - 将图片经过一个黑白滤镜的处理
示例 **黑白** - 将图片经过一个黑白滤镜的处理
引用一个带有图片的消息,或者消息本身携带图片,然后发送「黑白」即可
## 示例
引用一个带有图片的消息,或者消息本身携带图片,然后发送「黑白」即可

View File

@ -2,13 +2,13 @@ from pathlib import Path
import nonebot import nonebot
import nonebot.adapters import nonebot.adapters
import nonebot.adapters.discord
import nonebot.rule import nonebot.rule
from nonebot import on_command from nonebot import on_command
from nonebot_plugin_alconna import Alconna, Args, UniMessage, on_alconna from nonebot_plugin_alconna import Alconna, Args, UniMessage, on_alconna
from konabot.common.nb.is_admin import is_admin from konabot.common.nb.is_admin import is_admin
from konabot.common.path import DOCS_PATH_MAN1, DOCS_PATH_MAN3, DOCS_PATH_MAN7, DOCS_PATH_MAN8 from konabot.common.path import DOCS_PATH_MAN1, DOCS_PATH_MAN3, DOCS_PATH_MAN7, DOCS_PATH_MAN8
from konabot.plugins.markdown.core import MarkDownCore
def search_man(section: int) -> dict[tuple[int, str], Path]: def search_man(section: int) -> dict[tuple[int, str], Path]:
base_path = { base_path = {
@ -64,7 +64,7 @@ async def _(
for section in section_set: for section in section_set:
mans += [f"{n}({s})" for s, n in search_man(section).keys()] mans += [f"{n}({s})" for s, n in search_man(section).keys()]
mans.sort() mans.sort()
await man.send(UniMessage().text( await man.send(UniMessage().text(
( (
"★此方 BOT 使用帮助★\n" "★此方 BOT 使用帮助★\n"
@ -94,9 +94,9 @@ async def _(
await man.send(UniMessage().text("你所检索的指令不存在")) await man.send(UniMessage().text("你所检索的指令不存在"))
return return
mans_msg = mans_fp.read_text('utf-8', 'replace') mans_msg = mans_fp.read_text('utf-8', 'replace')
if isinstance(event, nonebot.adapters.discord.event.MessageEvent): # await man.send(UniMessage().text(mans_msg))
mans_msg = f'```\n{mans_msg}\n```' img = await MarkDownCore.render_markdown(mans_msg)
await man.send(UniMessage().text(mans_msg)) await man.send(UniMessage.image(raw=img))
help_deprecated = on_command('help', rule=nonebot.rule.to_me()) help_deprecated = on_command('help', rule=nonebot.rule.to_me())