😊 天使之笑
插件名称: Angel Smile
当前版本: 1.0.3
让 bot 在回复中自动插入表情包,并支持由 AI 将新图片收入表情库存。
天使之笑主要由大模型自动使用。普通用户不需要记住固定命令,正常聊天时,bot 会在合适的语境中选择已有表情包发送。
🚀 快速了解
| 项目 | 说明 |
|---|---|
| 是否需要固定命令 | 不需要 |
| bot 会不会自动发表情 | 会,具体取决于大模型判断 |
| 能否收入新表情 | 可以,AI 看到适合的图片时可调用工具保存 |
| 同名表情能否有多张 | 可以,会保存为多个变体 |
| 是否会保存重复图片 | 会通过 dHash 检测近似重复,重复图片通常会被拒绝 |
| 每条消息最多几个表情 | 默认最多 1 个,由管理员配置 |
✨ 工作方式
- 插件读取已有的表情包库存。
- 可用表情名称会提供给大模型。
- 大模型在回复中选择合适的表情名称。
- 插件把表情标记替换成实际图片发送。
- 当大模型看到适合保存的新图片时,可以调用内部工具收入表情库存。
💬 普通用户怎么使用?
普通用户通常只需正常聊天。
例如,bot 可能生成这样的内部回复:
好的,我来看看 :坏笑:
插件会在发送前将 :坏笑: 替换为对应的表情图片。用户最终看到的是正常文本和图片,而不是表情标记。
🖼️ 表情库存规则
| 类型 | 规则 |
|---|---|
| 单图表情 | 图片文件名就是表情名称 |
| 多变体表情 | 同名表情会建立文件夹,内部保存多个变体 |
| 同名优先级 | 同名文件夹优先于根目录中的同名图片 |
| 图片格式 | 新收入的图片统一转换为 WebP |
| 重复检测 | 使用 dHash 检测近似重复图片 |
| 隐藏内容 | 非图片、深层目录和以 . 开头的名称不会加入表情列表 |
📥 新表情如何入库?
插件为大模型提供名为 meme 的内部工具:
| 参数 | 含义 |
|---|---|
emotion | 表情名称,即回复中使用的 :表情名: |
path | 图片来源,可为本地路径、file:/// 或网络地址 |
入库规则:
- 第一次保存某名称:创建一张单图表情;
- 第二次保存同名表情:自动升级为多变体文件夹;
- 后续同名表情:按
(2)、(3)等编号保存; - 如果检测到近似重复图片,则不会再次保存。
这些是 AI 内部行为,普通用户无需手动调用工具。
🎭 为什么有时会发表情,有时不会?
表情是否出现由大模型结合当前回复内容判断。可能受以下因素影响:
- 当前话题和语气;
- 表情库存中是否存在合适表情;
- 每条消息的表情数量限制;
- 大模型是否正确选择了表情名称;
- 管理员是否启用了相关能力。
⚠️ 使用注意
- bot 不一定每次回复都会发表情。
- 收入新表情由 AI 自主判断,不保证看到图片就一定保存。
- 近似重复图片可能被拒绝入库。
- 已删除图片的哈希仍可能保留,防止同一张图被反复收入。
- 表情名称和实际图片内容由管理员维护。
- 不要发送违法、骚扰、隐私泄露或不适合公开使用的图片。
❓ 常见问题
Q:怎样让 bot 发表情?
正常聊天即可。大模型认为合适时会自动选择表情。仓库 README 没有提供普通用户强制发表情的固定命令。
Q:为什么 bot 写出了 :表情名:,却没有变成图片?
可能是库存中不存在该名称、名称不匹配,或插件在发送前没有成功替换。
Q:同一个表情名为什么会出现不同图片?
同名表情可以有多个变体,插件可从对应文件夹中选择图片。
Q:为什么新图片没有被保存?
可能是 AI 没有调用入库工具,或者图片被 dHash 判断为近似重复。
Q:管理员能限制每次发表情的数量吗?
可以。配置项 max_stickers_per_message 控制每条消息最多使用的贴纸数量,默认值为 1。
📎 项目信息
- 显示名称:天使之笑
- 项目作者:kawayiYokami
- 当前版本:1.0.3
- 项目地址:https://github.com/kawayiYokami/astrbot_plugin_angel_smile