【杂谈】Koishi插件教程 #4 学习插件写作并投入使用

asakurasayori 发布于 2025-09-23 442 次阅读


这一节开始会专注于插件编程与实用的聊天插件构建方法!笔者写这篇文章的时候正好把1Panel更新炸了,重装了v2,所以以后的教程会在v2环境中!

注意

本教程可以配合Koishi官方教程一起食用哦:https://koishi.chat

#5节中会讲编程的知识,也可以先看#5再来看#4

和机器人聊天吧

在我们没有在Koishi中接入Onebot和QQ时,我们可以通过沙盒对机器人进行测试(临时写的示例插件,内置其实并没有这个echo指令):

接下来会教学基础的插件开发!我们首先进入1Panel的容器界面,点击Koishi容器右侧的终端按钮:

我们接下来创建一个新插件:npm run setup [name]

其中[name]替换成你想要的插件名称,比如说我们现在来实现上文的echo指令,就叫echo插件好了。我们输入 npm run setup echo 并回车

其中description可以直接回车留空,然后稍微等一下就创建好新插件了!

我们进入1Panel,找到Bot的文件目录,然后进入/external/echo/src/index.ts

import { Context, Schema } from 'koishi'

export const name = 'echo'

export interface Config {}

export const Config: Schema<Config> = Schema.object({})

export function apply(ctx: Context) {
  // write your plugin here
}

我们来逐行解释这个代码,第一行是导入必要的程序依赖,暂时不用了解;第二行是定义插件的名称是echo,不需要更改;第三第四行是定义了配置文件和配置文件的格式,后面会详细讲;第五行function apply定义了这个插件会怎么运作(顾名思义,function翻译成名词的意思是函数,翻译成动词的意思是起到一定作用,后面会专门介绍编程知识)

我们修改一下apply函数:

export function apply(ctx: Context) {
  ctx.command('echo <msg>')
    .action((_, msg) => msg);
}

然后我们Ctrl+S进行保存。这个代码的意思是我们创建了一个echo 指令,其中msg是一个必填的参数,功能是重复这一句话

进入Koishi控制台,点击左边的插件配置,点击分组:develop,然后点击右上角的添加插件,搜索echo,然后点击出现的插件

点击启用插件

我们进入沙盒使用指令:

可以发现已经初具雏形了,我们下一节再讲解更复杂的内容!

接入QQ

警告:在配置过程中需要严格按照安全规范!前不久发生一起广泛的因为Napcat不配置自定义token而导致的机器人攻击事件,波及面极大,需要谨慎配置!

打开Termius,检测3000、3001、6099端口是否占用,否则下文指令需要更改冒号左边的端口。

输入:

docker run -d \
-e NAPCAT_GID=$(id -g) \
-e NAPCAT_UID=$(id -u) \
-p 3000:3000 \
-p 3001:3001 \
-p 6099:6099 \
--name napcat \
--network bridge \
--restart=always \
mlikiowa/napcat-docker:latest

在1Panel容器界面就能看到napcat容器了,然后3000是Web控制台端口,需要根据之前的博客一样配置Nginx并且reload,配置DNS解析和Cloudflare。然后进入napcat容器的日志,找到这段文字:

09-23 13:21:46 [info] [NapCat] [Core] NapCat.Core Version: 4.8.116
09-23 13:21:46 [info] 等待网络连接...
09-23 13:21:46 [info] [NapCat] [WebUi] ✅ 当前使用安全密码
09-23 13:21:46 [info] [NapCat] [WebUi] 🔑 已缓存启动时的token用于鉴权,运行时手动修改配置文件密码将不会生效
09-23 13:21:46 [info] [NapCat] [WebUi] 🔑 token=6f30b104240d
09-23 13:21:46 [info] [NapCat] [WebUi] WebUi User Panel Url: http://127.0.0.1:6099/webui?token=6f30b104240d
09-23 13:21:46 [info] [NapCat] [WebUi] WebUi User Panel Url: http://0.0.0.0:6099/webui?token=6f30b104240d

然后进入Web控制台,token输入日志中所生成的随机token

然后根据指引扫码登录即可。登录后点击网络配置,点击新建Websocket服务器:

点击启用,填写一个喜欢的名称,Port填入3001,Token中的密码请妥善保管,然后点击保存。

进入Koishi控制台,进入插件市场,搜索adapter-onebot并安装,到插件配置处添加插件:

selfId填写机器人QQ号,token填写刚才在创建Websocket服务器的时候填写的密码,protocol选择ws,endpoint填写方法如下:去1Panel中找到napcat容器,上面会有IP地址

然后假设地址是172.17.5.8,那我们填写ws://172.17.5.8:3001,点击右上角启用插件即可连接,然后可以私聊Bot,尝试对话。

最后

这样我们就学会了Koishi插件写作以及QQBot的对接!如果有哪里写的不够详尽,欢迎向笔者提问!

此作者没有提供个人介绍。
最后更新于 2025-09-23