排队系统插件 (AstrBot Plugin)
一个功能完善的排队叫号系统插件,适用于AstrBot框架。支持多群聊独立队列、权限管理、定时清除等功能。
功能特性
- 🚀 多群聊支持 - 每个群聊独立管理自己的队列
- 📋 排队叫号 - 完整的排队和叫号流程
- 🔒 权限控制 - 支持叫号权限管理
- 🔄 重复排队控制 - 可配置是否允许已完成用户再次排队
- ⏰ 定时清除 - 支持定时清空队列数据
- 💾 数据持久化 - 队列数据自动保存,重启不丢失
- 📱 用户友好 - 支持@用户、丰富的提示信息
- ⚙️ 可配置 - 通过管理面板灵活配置各项参数
安装方法
- 将插件目录
astrbot_plugin_queue_system放入 AstrBot 的data/plugins/目录下 - 重启 AstrBot 或在管理面板中重载插件
- 在管理面板中配置插件参数(可选)
配置说明
插件支持通过管理面板进行配置,主要配置项包括:
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
enable_call_permission |
bool | false | 是否启用叫号权限控制 |
call_permission_users |
list | [] | 有叫号权限的用户ID列表 |
max_queue_size |
int | 50 | 队列最大人数 |
queue_name |
string | "排队" | 排队系统名称 |
enable_auto_clear |
bool | false | 是否启用定时清空队列 |
clear_time |
string | "23:59" | 清空队列时间(格式:HH:MM) |
call_message |
string | "到你了,请前往直播间扫码上号" | 叫号通知消息 |
queue_status_title |
string | "队列状态" | 队列状态标题 |
completed_label |
string | "已完成" | 已完成标签 |
waiting_label |
string | "等待中" | 等待中标签 |
allow_requeue |
bool | false | 是否允许已完成排队的用户再次排队 |
admin_users |
list | [] | 高级管理员用户ID列表,可以执行清空所有队列等敏感操作 |
使用方法
👤 用户指令
| 指令 | 别名 | 说明 |
|---|---|---|
/排队 |
无 | 加入排队队列 |
/退出排队 |
无 | 退出当前排队 |
/查看队列 |
无 | 查看当前队列状态 |
/我的位置 |
无 | 查看自己在队列中的位置 |
/当前叫号 |
无 | 查看即将被叫的用户 |
/排队帮助 |
help, 帮助 | 显示帮助信息 |
🔧 管理员指令
| 指令 | 说明 | 权限要求 |
|---|---|---|
/下一位 |
呼叫队列中的下一位用户 | 需要叫号权限(如果启用) |
/跳过 |
跳过队列中的第一位用户 | 需要叫号权限(如果启用) |
/清空队列 |
清空当前群聊的队列和已完成记录 | 需要叫号权限(如果启用) |
/清空所有队列 |
清空所有群聊的队列和已完成记录 | 需要高级管理员权限 |
使用流程
- 用户排队:用户发送
/排队加入队列 - 查看状态:可以发送
/查看队列或/我的位置查看排队情况 - 管理员叫号:管理员发送
/下一位呼叫第一位用户 - 用户完成:被叫号用户收到@通知,自动移入已完成列表
- 循环继续:管理员继续呼叫下一位,直到队列清空
特色功能
🎯 重复排队控制
- 默认情况下,每个用户每天只能排队一次
- 完成排队的用户会被添加到已完成列表,不能再次排队
- 可通过配置
allow_requeue: true允许重复排队
📅 定时自动清除
- 支持设置每天固定时间自动清空所有队列
- 适用于需要每日重置的场景(如直播间每日排队)
- 配合持久化存储,确保重启后数据不丢失
🏢 多群聊独立管理
- 每个群聊拥有独立的队列和已完成列表
- 私聊场景也有独立队列
- 支持跨群聊的叫号和队列管理
🔐 权限管理
- 分级权限控制:支持普通管理员和高级管理员两个权限级别
- 普通管理员权限:可以执行下一位、跳过、清空当前群聊队列等操作
- 高级管理员权限:可以执行清空所有群聊队列等敏感操作
- 灵活配置:支持用户ID白名单管理,分别配置不同级别的管理员
- 友好提示:无权限用户会收到清晰的错误提示
技术特性
- ✅ 数据持久化:使用 AstrBot 的键值存储,重启不丢失
- ✅ 异步处理:全异步实现,不阻塞主线程
- ✅ 错误处理:完善的异常捕获和日志记录
- ✅ 消息链支持:支持富文本消息、@用户等功能
- ✅ 配置验证:自动加载配置,提供合理默认值
文件结构
astrbot_plugin_queue_system/
├── main.py # 插件主文件
├── _conf_schema.json # 配置模式定义
└── README.md # 说明文档
版本信息
- 版本:1.2.0
- 作者:mogudunxy
- 框架:AstrBot v3.4+
- Python要求:3.7+
常见问题
Q: 如何设置叫号权限?
A: 在管理面板中启用 enable_call_permission,并在 call_permission_users 中添加用户ID。
Q: 队列数据会丢失吗?
A: 不会。插件使用持久化存储,重启 AstrBot 后队列数据会自动恢复。
Q: 可以同时管理多个群聊的队列吗?
A: 可以。每个群聊的队列是完全独立的,互不影响。
Q: 如何允许用户重复排队?
A: 在配置中将 allow_requeue 设置为 true 即可。
Q: 如何设置高级管理员?
A: 在配置中的 admin_users 列表添加高级管理员的用户ID。高级管理员可以执行清空所有队列等敏感操作。
Q: 普通管理员和高级管理员有什么区别?
A: 普通管理员(call_permission_users)可以执行下一位、跳过、清空当前群聊队列等操作;高级管理员(admin_users)可以执行清空所有群聊队列等影响所有群聊的敏感操作。
更新日志
v1.2.0
- 🔧 修复异步函数调用问题:解决JSON序列化错误
- 🎯 简化图片渲染:使用纯文本转图片,避免复杂HTML模板
- 🛡️ 增强稳定性:完善错误处理和回退机制
- 📱 优化用户体验:确保所有队列信息都能正常显示
v1.1.0
- 🆕 默认文转图功能:队列状态、叫号信息、帮助信息默认渲染为图片
- 🔄 失败回退机制:如果图片生成失败,自动发送文字版本
- 🚀 使用AstrBot内置文转图API:无需额外配置,开箱即用
- 🎨 更好的视觉体验:图片格式提供更好的可读性
- 📱 跨平台兼容:支持所有平台的图片显示
v1.0.0
- 初始版本发布
- 支持基本的排队叫号功能
- 添加权限管理和配置系统
- 支持数据持久化和定时清除
- 完善的权限控制:所有管理员指令都需要权限验证
- 添加帮助指令系统
- 支持重复排队配置开关
如有问题或建议,欢迎提交 Issue 或 Pull Request!