/SICNUBOT

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

Primary LanguagePHPGNU Affero General Public License v3.0AGPL-3.0

SICNUBOT

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两个表,前者记录上报字符串,后者记录错误信息。

错误程度说明

  • 严重,不应该出现的情况,一般为设置出现问题或者软件已失效。
  • 警告,使用过程由于误操作造成的问题。
状态码 说明 程度
101 HMAC校验失败 严重
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表->已审核消息的发送日志,主要用于产生消息编号