AstrBot 表情包制作 & 图片工具插件 (Meme Maker API)
这是一款为 AstrBot 设计的功能强大、高度模块化的表情包制作与图片处理插件。它通过连接后端 API 服务(如 Meme-Generator),为您的聊天机器人带来无穷的乐趣和实用性。
✨ 功能特性
强大的表情制作:
- 关键词触发:通过发送
-关键词 + 图片/文字/@某人即可生成表情。 - 默认文本:对于“为所欲为”等需要大量文字的表情,不提供文字时会自动使用经典台词(如果有)。
- 智能交互:当所需参数不足时,会自动进入等待模式,提示用户补充,并可通过
-取消随时终止。 - 选项参数:支持
-摸 @QQ -c这样的参数选项,对生成的图片进行微调。
- 关键词触发:通过发送
丰富的图片工具:
- 内置多达13种图片处理工具,包括水平/竖直翻转、旋转、缩放、裁剪、灰度、反色、横向/纵向拼接,以及GIF分解、合成、倒放、变速。
完善的信息查询:
- 表情列表:通过
-表情列表获取图文并茂的可用表情总览。 - 表情详情:通过
-表情详细 <关键词>查看指定表情的详细用法和预览图。 - 表情搜索:通过
-表情搜索 <关键词>查找表情,支持交互式翻页。
- 表情列表:通过
高级权限系统:
- 多级权限:集成了“超管 > 群主 > QQ管理员 > 手动插件管理员 > 普通成员”的多级权限体系。
- 后台可配:可在后台为部分管理指令单独配置所需的权限等级。
- 手动授权:超管可通过
-群管理员指令,将插件的管理权限精准授予普通成员,而无需给予其真正的群管理员身份。
极致的用户体验:
- 消息自动撤回:可配置的“阅后即焚”功能,机器人在交互式流程中发送的提示消息(如“参数不足...”、“还差...”),会在流程结束后被自动撤回,保持聊天界面整洁。
- 2分钟防撤回失败保险:独特的110秒监视器,确保交互时间过长导致消息无法撤回时,能主动终止会话并清理消息。
- 可配置的多图发送策略:可自定义图片数量阈值,实现“直接发送”、“合并转发”、“打包为.zip文件”三种不同的发送方式。
详细的数据统计:
- 支持通过自然语言查询,如
-我的本周表情调用统计,生成精美的统计图表。
- 支持通过自然语言查询,如
🚀 安装
方式一:自动部署(推荐)
- 通过 AstrBot 插件市场安装
在 AstrBot WebUI 后台,进入“插件市场”,搜索meme_maker_api,一键安装即可。
安装完成后,直接进入“插件管理”进行配置。
方式二:手动部署
下载插件: 将本项目文件夹放置于 AstrBot 的
data/plugins/目录下。安装依赖: 在您的 AstrBot 环境中,安装
requirements.txt中列出的依赖库。pip install aiohttp aiosqlite pydantic python-dateutil filetype
🌏 部署前置服务 (重要!)
部署meme-generator:
- meme-generator 服务: 本插件是 Meme-API 的前端,您必须先部署 meme-generator-rs,并确保您的服务器可以访问到它的地址。meme-generator(python)版的以后再说
配置插件:
- 启动 AstrBot,前往 WebUI -> 插件管理,找到
meme_maker_api插件。 - 点击“配置”,填入您的 Meme-API 地址。
- 如果您希望启用“消息撤回”功能,请**开启
- 启动 AstrBot,前往 WebUI -> 插件管理,找到
📖 使用说明
基础用法: -<指令名> [参数]
图片来源:
当指令需要图片时,您可以通过以下几种方式提供:
- 直接在消息中发送图片。
- @一位用户来使用其头像。
- 回复一条包含图片的消息。
- 如果插件配置中开启了
use_sender_when_no_image,在不提供任何图片时,会自动使用您自己的头像。
🖼️ 表情制作
按关键词制作
通过表情的关键词来触发制作。
语法:
-<关键词> [文字1] [文字2]... [@用户/图片] [--选项]示例:
-摸 @小助手 -圆
(制作一张圆形的“摸”@小助手头像的表情)(引用一张图片)
-拍
(将回复的图片作为素材制作“拍”表情)-举牌 你是谁来着?
(制作需要一段文字的“举牌”表情)
使用默认台词
对于需要大量文字的表情(如“为所欲为”),如果不提供任何文字,插件会自动使用内置的经典台词。
- 示例:
-为所欲为
交互式制作 & 取消
当您提供的文字或图片数量不足时,插件会自动进入等待模式。
- 示例:
你:
-为所欲为 1 2
Bot:参数不足,请继续发送7段文字。60秒内无操作将自动取消...
你:3 4 5 6 7 8 9
Bot:参数已集齐,开始制作...(随后发送图片和撤回提示) - 在等待过程中,可以随时发送
-取消来终止制作。
随机表情
随机选择一个符合您提供参数的表情进行制作。
- 示例:
-随机表情(随机找一个不需要任何参数的表情)-随机表情 我要白嫖(随机找一个需要一段文字的表情)
(发送一张图片)-随机表情(随机找一个需要一张图片的表情)
ℹ️ 信息查询
- 获取表情列表:
-表情列表
- 查看表情详情:
-表情详情 <关键词>示例:
-表情详情 摸
- 搜索表情:
-表情搜索 <关键词>示例:
-表情搜索 猫- (当结果多于一页时,可根据提示发送
>或页码进行翻页)
🛠️ 图片工具
所有图片工具都需要您在消息中提供图片(通过发送、@或回复)。
| 功能 | 指令 | 参数说明 | 示例 |
|---|---|---|---|
| 水平翻转 | -水平翻转 |
无 | -水平翻转 |
| 竖直翻转 | -竖直翻转 |
无 | -竖直翻转 |
| 旋转 | -旋转 |
角度 (可选, 默认90) | -旋转 90 |
| 缩放 | -缩放 |
尺寸 (宽x高) | -缩放 200x300 |
| 裁剪 | -裁剪 |
坐标或尺寸 | -裁剪 100,100,200,200 |
| 灰度图 | -灰度 |
无 | -灰度 |
| 反相/反色 | -反色 |
无 | -反色 |
| 横向拼接 | -水平拼接 |
需要2张图片 | (发送2张图)-水平拼接 |
| 纵向拼接 | -纵向拼接, -竖直拼接 |
需要2张图片 | (发送2张图)-纵向拼接 |
| GIF分解 | -gif分解 |
需要1张GIF图 | (发送GIF)-gif分解 |
| GIF合成 | -gif合成 |
帧间隔(秒,可选,默认0.1) | (发送多张图)-gif合成 0.2 |
| GIF倒放 | -gif倒放 |
需要1张GIF图 | (发送GIF)-gif倒放 |
| GIF变速 | -gif变速 |
速度/帧率/时长 | -gif变速 2x |
📊 数据统计
指令由多个部分自由组合而成,[]中的为可选项。
- 语法:
-[我的/全局][时间段]表情统计 [关键词] - [时间段] 可选值:
日,本日,今日,24小时,周,本周,7天,月,本月,30天,年,本年,一年 - 示例:
-表情统计(查询本群24小时内的统计)-我的表情统计-全局本周表情统计-我的表情统计 摸
⚙️ 管理指令 (需要权限)
管理员 / 群主 / 插件管理员 可用
-刷新表情: 强制从API重新加载表情列表。-禁用表情 <关键词>: 在当前群禁用指定表情。-启用表情 <关键词>: 在当前群重新启用表情。-管理列表: 查看当前群的表情管理规则(禁用/启用列表)。
超管 可用
-群管理员 <添加/删除/查看> <@用户/QQ号> [群号]: 管理插件管理员。-全局禁用表情 <关键词>: 将表情设为全局白名单模式(默认禁用,需分群启用)。-全局启用表情 <关键词>: 将表情恢复为全局黑名单模式(默认启用)。
💟 更多指令 (因为暂时没时间写README所以就先到这儿吧)
⚙️ 配置项说明
所有配置项均可在 AstrBot 后台 WebUI 中进行图形化配置。
| 配置项 | 类型 | 说明 | 默认值 |
|---|---|---|---|
meme_generator_base_url |
文本 | 【重要】Meme制作器API地址,需以/结尾 |
http://127.0.0.1:2233/ |
timeout |
数字 | 网络请求超时(秒) | 20 |
command_prefix |
文本 | 插件指令专属前缀 | - |
bot_display_name |
文本 | 合并转发中显示的机器人昵称 | Meme Bot |
interactive_settings.enabled |
开关 | 启用交互式等待 | True (开启) |
interactive_settings.timeout |
数字 | 等待用户补充参数的超时时间(秒) | 60 |
interactive_settings.recall.enabled |
开关 | 启用提示消息自动撤回 | False (关闭) |
interactive_settings.smart_reprompt.enabled |
开关 | 智能重提示 | False (关闭) |
interactive_settings.smart_reprompt.threshold |
数字 | 触发重提示的无效输入次数 | 2 |
multi_image_options.direct_send_threshold |
数字 | 直接发送图片数量阈值 | 3 |
multi_image_options.send_forward_msg |
开关 | 超过阈值时启用合并转发 | True (开启) |
multi_image_options.send_as_zip_enabled |
开关 | 超过阈值时启用zip打包 | True (开启) |
multi_image_options.zip_threshold |
数字 | 触发zip打包的图片数量阈值 | 20 |
multi_image_options.zip_use_base64 |
开关 | 使用Base64方式发送zip包 | False (关闭) |
use_sender_when_no_image |
开关 | 无图时自动使用发送者头像 | True (开启) |
fuzzy_match |
开关 | 启用表情关键词模糊匹配 | True (开启) |
label_settings.label_new_days |
数字 | “新”表情标签显示天数 | 7 |
label_settings.label_hot_days |
数字 | “热门”表情统计周期(天) | 30 |
label_settings.label_hot_threshold |
数字 | “热门”表情使用次数阈值 | 20 |
perms.handle_refresh_memes |
下拉 | 刷新表情 指令权限 | 超管 |
perms.handle_disable_meme |
下拉 | 禁用表情 指令权限 | 管理员 |
perms.handle_enable_meme |
下拉 | 启用表情 指令权限 | 管理员 |
perms.handle_manager_list |
下拉 | 管理列表 指令权限 | 超管 |
perms.handle_group_admin_manager |
下拉 | 群管理员 指令权限 | 超管 |
perms.handle_global_disable_meme |
下拉 | 全局禁用表情 指令权限 | 超管 |
perms.handle_global_enable_meme |
下拉 | 全局启用表情 指令权限 | 超管 |
更多详细说明请参考插件目录下的
_conf_schema.json文件。
常见问题(FAQ)
- Q: 插件无法连接 meme-generator 服务怎么办?
- 请检查 meme-generator 服务是否已启动,并确保
meme_generator_base_url配置正确可访问。
- 请检查 meme-generator 服务是否已启动,并确保
- Q: 图片生成失败,提示“参数不足”?
- 请根据提示补充所需的图片或文字参数,或使用
-取消终止当前操作。
- 请根据提示补充所需的图片或文字参数,或使用
- Q: 如何查看详细日志?
- 请在 AstrBot 的控制台查找
meme_maker_api相关日志输出。
- 请在 AstrBot 的控制台查找
致谢
- 本插件基于强大且易用的 AstrBot 框架开发,感谢 AstrBot 团队为开源社区带来的高效机器人平台。
- 本插件的功能设计,深度参考了优秀的 nonebot-plugin-memes-api 项目。
- 权限系统的设计,学习并改造了 astrbot_plugin_QQAdmin 的实现。
- 核心依赖于 meme-generator 服务。
向以上所有优秀的开源项目致敬!