SICNUBOT

December 11, 2019 · View on GitHub

SICNUBOT是专为四川师范大学设计用于审核发布消息用的QQ机器人。

安装环境

  • Web Server(IIS / Apache / nginx / ...)
  • PHP (>=7.0)
  • MySQL / MariaDB
  • 酷Q
  • coolq-http-api (>=4.6.0)

安装方法

导入mysql/qqbot.sql到你的数据库,建议为应用单独分配一个用户。

coolq-http-api需要配置post_url,你可以修改使用目录下的config.json.simple配置文件。暂不支持非本地来源。

修改配置文件config.php

按照文件中的注释修改config.php

使用规范

机器人收到发布群的群成员的私聊消息后会自动回复(自动回复的内容在config.php中设置,留空则不发送自动回复),同时私聊消息会转发到审核群。在审核群通过审核后会逐一(间隔1秒)发送到发布群。发布群可以有多个,只要是加入了的群理论上都可以发送统一的消息,但是不建议超过30个,超过30个可能导致酷Q日志记录错误。

发布消息的格式

[消息序号]已审核的消息

待审核消息的格式

[编号][QQ号码]待审核消息

编号由机器人自动指定,一般为递增整数。
QQ号码为发送者的QQ号码。

带信消息的格式

[编号][审核人QQ号码]带信内容

审核

确认审核通过直接发送消息编号即可。
如果希望不通过,可以发送 编号+感叹号 ,注意要使用英文感叹号,不要使用中文感叹号。审核不通过会自动回复一段消息给原来的发布者,可以在config.php中设置,留空则不回复。
已经审核过的消息可以再次审核,每次审核都会触发操作,比如重新发送或者重新带信,建议慎用。

比如收到如下消息

[89][10032]出售一本《Python-cookbook》,联系17610126666。

若通过审核则回复

89

如果不通过,则发送

89!

带信

如果需要带信给发布消息的人,直接发送 编号 + # + 带信内容。

比如要带信给编号为89的人,发送信息可以如下

89#请提供联系方式

对方会收到对应的带信内容,私聊方式。

修改

如果需要修改消息内容来发布,发送 编号 + 等于号(=) + 修改后的内容。

比如下面这条命令

89=出售一本《Python-Cookbook》,联系17677776666

那么机器人将把把下面这条消息同步发送到各个群

[消息序号]出售一本《Python-Cookbook》,联系17677776666

但是这样可能导致不符合原发布者的意向,实际不建议这么操作。

加点号分隔

如果需要对消息加分隔符,发送 编号 + @

比如这条消息

[89][10032]出售一本《Python-Cookbook》,联系17677776666

发送

89%

程序在转发的时候会发送

出.售.一.本《Python-Cookbook》,联.系17677776666

消息编号归零

如果希望消息编号重新从1开始,可以清空数据库中的sending_log表和messages表并把这两个表的auto_increment设为1。你也可以使用下面的MySQL代码(假设数据库为qqbot)。

TRUNCATE `sending_log`;
ALTER TABLE `sending_log` auto_increment = 1;
TRUNCATE `messages`;
ALTER TABLE `messages` auto_increment = 1;

如果希望在一定周期内自动执行这个过程,可以创建一个存储过程,然后添加到事件中。

日志

日志位于数据库的post_messageserr_log两个表,前者记录上报字符串,后者记录错误信息。

错误程度说明

  • 严重,不应该出现的情况,一般为设置出现问题或者软件已失效。
  • 警告,使用过程由于误操作造成的问题。
状态码说明程度
101HMAC校验失败严重
102上报的QQ号码与配置文件不匹配严重
103上报服务器的IP不是本机严重
104上报请求方式不是POST严重
105不是群聊或私聊消息警告
106数据库连接失败严重
107程序错误严重
201审核命令不规范警告
202审核命令不正确,没有这个编号警告
203消息已经被审核过警告

数据库

  • messages表->记录接受到的需要审核发布的消息

    • code消息编号,递增序列
    • sender发此条消息的QQ号
    • time入库时间,一般等于发消息的时间
    • status消息审核状态
      • 0->未审核
      • 1->审核通过
      • 2->审核不通过
      • 3->带信,审核不通过
      • 4->修改发布
    • message消息内容
    • reviewer审核人,未审核时为空
  • err_log表->异常日志

  • post_messages表->所有上报内容

  • sending_log表->已审核消息的发送日志,主要用于产生消息编号