
使用go-cqthhp+koishi框架搭建QQ机器人
官方文档
官方文档直连
准备工作
需要node.js v12+
1、windows安装:
 前往node.js官网下载Windows 二进制文件 (.zip)并解压
 最好解压到自己知道的路径
提示
win系统这里需要配置环境变量
 我的电脑-属性-高级系统设置-环境变量-系统变量-在PATH后加入npm的路径
 比如我的F:\Node;
2、linux安装nodejs v12+:
1、安装github
yum install git -y # (Centos)
apt install git # (Ubuntu)3、安装node.js管理器等组件
git clone git://github.com/creationix/nvm.git ~/nvm
# 设置nvm 自动运行
echo "source ~/nvm/nvm.sh" >> ~/.bashrc
source ~/.bashrc
# 查看所有版本(部分环境可能不支持最高版本)
nvm list-remote
# 安装npm的最新版本
nvm install stable
# 使用最新版本
nvm use stable4、选择国内镜像
- 对于国内而言,访问外网是很困难的,这会导致访问速度很慢,而国内镜像就很重要了
node 国内镜像 
export NVM_NODEJS_ORG_MIRROR=http://npm.taobao.org/mirrors/nodenpm 国内镜像
npm config set registry https://registry.npm.taobao.orgnpm WIN国内镜像
npm config set registry https://registry.npm.taobao.org --global
npm config set disturl https://npm.taobao.org/dist --global5、安装yarn
npm i yarn -g下载go-cqhttp
前往githubgo-cqhttp
 在'release'处下载最新版本
tar -zxvf go-cqhttp_linux_arm64.tar.gz运行go-cqhttp
进入与go-cqhttp(.exe)相同目录的文件夹
 使用终端打开go-cqhttp
 windows使用
.\go-cqhttp.exeLinux使用
./go-cqhttp提示
windows使用shift+右键可以快捷打开powershell终端
 Linux可能需要给go-cqhttp运行权限
chmod +x go-cqhttp启动后需要选择通信方式
 推荐选择 正向 Websocket 通信
 提示有默认配置文件已生成即可将终端关掉,去修改配置文件
修改config.yml
只需看
# go-cqhttp 默认配置文件
account: # 账号相关
  uin: 123456 # QQ账号
  password: '' # 密码为空时使用扫码登录
  encrypt: false  # 是否开启密码加密
  status: 0      # 在线状态 请参考 https://docs.go-cqhttp.org/guide/修改uin为自己的小号,password可填可不填
 然后再次启动go-cqhttp
 之后会看到扫码登录或者扫码验证,用手机扫码一下就能登录进去了
 做完这步以后,外卖把它挂在后台,其他都不用管了
vscode安装及使用
** windows系统 **
 推荐使用VScode
 官网下载特别慢使用
 国内镜像下载VScode-国内镜像
 运行vscode
 刚开始你的界面是全英文的,需要安装扩展
 我们在左侧找到扩展(快捷键ctrl+shift+x)
 搜索Chinese(simplified) Language Pack for Visual Studio Code
 点击install安装
 安装完成以后,关闭vscode再使用管理员身份运行vscode
 在我们熟悉的位置新建一个文件夹命名随便,最好用英文
 然后把新建好的文件夹直接拖进vscode
 打开终端(快捷键ctrl+shift+`)
 给yarn授权
set-ExecutionPolicy RemoteSigned检查授权
get-ExecutionPolicy如果输出RemoteSigned则修改成功
安装koishi
使用yarn安装
# 安装 koishi
yarn add koishi -D
# 生成配置文件
yarn koishi init
# 补全依赖
yarn注意
注意
 生成配置文件的时候要选择与go-cqhttp一致的OneBot-WebSocket协议
 port不需要改bot-qq Number与go-cqhttp的qq号要一致
 configurate another bot?时选择 n
 Database Type暂时选None
 经本人测试,插件assets、eval、webui插件会报错,不能选
 github插件可选
 package.json was updated. install new dependencies now?
 的时候输入y
 (无脑回车也行)
至此koishi框架安装完成!
修改koishi配置文件
// koishi.config.js
module.exports = {
  // Koishi 服务器监听的端口
  port: 8080,
  onebot: {
    secret: '',
  },
  bots: [{
    type: 'onebot:ws',
    // 对应 cqhttp 配置项 ws_config.port
    server: 'ws://localhost:6700',
    selfId: '123456', // 你的QQ账号
    token: 'ws://localhost:6700',
  }],
  plugins: {        // 插件
  //  assets: {},   // 用不了的插件,删掉或者在前面打上俩斜杆
    chat: {},
    common: {},
  //  eval: {},
  },
}插件只需注意assets、eval、webui插件用不了
 如果配置文件有,将其删掉就行
启动koishi
在终端输入
yarn koishi start即可启动koishi机器人
 现在可以对你的机器人说话了
 向机器人发送
echo 你好机器人会回复你好
编写自己的插件并调用
需要一点JavaScript基础
 在与koishi.config.js同级目录下新建my-plugin.js文件
 然后在koishi.config.js中的plugins内加入插件
plugins: {
    'chat': {},
    'common': {},
    './my-plugin': {}, // 这个是我们加入自己的插件
  }在my-plugin.js文件内输入以下内容
// 如果机器人收到“天王盖地虎”,就回应“宝塔镇河妖”
module.exports = (ctx) => {
  ctx.middleware((session, next) => {
    if (session.content === '天王盖地虎') {
      session.send('宝塔镇河妖')
    }
    return next()
  })
}在终端重启koishi
 选择终端,按下ctrl+c会关闭koishi,再输入
yarn koishi start回车
 重新启动koishi(或者直接按键盘方向键的 上 键)
 现在,向机器人发送天王盖地虎
 机器人会回复宝塔镇河妖了
 如果你向开发插件,可以看看官方文档
注意
使用koishi框架需要注意的地方
- 1、先启动go-cqhttp再启动koishi框架
不然会导致koishi框架连不上onebot - 2、go-cqhttp的通信协议必须与koishi的通信协议保持一致
比如gocqhttp为ws协议,koishi就必须用ws协议 - 3、koishi在运行时,go-cqhttp必须在后台运行
 
插件函数调用报错问题
官方文档作者有些地方没写明白
 比如在调用消息段segment()函数的时候
 官方文档里面没有写明需要传入函数
 所以需要在插件开头传入函数
const { segment } = require("koishi-utils");
module.exports = (ctx) => {
    ...........
}其他函数报错我暂时还没找到解决办法
 比如Time未声明
 如果有大佬找到解决方法可以在评论区留言,谢谢awa
写在最后
文章里可能有很多说错的地方awa,大家可以一一指出
 目前我自己也没摸清楚官方文档内的某些函数要怎么用
 对于我们初学者而言,很多东西还需要大家一起摸索,讨论,向大佬请教
