🔫 左轮手枪对决
基于 AstrBot 官方插件规范开发的群聊轮盘赌游戏插件,采用现代化代码架构,提供刺激的左轮手枪对决体验。
✨ 核心特性
- 🎯 规范开发:严格遵循AstrBot官方插件开发规范
- 🤖 AI交互:采用纯触发器架构,支持自然语言开启游戏、参与对决、查询状态
- ⚡ 指令优化:使用指令组结构,逻辑清晰
- 🔒 权限控制:管理员专用功能,安全可靠
- 🎲 随机机制:随机装填、随机走火、随机惩罚
- ⏰ 超时机制:自动结束闲置游戏(300秒超时)
- 🛡️ 错误处理:完善的异常捕获和日志记录
- 📊 状态管理:高效的并发游戏状态管理
📋 更新日志
想了解最新版本更新内容?请查看 CHANGELOG.md 文件获取详细的版本历史、功能改进和Bug修复记录。
🚀 快速开始
安装要求
- AstrBot v4.5.0+
- Python 3.10+
安装插件
方法一:插件市场(推荐)
在 AstrBot WebUI 的插件市场中搜索 "左轮手枪对决" 或 "astrbot_plugin_rg2",点击安装即可。
方法二:Git 克隆
- 克隆插件到 AstrBot 插件目录
cd AstrBot/data/plugins
git clone https://github.com/piexian/astrbot_plugin_rg2
- 在 WebUI 中启用插件
- 配置插件参数(可选)
- 确保机器人有群管理权限
基础使用
独立指令(最常用)
# 装填子弹(随机1-6发,所有人可用)
[指令前缀]装填
# 装填子弹(指定数量,1-6发,仅限管理员)
[指令前缀]装填 3
# 参与游戏,扣动扳机
[指令前缀]开枪
# 开启随机走火功能(仅限管理员)
[指令前缀]走火开
# 关闭随机走火功能(仅限管理员)
[指令前缀]走火关
指令组指令(避免冲突)
# 查看当前游戏状态
[指令前缀]左轮 状态
# 显示帮助信息
[指令前缀]左轮 帮助
注意:[指令前缀]默认为/,可在AstrBot配置中修改。状态和帮助指令放入了左轮指令组,避免与其他插件冲突。如果输入[指令前缀]左轮会显示指令组的树形结构。
用户指令
# 参与游戏,扣动扳机
[指令前缀]开枪
# 查看当前游戏状态
[指令前缀]左轮 状态
# 显示帮助信息
[指令前缀]左轮 帮助
🎮 游戏功能
管理员专属功能
- 装填子弹(指定数量):
[指令前缀]装填 [数量]- 指定1-6发子弹,仅限管理员 - 走火控制:
[指令前缀]走火开或[指令前缀]走火关- 控制随机走火功能,仅限管理员
所有用户可用功能
- 装填子弹(随机):
[指令前缀]装填- 随机装填1-6发子弹,所有人可用 - 参与游戏:
[指令前缀]开枪- 扣动扳机参与游戏 - 查询状态:
[指令前缀]左轮 状态- 查看当前游戏状态(剩余子弹、当前弹膛) - 查看帮助:
[指令前缀]左轮 帮助- 显示完整的使用说明和游戏规则
AI自然语言交互
- 开启游戏:"来玩左轮手枪"、"轮盘赌"、"再来一局"、"开始游戏"、"play roulette"
- 参与游戏:"我也要玩"、"我也要参加"、"开枪"、"我来试试"、"shoot me"、"算我一个"
- 查询状态:"游戏状态"、"现在什么情况"、"还剩几发子弹"、"how many bullets left"、"check status"
提示:AI功能需要在AstrBot中启用AI对话功能才能使用。
用户功能
- 射击:
[指令前缀]开枪- 扣动扳机参与游戏 - 状态查询:
[指令前缀]左轮 状态- 查看当前游戏状态(剩余子弹、当前弹膛) - 帮助:
[指令前缀]左轮 帮助- 显示完整的使用说明和游戏规则
⚙️ 配置说明
插件支持可视化配置,可在 AstrBot 管理面板调整:
| 配置项 | 说明 | 默认值 | 建议范围 |
|---|---|---|---|
timeout_seconds |
游戏超时时间(秒) | 300 | 60-600 |
misfire_probability |
随机走火概率(0.0-1.0) | 0.003 | 0-0.01 |
min_ban_seconds |
最小禁言时长(秒) | 60 | 30-120 |
max_ban_seconds |
最大禁言时长(秒) | 300 | 120-600 |
misfire_enabled_by_default |
新群默认开启走火 | false | true/false |
ai_trigger_delay |
AI工具触发延迟(秒) | 2 | 任意正整数 |
⚠️ 重要提示:修改AI工具相关配置(如
ai_trigger_delay)后,需要重载插件才能生效。其他配置(如超时时间、走火概率等)会实时生效。
🎯 游戏规则
- 弹膛设置:6个弹膛,随机装填实弹
- 射击机制:轮流扣动扳机,空弹继续,实弹禁言
- 惩罚机制:中弹后随机禁言60-300秒
- 超时机制:装填后300秒内无操作自动结束
- 随机走火:群聊消息有0.3%概率触发走火(如开启)
- 数据持久化:走火配置自动保存,重启后保留
🔧 技术特性
代码规范
- 类型注解: 完整的类型提示
- 异步编程: 全异步处理,性能优异
- 错误处理: 完善的异常捕获机制
- 日志记录: 详细的操作日志
- 文档规范: 标准化的docstring注释
架构设计
- 模块化: 功能分离,易于维护
- 可扩展: 支持功能扩展和定制
- 高性能: 高效的状态管理
- 内存安全: 自动资源清理
- 数据持久化: 配置自动保存和加载
🤖 AI功能详情
纯触发器架构
本插件采用纯触发器架构,AI工具仅作为触发器,所有游戏逻辑、消息发送和用户交互均由主插件处理。
统一AI触发器工具
revolver_game - 左轮手枪游戏统一控制器
通过 action 参数控制不同操作,实现精确的游戏控制:
支持的操作类型
action: "start"- 启动新游戏(随机装填子弹)- 触发条件:"来玩/开始/开启左轮手枪游戏"、"装填子弹/准备游戏"、"再来一局/重新开始"、"play roulette/let's play"
- 权限说明:AI启动时统一随机装填,确保游戏公平性
- 处理方式:触发主插件处理游戏初始化、状态设置和消息发送
action: "join"- 参与游戏开枪射击- 触发条件:"我要玩/我要参加/算我一个"、"开枪/扣动扳机/我来试试"、"shoot me/my turn"、"我想参与"
- 处理方式:触发主插件处理射击逻辑、游戏结果和状态更新
action: "status"- 查询游戏进行状态- 触发条件:"游戏状态/情况怎么样"、"还剩几发子弹/现在什么情况"、"what's the status/how many bullets left"、"check game status"
- 处理方式:触发主插件处理状态查询和信息返回
工具特性
- 事件驱动触发: 使用消息发送后钩子,精确等待AI消息完成
- 可配置延迟: 支持
ai_trigger_delay配置项调整触发时机 - 动态子弹显示: 显示实际装填的子弹数量,如"2弹上膛,杀机四伏"
架构优势
- 统一控制:单一工具处理所有操作,简化AI调用逻辑
- 精确控制:通过参数明确区分不同操作类型
- 职责明确:AI工具仅负责触发,主插件负责所有业务逻辑
- 性能优化:减少工具数量,降低系统开销
- 易于维护:统一的错误处理和返回格式
- 消息一致:所有用户消息由主插件统一发送,确保风格一致
- 安全可靠:AI无法指定子弹数量,防止权限绕过
使用示例
用户:我们来玩左轮手枪吧!
AI:🎯 用户名称 挑战命运!
🔫 装填 4 发子弹!
💀 谁敢扣动扳机?
用户:我也要玩!
AI:🎲 用户名称 逃过一劫!
用户:现在情况怎么样?
AI:🔫 游戏进行中
📊 剩余:3发子弹
🎯 第2膛
🍀 安全
用户:再来一局!
AI:🎯 用户名称 挑战命运!
🔫 装填 2 发子弹!
💀 谁敢扣动扳机?
📱 文本风格
采用简洁有力的现代文本风格:
- 装填:"🔫 用户名称 装填 3 发子弹!"
- 空弹:"🎲 咔哒!用户名称 逃过一劫!"
- 中弹:"💥 枪声炸响!用户名称 中弹倒地!"
- 走火:"💥 砰!手枪走火!用户名称 不幸中弹!"
🔄 版本历史
详细的版本更新日志请查看 CHANGELOG.md 文件。
- v1.2.0 (2025-11-16) - 重大功能重构:统一AI工具、事件驱动触发机制、动态版本管理
- v1.1.1 (2025-11-14) - 优化 AI 工具为纯触发器模式,简化架构,提升性能
- v1.1.0 (2024-11-13) - 修复 AI 工具问题,添加参数支持
- v1.0.0 (2024-11-12) - 基于 AstrBot 官方规范全新开发,支持 AI 自然语言交互
⚠️ 注意事项
- 权限要求:需要管理员权限才能使用
[指令前缀]装填 [数量]、[指令前缀]走火开、[指令前缀]走火关指令(注意:[指令前缀]装填不带参数时所有人可用) - 群聊专用:所有功能仅在群聊中可用,私聊无效
- 禁言功能:确保机器人有群管理权限,否则禁言会失败
- AI支持:需要在AstrBot中启用AI对话功能才能使用自然语言交互
- 游戏状态:同一时间一个群只能进行一个游戏
- 超时机制:游戏装填后300秒内无人操作会自动结束
- 数据持久化:走火配置会自动保存,重启插件后保留设置
- 管理员免疫:群主和管理员中弹后不会被禁言(显示免疫提示)
🐛 故障排除
游戏无法开始?
- 检查是否有管理员权限
- 确认在群聊中使用
- 查看是否有进行中的游戏
AI功能不工作?
- 确保启用了AI对话功能
- 检查函数工具是否加载成功
- 确认自然语言意图清晰
禁言失败?
- 检查机器人群管理权限
- 确认目标用户可禁言
- 查看日志获取详细错误
📞 支持
如有问题请访问 GitHub仓库 提交issue。
🙏 致谢
本项目基于 astrbot_plugin_rg 进行修改和优化,感谢原作者 zgojin 的开源贡献!
🔫 准备好了吗?来一局刺激的左轮手枪对决吧!