基于 AstrBot 框架的完整狼人杀游戏插件,支持 9 人局、AI 复盘、自动化流程控制,让你在 QQ 群聊中畅玩狼人杀!
⚠️ 重要提示:此插件需要 Bot 账号是群主,因为需要设置管理员、使用禁言和修改群昵称功能。建议将 Bot 设为群主以确保所有功能正常运行。
📊 版本历史
v3.0.1 (2025-12-10)
- 通过提示词优化,缓解了AI感知上下文和幻觉问题
- 加入了AI重试机制,防止个别输出错误导致其他AI无法发言
- 修复了无法正确改回昵称的Bug
- 优化了发言顺序逻辑(现在将随机打乱)
- 修复了平票出现无限循环且无法投票的问题
- 其他优化
v3.0.0 (2025-12-06) 🎉 重大更新
- 🤖 AI 玩家:人不够?AI 来凑!甚至支持全 AI「塞博斗蛐蛐」
- 管理员发送
/小咪加入即可添加名为"小咪"的 AI 玩家 - AI 自动完成所有操作:夜晚行动、白天发言、投票决策
- 支持人类 + AI 混合对局,或纯 AI 观赏局
/踢出AI 编号可移除指定 AI 玩家
- 管理员发送
v2.0.0 (2025-12-02)
- 🔨 架构重构:从单文件 main.py 重构为模块化设计,代码结构更清晰
- 🎴 接口预留:预留角色卡片生成接口,便于后续扩展
- 🐛 修复一些已知问题
v1.0.0 (2025-01-12)
- ✨ 完整的 9 人局游戏流程
- ✨ AI 复盘功能(可自定义提示词)
- ✨ 高度可配置(18 个配置项)
- ✨ 编号系统和智能禁言
- ✨ 遗言、PK、猎人开枪等完整机制
- ✨ 投票 30 秒倒计时提醒
- 🔧 命令结构简化(无需前缀)
- 🐛 修复多个已知 bug
✨ 功能特性
- 🎮 完整游戏流程:支持夜晚行动(狼人、预言家、女巫、猎人)、白天发言、投票放逐、PK 环节
- 🔢 编号系统:自动分配 1-9 号,群昵称改为编号,游戏结束后恢复
- 🤐 智能禁言:自动全员禁言,发言时临时解除,确保游戏秩序
- 💬 遗言机制:第一晚被狼杀、投票放逐均有遗言,被毒无遗言
- 🔫 猎人技能:被狼杀或投票放逐可开枪带走一人,被毒不能开枪
- 🤖 AI 复盘:游戏结束后自动生成专业复盘报告,分析策略、评选 MVP 和划水王
- ⚙️ 高度可配置:支持自定义玩家数量、角色配置、超时时间、AI 提示词等
- ⏱️ 超时机制:各阶段自动倒计时,投票阶段 30 秒提醒
- 📊 平票处理:自动进入 PK 环节,二次投票决定放逐
📋 游戏规则
默认配置(可自定义)
- 玩家人数:9 人
- 阵营配置:3 狼人 + 3 神(预言家 + 女巫 + 猎人) + 3 平民
游戏流程
夜晚阶段:
1. 狼人办掉目标(私聊投票,多数票决定)
2. 预言家验人(私聊验证,得知好人/狼人)
3. 女巫行动(私聊选择救人/毒人/不操作)
↓
遗言阶段(如果有):
- 第一晚被狼杀:有遗言
- 投票放逐:有遗言
- 被毒:无遗言
↓
白天阶段:
1. 公布昨晚死者
2. 按编号顺序依次发言(每人 2 分钟)
3. 投票放逐(支持平票 PK)
↓
猎人开枪(如果被杀且可开枪)
↓
判断胜负或进入下一晚
角色技能
| 角色 | 技能 |
|---|---|
| 🐺 狼人 | 每晚集体投票办掉一名玩家,可密谋交流 |
| 🔮 预言家 | 每晚验证一名玩家的身份(好人/狼人) |
| 💊 女巫 | 拥有一瓶解药(救人)和一瓶毒药(毒人),同一晚不能同时使用 |
| 🔫 猎人 | 被狼杀或投票放逐时可开枪带走一人,被毒不能开枪 |
| 👤 平民 | 无特殊技能,依靠推理找出狼人 |
胜利条件
- 🐺 狼人胜利:好人数量 ≤ 狼人数量,或所有神职出局
- ✅ 好人胜利:所有狼人被放逐出局
🚀 快速开始
前置要求
⚠️ 必须满足以下条件才能正常使用:
- ✅ 已安装 AstrBot v4.5.0+
- ✅ Bot 账号是群主(需要禁言和修改群昵称、设置管理员等权限)
- ✅ 玩家已添加 Bot 为好友(用于接收私聊消息)
安装
- 将插件放入
data/plugins/目录 - 重启 AstrBot
- 确保 Bot 在目标群中是群主或管理员
创建游戏
1. 房主在群聊发送:/创建房间
2. 9 名玩家依次发送:/加入房间
3. 房主发送:/开始游戏
4. 游戏自动分配角色并开始
📖 命令列表
基础命令
| 命令 | 说明 | 权限 |
|---|---|---|
/创建房间 |
创建游戏房间 | 所有人 |
/加入房间 |
加入游戏 | 所有人 |
/开始游戏 |
开始游戏 | 房主 |
/查角色 |
查看自己的角色(私聊) | 玩家 |
/游戏状态 |
查看游戏状态 | 所有人 |
/结束游戏 |
强制结束游戏 | 房主 |
/XXX加入 |
添加 AI 玩家(如 /小咪加入) | 管理员 |
/踢出AI 编号 |
踢出指定 AI 玩家 | 管理员 |
/狼人杀帮助 |
显示帮助信息 | 所有人 |
夜晚命令(私聊)
| 命令 | 说明 | 角色 | 示例 |
|---|---|---|---|
/办掉 编号 |
投票办掉目标 | 狼人 | /办掉 3 |
/密谋 消息 |
与狼人队友交流 | 狼人 | /密谋 我们刀3号 |
/验人 编号 |
验证玩家身份 | 预言家 | /验人 5 |
/救人 |
使用解药救人 | 女巫 | /救人 |
/毒人 编号 |
使用毒药毒人 | 女巫 | /毒人 7 |
/不操作 |
女巫不使用药 | 女巫 | /不操作 |
/开枪 编号 |
开枪带走一人 | 猎人 | /开枪 2 |
白天命令
| 命令 | 说明 | 权限 | 示例 |
|---|---|---|---|
/发言完毕 |
结束发言 | 当前发言者 | /发言完毕 |
/遗言完毕 |
结束遗言 | 被杀玩家 | /遗言完毕 |
/开始投票 |
跳过发言直接投票 | 房主 | /开始投票 |
/投票 编号 |
投票放逐玩家 | 所有存活玩家 | /投票 4 |
⚙️ 配置说明
插件支持 19 个配置项,可在 AstrBot 后台修改:
AI 配置
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
enable_ai_review |
bool | true | 是否启用 AI 复盘 |
ai_review_model |
string | "" | AI 模型 ID(留空使用默认) |
ai_review_prompt |
string | "" | 自定义提示词(支持占位符) |
ai_player_model |
string | "" | AI 玩家使用的模型 ID |
| 自定义提示词占位符: |
{winning_faction}- 胜利阵营(狼人/好人){game_data}- 完整游戏数据
游戏人数配置
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
total_players |
int | 9 | 总玩家数 |
werewolf_count |
int | 3 | 狼人数量 |
seer_count |
int | 1 | 预言家数量 |
witch_count |
int | 1 | 女巫数量 |
hunter_count |
int | 1 | 猎人数量 |
villager_count |
int | 3 | 平民数量 |
ban_duration_days |
int | 30 | 禁言时长(天) |
⚠️ 注意:角色总数必须等于总玩家数,否则使用默认配置。
超时配置
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timeout_wolf |
int | 120 | 狼人办掉超时(秒) |
timeout_seer |
int | 120 | 预言家验人超时(秒) |
timeout_witch |
int | 120 | 女巫行动超时(秒) |
timeout_hunter |
int | 120 | 猎人开枪超时(秒) |
timeout_speaking |
int | 120 | 发言/遗言超时(秒) |
timeout_vote |
int | 120 | 投票超时(秒) |
timeout_dead_min |
int | 10 | 已死角色最小等待(秒) |
timeout_dead_max |
int | 15 | 已死角色最大等待(秒) |
💡 提示:投票超时 > 30 秒时,会在剩余 30 秒时发送倒计时提醒。
🎮 游戏示例
1. 创建并开始游戏
[群聊]
玩家A: /创建房间
Bot: ✅ 狼人杀房间创建成功!
📋 游戏规则:9人局(3狼人 + 3神 + 3平民)
💡 使用 /加入房间 来参与游戏
玩家B: /加入房间
Bot: ✅ 成功加入游戏!当前人数:2/9
... (其他7名玩家加入)
玩家A: /开始游戏
Bot: 🌙 游戏开始!天黑请闭眼...
角色已分配完毕!
机器人正在私聊告知各位身份...
2. 狼人夜晚行动(私聊)
[私聊 - 狼人1]
Bot: 🎭 你的角色是:🐺 狼人
🤝 你的队友:2号.张三, 5号.李四
💡 夜晚私聊使用命令:/办掉 编号
狼人1: /密谋 我们刀7号吧,他可能是预言家
Bot: ✅ 消息已发送给 2 名队友!
狼人1: /办掉 7
Bot: ✅ 你选择了办掉目标!当前 1/3 人已投票
... (其他狼人投票)
[群聊]
Bot: 🔮 狼人行动完成!
预言家请私聊机器人验人:/验人 编号
3. 白天发言和投票
[群聊]
Bot: ☀️ 天亮了!
昨晚,玩家 7号.王五 死了!
Bot: @1号.玩家A 现在轮到你发言
⏰ 发言时间:2分钟
1号.玩家A: 我觉得3号很可疑,昨天一直在带节奏
1号.玩家A: /发言完毕
... (其他玩家依次发言)
Bot: 📊 发言环节结束!现在进入投票阶段!
请所有存活玩家使用命令:/投票 编号
Bot: ⏰ 投票倒计时:还有30秒!
当前投票进度:6/8
玩家A: /投票 3
Bot: ✅ 投票成功!当前已投票 7/8 人
... (所有人投票完成)
Bot: 📊 投票结果公布!
玩家 3号.赵六 被放逐了!
4. AI 复盘报告
Bot: 🎉 好人胜利!所有狼人已被放逐!
📜 身份公布:
🐺 狼人:
• 2号.张三
• 3号.赵六
• 5号.李四
🔮 预言家:
• 7号.王五
...
🤖 AI复盘
==============================
本局游戏精彩纷呈,好人阵营凭借预言家的精准查验和猎人的
关键一枪,成功识破狼人的伪装...
💬 精彩狼人密谋:
「2号.张三:我们刀7号吧,他可能是预言家」
「5号.李四:同意,他昨天发言太准了」
🏆 本局MVP:7号.王五(预言家) - 三晚验出两狼,
带领好人走向胜利
💤 本局超级划水:9号.孙七(平民) - 全程跟票,
毫无存在感
==============================
🔧 技术细节
编号系统
- 游戏开始时自动为玩家分配 1-9 号
- 群昵称临时改为"编号号"(如"1号"、"2号")
- 游戏结束后自动恢复原昵称
禁言机制
- 夜晚阶段:全员禁言
- 发言阶段:当前发言者临时设为管理员,可发言
- 投票阶段:解除全员禁言
- 游戏结束:解除所有禁言
超时处理
- 各阶段均有超时机制
- 已死角色的阶段使用随机短时间(10-15秒),避免泄露身份
- 投票阶段超时时自动结算已投票数据
AI 复盘
- 使用 AstrBot 配置的 LLM 模型
- 记录完整游戏日志(包括狼人密谋)
- 自动生成专业分析报告
- 评选 MVP 和划水王
⚠️ 注意事项
Bot 权限要求(最重要):
- ⚠️ Bot 必须是群主或管理员,否则无法使用禁言和修改群昵称功能
- 建议将 Bot 设为群主以确保所有功能正常运行
- 如果 Bot 权限不足,游戏将无法正常进行
玩家好友关系:
- 玩家必须添加 Bot 为好友才能接收私聊消息
- 如收不到私聊,可使用
/查角色命令(私聊 Bot)查看
游戏稳定性:
- 游戏状态存储在内存中,容器重启会丢失
- 建议游戏进行中不要重启 Bot
配置修改:
- 修改配置后需重启插件或容器生效
- 角色数量必须加起来等于总玩家数(例如:3狼+1预言家+1女巫+1猎人+3平民=9人)
- 如果配置不正确,插件会自动使用默认配置并在日志中警告
平票处理:
- 首次投票平票:进入 PK 环节
- PK 投票仍平票:本轮无人出局
🐛 常见问题
Q: 收不到角色私聊?
A: 使用 /查角色 命令(私聊 Bot)查看自己的角色。
Q: 为什么有时候没有遗言?
A: 遗言规则:
- ✅ 第一晚被狼杀:有遗言
- ✅ 投票放逐:有遗言
- ❌ 被女巫毒杀:无遗言
- ❌ 非第一晚被狼杀:无遗言
Q: 猎人什么时候不能开枪?
A: 被女巫毒杀时不能开枪(死得太突然)。
Q: AI 复盘没有生成?
A: 检查配置:
enable_ai_review是否为 true- AstrBot 是否配置了 LLM 模型
- 查看日志是否有报错
Q: 如何自定义游戏人数?
A: 在 AstrBot 后台修改配置,确保角色总数 = 总玩家数。
Q: 投票没有 30 秒提醒?
A: 只有投票时间 > 30 秒时才会提醒。如果配置 timeout_vote ≤ 30,不会提醒。
🤝 贡献
欢迎提交 Issue 和 Pull Request!
📜 开源协议
MIT License
作者:miao
插件 ID:astrbot_plugin_werewolf
版本:v3.0.0
框架:AstrBot v4.5.0+
语言:Python 3.8+
⭐ 如果这个插件对你有帮助,欢迎点个 Star!