mkdir my-bot && cd my-bot
快速上手
准备工作
Koishi 需要 NodeJSopen in new window (v12 以上) 运行环境,你需要自己安装它。同时,我们还强烈建议您安装 yarnopen in new window 作为包管理器。在下面的文档中,我们将默认使用 yarn。
Koishi 支持多个聊天平台,对于不同的平台,你也需要做好相应的准备工作。
OneBot (QQ)
OneBotopen in new window 是一个聊天机器人应用接口标准,目前可用于 QQ 聊天机器人的实现。你可以使用下列实现该协议的框架:
- Mrs4s/go-cqhttpopen in new window(推荐, 并使用 WebSocket配置)
 - yyuueexxiinngg/cqhttp-miraiopen in new window
 - richardchien/coolq-http-apiopen in new window(配合 iTXTech/mirai-nativeopen in new window 使用)
 
Telegram (Telegram)
- 搜索 @botfather(有个官方认证的符号)并进入聊天界面
 - 输入 
/start后,会出现一个使用菜单,你可以使用这里指令对你的机器人进行配置 - 要创建一个机器人,请点击 
/newbot,并根据系统提示完成创建流程 - 使用 
/setprivacy开启 Privacy Mode(不然机器人只能收到特定消息) - 创建完毕后,你会获得一个 token(请注意不要泄露),将其作为机器人配置项即可使用
 
参考文档:https://core.telegram.org/botsopen in new window
Discord (Discord)
- 前往 https://discord.com/developers/applicationsopen in new window,登录账号创建一个应用
 - 点击「Bot」并创建一个新的机器人,保存这个页面中的 token(请注意不要泄露)
 - 要将机器人拉进你的服务器,点击「OAuth2」,并在网址生成器中勾选 Bot 和机器人所需要的权限
 - 打开生成的链接,选择你具有管理权限的服务器,就成功把机器人添加进去了
 - 将上面的 token 作为机器人配置项即可使用
 
开黑啦 (Kaiheila)
- 前往 开发者平台open in new window,选择「机器人」并点击「新建」
 - 在机器人连接模式中配置 Webhook 或 WebSocket 中的一种: 
- 如果是 Webhook,请记下页面中的 token 和 verify_token,并作为机器人的配置项,同时让 Koishi 暴露一个 URL,填入下方的 Callback URL 中,启动 Koishi 后点击「机器人上线」
 - 如果是 WebSocket,则只需记录 token 并作为机器人的配置项即可,你可以在任何时候启动 Koishi
 - 页面中的其他值不用管,但请注意 token 不要泄露
 
 
使用命令行工具
创建并进入一个机器人目录:
然后输入下面的命令行,生成配置文件的设置将在下方说明:
Adapter Type: 此处可根据你所需要的平台进行选择, 在准备工作有详细说明
Koishi Port: 一般情况保持默认即可, 确保不要与其他端口冲突(如 Vue CLI 项目)
Token for XXX Server / XXX Server / Secret for Koishi Server: 根据实际情况填写。
configurate another bot? 如有多个机器人, 可在此一并设置, 一般默认即可。
Database Type: 为了确保体验的完整性(如用户系统及大部分官方/社区插件, 强烈建议在此配置数据库。
Choose Offical Plugins: 在此选择一并安装的官方插件列表, 详情介绍参见官方插件页面。选择后继续回车即可。
此时,你会看到在你刚刚创建的目录下多了一些文件,包括 package.json 和 koishi.config.js。后者应该大概长这样:
module.exports = {
  // 协议类型
  type: 'onebot:http',
  // 机器人自己的账号
  selfId: '123456789',
  // 插件列表
  plugins: {
    common: {},
  },
}
最后运行程序:
现在可以对你的机器人说话了:
通过脚本调用 Koishi
如果你对 JavaScript 和 Node.js 非常熟悉,你或许也希望在 Node.js 中直接调用 Koishi——没问题,我们也提供了这样一套方案。
首先初始化你的机器人目录并安装 Koishi 和所需的插件(这里以 koishi-adapter-onebot 和 koishi-plugin-common 为例):
新建入口文件 index.js,并写下这段代码:
const { App } = require('koishi')
// 你需要手动安装适配器
require('koishi-adapter-onebot')
const app = new App({
  // 这部分与上面的配置文件作用基本相同
  type: 'onebot:http',
  selfId: '123456789',
})
// 注册插件,作用相当于上面配置文件中的 plugins 部分
app.plugin(require('koishi-plugin-common'))
// 启动应用
app.start()
上面的配置项参见 App 的构造函数选项。
最后运行这个文件:
node .
这样也能运行你的机器人。尽管这显得稍微麻烦一点,但是你的机器人也因此获得了更高的自由度。在下一章我们会简单对比这两种方法。
使用 Docker
Koishi 还支持在 Docker 中运行,你需要安装 Dockeropen in new window,但不必安装有 NodeJS。
首先创建如下的配置文件:
module.exports = {
  bots: [],
}
完成之后,挂载 koishi.config.js 并启动容器:
docker run -d --name koishi \
  -v $PWD/koishi.config.js:/app/koishi.config.js \
  koishijs/koishi:latest
Koishi 启动后,你就可以在容器中安装所需要的插件,具体操作请参见 使用 Docker 一章。
编写并调用你的插件
在机器人目录中添加文件 my-plugin.js:
// 如果收到“天王盖地虎”,就回应“宝塔镇河妖”
module.exports = (ctx) => {
  ctx.middleware((session, next) => {
    if (session.content === '天王盖地虎') {
      session.send('宝塔镇河妖')
    }
    return next()
  })
}
修改你的配置文件或入口文件:
module.exports = {
  plugins: {
    './my-plugin': {},
  },
}
app.plugin(require('./my-plugin'))
然后重新运行你的项目:
配置数据库
配置多机器人
你可以像这样使用多个机器人:
module.exports = {
  port: 7070,
  onebot: {
    // onebot 服务将在 http://localhost:7070/onebot 进行处理
    path: '/event',
    secret: 'my-secret',
  },
  kaiheila: {
    // kaiheila 服务将在 http://localhost:7070/kaiheila 进行处理
    path: '/kaiheila',
  },
  bots: [
    // 在这里写上不同的机器人配置
    { type: 'onebot:http', selfId: '123456789', server: 'http://onebot-server' },
    { type: 'onebot:ws', selfId: '987654321', token: 'my-onebot-token' },
    { type: 'kaiheila:ws', selfId: 'aAbBcCdD', token: 'my-kaiheila-token' },
  ],
}
运行程序后,Koishi 将同时登陆三个机器人。有关多机器人的详细使用方法,可以参见 多账户与跨平台 一章。
