狼人杀法官.BOT

这个程序是基于 itchat,用 Python3 写成的狼人杀面杀助手,用于在微信上作为机器人法官。

目前此程序在实战中使用了4次,但是不是系统性地测试,可能依然不太稳定。

系统要求

理论上只要成功安装 pyaudio 和 itchat 即可运行,而这两个依赖项均同时支持 Linux, Mac 和 Windows。不过,我只在 Linux 和 Windows 上测试了程序。

免安装运行

我在 Windows 7 和 Ubuntu 16.10 上用 PyInstaller 打包了程序,所以目前 64 位的 Windows 和 Linux 系统可以免安装运行啦。只需在 Release 界面下载对应的压缩包,然后运行 werewolf_server.exe(Windows)或者 werewolf_server(Linux)即可。

有时 PyInstaller 在打包时会漏掉一些依赖项,如果在免安装运行的时候,程序刚启动就出现错误,则很可能是打包的问题,可以尝试直接运行源代码;如果程序在运行过程中才崩溃,则很可能是代码本身的 BUG。

对于没有完成打包的系统(比如 32 位系统或者 Mac),也可以通过直接运行源代码的方式执行程序。

直接运行源代码

若要直接运行源代码,请先安装 Python3.5。可以参考这篇文章

程序的源代码可以在 Release 界面的 Source Code 链接或者 Clone or Download 的 Download ZIP 链接下载。

程序需要以下依赖项:

可以使用 pip 安装依赖项。

Mac/Linux 用户

打开“终端”应用,执行以下命令:

sudo pip3 install pyaudio
sudo pip3 install itchat

(这些指令需要用系统的登录密码来授权)

之后就可以用 python3 运行程序了:

cd <储存代码的文件夹路径>
python3 werewolf_sever.py

Windows 用户

打开命令行(按 Win + R,输入 cmd 然后确定),执行以下命令:

py -3 -m pip install pyaudio
py -3 -m pip install itchat

之后就可以用 python 运行程序了:

cd <储存代码的文件夹路径>
py -3 werewolf_server.py

使用方法

运行程序后,itchat 会弹出微信登录二维码,用微信扫描后在手机上确认登录即可成为法官。

提示:

  1. 如果想一个人试用这个程序(用文件传输助手),可以让werewolf_server.py 中的 GameController.is_game_ended 方法直接 return 以阻止游戏结束(没有返回值)。否则,由于只有一位玩家,程序会在第一晚认为刀边成功。
  2. 如果登录为法官的用户需要使用自己的帐号参加游戏(用文件传输助手),可以在游戏时把微信设置成勿扰模式,以免不小心从消息提示里看到别人的身份。

命令列表

用微信向法官发送以下内容即可执行相应的指令(如果法官是自己,可以用文件传输助手发送):

功能

注意:目前游戏是刀边规则,暂未添加屠城规则。

源代码结构

技术问题笔记

此处用于记录开发过程中遇到过的问题:

  1. 目前 audio.py 只能读取 signed 16-bit PCM 格式的 WAV 文件,读取 32-bit float PCM 格式的 WAV 会崩溃。
  2. 如果程序发送消息的频率过快,则微信帐号会被屏蔽一段时间。之前出现了单人测试没有问题但是多人测试的时候微信帐号被屏蔽的情况,所以我主动限制了发送消息的间隔。