使用到的工具
-
Deno:现代的 JavaScript 和 TypeScript 运行时。
-
Yoeth:一个轻巧、易用的 Deno 聊天机器人框架,支持 OneBot 12标准。
-
Walle-Q:一个 QQ 平台的 OneBot 协议实现端。
前期准备
安装 Deno(使用 PowerShell):
iwr https://deno.land/install.ps1 -useb | iex
下载 Yoeth 示例:
https://github.com/yoeth/yoeth_example
下载 Walle-Q:
https://github.com/abrahum/walle-q/releases
开始使用
运行 Walle-Q,按照提示进行登录。
运行 Yoeth 示例:
cd yoeth_example
deno task start
不出意料的话,机器人已经跑起来了。让我们发个消息试试吧。
代码解析
让我们来逐个解析示例内的几个文件。
打开 yoeth_example/yoeth.yml ,你会发现以下内容:
version: 0.1.4 # Yoeth 版本
bots:- self_id: ~ # 机器人的账号(默认为空,为空时部分功能可能无法正常使用)protocol: # 通信协议配置websocket: # 正向 WebSocket 配置(应用端访问 OneBot 标准实现端)- url: ws://127.0.0.1:9966 # 连接地址access_token: ~ # 访问令牌(可选,默认为空)reconnect_interval: 4 # 重连间隔,单位秒disable: true # 此处为 true 时禁用websocket_rev: # 反向 WebsScket 配置(OneBot 标准实现端访问应用端)- host: 127.0.0.1 # 监听 IPport: 8844 # 监听端口access_token: ~disable: falsehttp: # HTTP 配置(应用端访问 OneBot 标准实现端)- url: http://127.0.0.1:9100/access_token: ~disable: truedisable: false # 此处为 true 时禁用
plugins:- path: ./plugin/ping.js # 插件地址(支持网络地址)disable: false # 此处为 true 时禁用config: ~ # 自定义选项(默认为空)- path: ./plugin/log.jsdisable: falseconfig: ~- path: ./plugin/ping2.jsdisable: falseconfig: ~
打开 yoeth_example/plugin/ping.js ,你会发现以下内容:
export const type = 'message';
export const name = 'ping';export function apply({ session, config, segment }) {// 如果收到“天王盖地虎”,就回应“宝塔镇河妖”if (session.content === "天王盖地虎") {session.send("宝塔镇河妖");}
}
打开 yoeth_example/plugin/log.js ,你会发现以下内容:
export const type = 'notice';
export const name = 'log';export function apply({ session, config, segment }) {console.log(session)
}
打开 yoeth_example/plugin/ping2.js ,你会发现以下内容:
export const name = 'ping2'
export const type = 'ctx'export function apply({context, config, segment}) {context.middleware(async (session, next) => {if (session.content === '水能载舟') {// 如果收到“水能载舟”,就回应“亦能覆舟”// 我们可以直接发送纯文本return '亦能覆舟'} else if (session.content === '114') {// 也可以发送消息段let s = segment;return s(s.text({ text: "5" }), s.space(), s.text({ text: "4" }))} else {return next()}})
}
相关链接
Yoeth 文档:
https://github.com/yoeth/yoeth_docs
Yoeth:
https://github.com/yoeth/yoeth