1 Star 3 Fork 0

dearxuan / QQRobot

加入 Gitee
与超过 800 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README.md

What's this?

本项目在 oicq 的基础上,对事件进行分类并调用专门函数进行处理,降低了编码难度,因此本项目的功能注定不会比oicq更强大

如何运行

在运行项目之前,需要先安装node环境

克隆项目到本地

git clone https://gitee.com/dearxuan/qqrobot.git

进入项目目录

cd qqrobot

安装npm包

npm install

接下来需要修改配置文件

复制项目根目录下的 "config.yml" 文件,到同目录下的 "config.custom.yml" 文件,新的配置文件的数据会将其覆盖,这样当配置文件更新时,你可以快速拉取更新而不需要额外修改任何内容.

或者你也可以直接在 "config.yml" 里修改(不推荐).

运行项目

node index.js

数据库

数据库不是必要的,但是没有数据库会导致某些功能不可用

项目使用MySQL数据库存放用户相关信息,请确保你已拥有本地或远程的数据库.在配置文件中填写数据库相关信息,程序会自动判断数据表是否存在并在适当时候创建

或者通过下面的SQL语句创建数据表

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for bottles
-- ----------------------------
DROP TABLE IF EXISTS `bottles`;
CREATE TABLE `bottles`  (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `sender` bigint(20) UNSIGNED NOT NULL,
  `text` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `time` datetime NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 43 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `qq` bigint(20) UNSIGNED NOT NULL,
  `nickname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `group_id` bigint(20) NULL DEFAULT NULL,
  `group_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `money` bigint(20) NULL DEFAULT NULL,
  `last_signin` date NULL DEFAULT NULL,
  PRIMARY KEY (`qq`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

SET FOREIGN_KEY_CHECKS = 1;

已有插件介绍

插件名 插件描述
index.js 用于加载其它插件,这个插件不应该删除
admin.js 用于管理机器人,包括加群、退群等.只有配置文件中规定的管理员才有权操作
BaiDuTongJi.js 使用百度统计API统计网站访问量等信息,注意token每个月需要更新一次
Chat.js 智能聊天,默认使用小爱同学接口,仅能返回文字内容
Convenience.js 便民服务,包括百度搜索等
CustomReply.js 自定义关键字回复,只有消息内容与文字完全匹配时才会回复对应内容
DriftingBottle.js 扔漂流瓶,打捞漂流瓶,该功能需要使用数据库
Entertainment.js 娱乐系统,例如点歌(网易云)
Ping.js 检测某个网站的延迟,协议类型,备案等信息
RobotInfo.js 回复机器人信息,例如好友列表、群列表等
ServerState.js 显示服务器状态,例如操作系统、已运行时间、内存占用等
SignIn.js 签到,该功能需要使用数据库
ThumbUp.js 点赞10次,该功能仅限好友
Upyun.js 通过又拍云API监测相关信息
Virus.js 疫情查询

插件制作

所有插件均位于项目根目录的"plugins"文件夹内,插件采用注册制,其中"index.js"用于加载其它插件.除非有必要,否则你不应该删除这个文件.

在"plugins"文件夹内创建一个js文件,例如"custom.js",并导出一个main函数,在main函数中进行注册.

下面是一个最简单的示例

module.exports = function(){
    /* 注册"Hello"指令 */
    Reg('Hello', OnMsg);
}

function OnMsg(msg){
    //回复
    msg.reply("Hello By DearXuan");
    //返回true表示消息已被处理,则后序的函数不会收到这条消息
    return true;
}

则当机器人收到"Hello"时,便会回复"Hello By DearXuan"

Reg函数的介绍如下:

function Reg(word, func, type = "strict") {
    /**
     * word:注册的指令,字符串形式
     * func:接收到指令时调用的函数
     * type:类型
     */
}

其中 type 参数的类型说明如下

strict 只有消息内容与关键字严格匹配时才会执行
fuzzy 消息内容以关键字开头且后面跟有空格.例如关键字为"word"时,"word abc"可以触发函数,而"wordabc"无法触发
hook_before 在匹配指令之前拦截消息
hook_after 在匹配完指令之后,如果消息未被处理,则会调用指定函数处理

对于msg消息的具体结构,你应该前往OICQ官网文档查看

简介

一个简易QQ机器人程序 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/dearxuan/qqrobot.git
git@gitee.com:dearxuan/qqrobot.git
dearxuan
qqrobot
QQRobot
master

搜索帮助