跨平台 Python 异步聊天机器人框架 / Asynchronous multi-platform chatbot framework written in Python
Go to file
2016-12-26 14:19:12 +08:00
commands
filters Move command dispatcher as a standalone filter 2016-12-26 14:19:12 +08:00
.gitignore
apiclient.py
app.py Move command dispatcher as a standalone filter 2016-12-26 14:19:12 +08:00
command.py
config.py
docker-compose.yml Add docker-compose.yml 2016-12-08 21:59:17 +08:00
Dockerfile Fix Dockerfile 2016-12-08 22:24:25 +08:00
filter.py
interactive.py
little_shit.py
README.md
requirements.txt
Write_Command.md
Write_Filter.md

QQBot

此 QQBot 非彼 QQBot不是对 SmartQQ 的封装,而是基于开源的 sjdy521/Mojo-Webqq 实现的对消息的自动处理程序,支持自定义插件。

如何部署

推荐使用 Docker 部署,因为基本可以一键开启,如果你想手动运行,也可以参考第二个小标题「手动部署」。

使用 Docker

本仓库根目录下的 docker-compose.yml 即为 Docker Compose 的配置文件,直接跑就行。如果你想对镜像进行修改,可以自行更改 Dockerfile 来构建或者继承已经构建好的镜像。

手动运行

首先需要运行 sjdy521/Mojo-Webqq具体见它的 GitHub 仓库的使用教程。然后运行:

pip install -r requirements.txt
python app.py

注意要求 Python 3.x。

插件

程序支持两种插件形式一种是过滤器Filter一种是命令Command。

本质上程序主体是一个 web app接受 sjdy521/Mojo-Webqq 的 POST 请求,从而收到消息。收到消息后,首先运行过滤器,按照优先级从大到小顺序运行 filters 目录中的 .py 文件中指定的过滤器函数,函数返回非 False 即表示不拦截消息,从而消息继续传给下一个过滤器,如果返回了 False则消息不再进行后续处理而直接抛弃。过滤器运行完之后会开始按照命令执行首先根据命令的开始标志判断有没有消息中有没有指定命令如果指定了则执行指定的命令如果没指定则看当前用户有没有开启交互式会话如果开启了会话则执行会话指定的命令否则使用默认的 fallback 命令。

过滤器和命令的使用场景区别:

  • 过滤器:可用于消息的后台日志、频率控制、关键词分析,一般在使用者无意识的情况下进行;
  • 命令:使用者有意识地想要使用某个给定的命令的功能。

关于过滤器和命令的细节,请参考 编写过滤器编写命令