适用于 Nonebot2 的狼人杀插件
Project description
📖 介绍
和朋友们来一场紧张刺激的狼人杀游戏
💿 安装
[!note]
请确保 NoneBot2 使用的 Python 解释器版本 >=3.10
使用 nb-cli 安装
在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装nb plugin install nonebot-plugin-werewolf
使用包管理器安装
在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令pip
pip install nonebot-plugin-werewolf
pdm
pdm add nonebot-plugin-werewolf
poetry
poetry add nonebot-plugin-werewolf
conda
conda install nonebot-plugin-werewolf
打开 nonebot2 项目根目录下的 pyproject.toml
文件, 在 [tool.nonebot]
部分追加写入
plugins = ["nonebot_plugin_werewolf"]
⚙️ 配置
在 nonebot2 项目的 .env
文件中添加如下配置:
配置项 | 必填 | 默认值 | 说明 |
---|---|---|---|
werewolf__enable_poke |
否 | True |
是否使用戳一戳简化操作流程 |
werewolf__enable_button |
否 | False |
是否在交互中添加按钮 |
werewolf__enable_poke
仅在 OneBot V11
适配器 / Satori/chronocat
下生效
werewolf__enable_button
仅在 Telegram
适配器下通过测试,不保证在其他适配器的可用性。如有疑问欢迎提出。
🎉 使用
[!note]
插件通过群聊+私聊进行游戏交互
使用前请确保机器人有权限发起相应对话。
举例
众所周知, QQ 官方机器人对主动消息有次数限制 (参考)
因此,本插件可能无法在 adapter-qq
下正常运行
而对于野生机器人,现有协议端通常不支持或不建议使用临时私聊消息。
在使用本插件前,应当确保机器人可以正常向玩家发送私聊消息。即保证机器人与玩家为好友关系
指令表
指令 | 权限 | 需要@ | 范围 | 说明 |
---|---|---|---|---|
werewolf /狼人杀 |
群员 | 是 | 群聊 | 发起游戏 (进入准备阶段) |
开始游戏 |
游戏发起者 | 否 | 群聊 | [准备阶段] 游戏发起者开始游戏 |
结束游戏 |
游戏发起者/超级用户 | 否 | 群聊 | [准备阶段] 游戏发起者/超级用户 结束游戏 |
当前玩家 |
群员 | 否 | 群聊 | [准备阶段] 列出参与游戏的玩家列表 |
加入游戏 |
群员 | 否 | 群聊 | [准备阶段] 玩家加入游戏 |
退出游戏 |
群员 | 否 | 群聊 | [准备阶段] 玩家退出游戏 |
中止游戏 |
超级用户 | 是 | 群聊 | [游戏内] 超级用户强制中止游戏 |
狼人杀预设 |
超级用户 | 否 | 任意 | [游戏外] 超级用户编辑游戏预设 |
-
发起游戏时添加
restart
/重开
, 可加载上一次游戏的玩家列表, 快速发起游戏。例:werewolf restart
/狼人杀 重开
-
狼人杀预设
命令用法可通过狼人杀预设 --help
获取,或参考 游戏内容 部分的介绍 -
对于
OneBot V11
适配器和Satori
适配器的chronocat
, 启用配置项werewolf__enable_poke
后, 可以使用戳一戳代替 准备阶段 的加入游戏
操作 和 游戏内的stop
命令 -
其他交互参考游戏内提示
游戏内容
[!note]
插件的游戏规则参考了网络上的相关资料
如有疑问欢迎提出
插件中保存了一份 职业预设, 内容如下
总人数 | 狼人 | 神职 | 平民 |
---|---|---|---|
6 | 1 | 2 | 3 |
7 | 2 | 2 | 3 |
8 | 2 | 3 | 3 |
9 | 2 | 4 | 3 |
10 | 3 | 4 | 3 |
11 | 3 | 5 | 3 |
12 | 4 | 5 | 3 |
职业预设可以通过命令 狼人杀预设 职业 ...
修改
示例
-
命令:
狼人杀预设 职业 6 1 3 2
-
上述命令指定当总人数为 6 时,狼人、神职、平民的数量分别为 1、3、2
对于狼人
和神职
的职业分配,默认有如下优先级:
狼人
:狼人
,狼人
,狼王
,狼人
神职
:女巫
,预言家
,猎人
,守卫
,白痴
职业分配优先级可以通过命令 狼人杀预设 狼人/神职
修改
示例
命令 狼人杀预设 狼人
-
命令:
狼人杀预设 狼人 狼 狼王 狼 狼
-
上述命令指定狼人的职业优先级为
狼人
,狼王
,狼人
,狼人
命令 狼人杀预设 神职
-
命令:
狼人杀预设 神职 预言家 女巫 猎人 守卫 白痴
-
上述命令指定狼人的职业优先级为
预言家
,女巫
,猎人
,守卫
,白痴
[!note]
以上两条命令均支持交互式输入
例:向机器人发送命令
狼人杀预设 狼人
,在接下来的一条消息中发送狼人 狼王 狼人 狼人
其效果等同于以上描述中的单条命令
狼人杀预设 狼人 狼人 狼王 狼人 狼人
对于 小丑
职业,当预设中的平民数量大于或等于 2 时,将有 一定概率 将其中一个平民替换为小丑。
小丑属于第三方阵营,胜利条件为在投票阶段被票出,在预言家查验及游戏进程判断时视作平民。
小丑生成概率可以通过命令 狼人杀预设 小丑 <概率>
设置,默认值为 0 (不生成小丑)。
已知问题
- 截止 chronocat v0.2.19, 调用
guild.member.get
/user.get
均无法获取用户名,这将导致在交互过程中的玩家名显示为用户 ID
📝 更新日志
更新日志
-
2024.10.31 v1.1.7
- Bug fix
-
2024.10.31 v1.1.6
- 新增超级用户中止游戏 (#7)
- 新增快速发起上次游戏 (#8)
- 准备阶段添加可选的交互按钮
- 新增超级用户修改游戏预设 (#9)
-
2024.10.23 v1.1.5
- 添加对 chronocat:poke 的支持
- 游戏内 stop 命令使用 COMMAND_START
- 使用
anyio
重写并发逻辑
-
2024.10.06 v1.1.3
- 使用
RF-Tar-Railt/nonebot-plugin-uninfo
获取用户数据 - 优化交互文本
- 使用
-
2024.09.18 v1.1.2
- 修改 Python 需求为
>=3.10
- 修改 Python 需求为
-
2024.09.11 v1.1.1
- 修改 Python 需求为
>=3.11
- 优化交互结果处理
可以在一局游戏中加入多个女巫了
- 修改 Python 需求为
-
2024.09.09 v1.1.0
- 新增职业
小丑
- 修复守卫无法保护自己的 bug
- 添加部分特殊职业的说明
- 添加游戏过程中的日志输出
- 新增职业
-
2024.09.04 v1.0.7
- 优先使用群名片作为玩家名
- 支持通过配置项修改职业分配优先级
-
2024.09.03 v1.0.6
- 修复预言家查验狼王返回好人的 bug
-
2024.09.03 v1.0.5
- 优化玩家交互体验
- 添加游戏结束后死亡报告
-
2024.08.31 v1.0.1
- 支持通过配置项修改职业预设
-
2024.08.31 v1.0.0
- 插件开源
鸣谢
nonebot/nonebot2
: 跨平台 Python 异步机器人框架nonebot/plugin-alconna
: 跨平台的消息处理接口RF-Tar-Railt/nonebot-plugin-uninfo
: 用户信息获取RF-Tar-Railt/nonebot-plugin-waiter
: 灵活获取用户输入热心群友
: 协助测试插件
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file nonebot_plugin_werewolf-1.1.7.tar.gz
.
File metadata
- Download URL: nonebot_plugin_werewolf-1.1.7.tar.gz
- Upload date:
- Size: 32.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b7e4d0a501b971b2ee082af85e02423b1d20d2d7dc1db61d00265d9ac48fcc0 |
|
MD5 | 0f3eee6fffaee276dade00953f172f35 |
|
BLAKE2b-256 | b01eee55598b93fd305d647154e480cef3f197d200833f8b7188dcbb613ed605 |
Provenance
The following attestation bundles were made for nonebot_plugin_werewolf-1.1.7.tar.gz
:
Publisher:
pypi-publish.yml
on wyf7685/nonebot-plugin-werewolf
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
nonebot_plugin_werewolf-1.1.7.tar.gz
- Subject digest:
3b7e4d0a501b971b2ee082af85e02423b1d20d2d7dc1db61d00265d9ac48fcc0
- Sigstore transparency entry: 145572564
- Sigstore integration time:
- Predicate type:
File details
Details for the file nonebot_plugin_werewolf-1.1.7-py3-none-any.whl
.
File metadata
- Download URL: nonebot_plugin_werewolf-1.1.7-py3-none-any.whl
- Upload date:
- Size: 39.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08affa65271d7bf33892ec07e4a846783f386724ea0f671f2e16496db5e95c52 |
|
MD5 | 741b0d1d3ad94a4af9f8caf8d585951e |
|
BLAKE2b-256 | ce17445c1e5f6852625eeaec427429d780305e572505caa27b0cff37fd6c5569 |
Provenance
The following attestation bundles were made for nonebot_plugin_werewolf-1.1.7-py3-none-any.whl
:
Publisher:
pypi-publish.yml
on wyf7685/nonebot-plugin-werewolf
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
nonebot_plugin_werewolf-1.1.7-py3-none-any.whl
- Subject digest:
08affa65271d7bf33892ec07e4a846783f386724ea0f671f2e16496db5e95c52
- Sigstore transparency entry: 145572567
- Sigstore integration time:
- Predicate type: