KiviBot 轻量、跨平台的 QQ 机器人框架

机器人框架


开发入门

<h1>开发入门</h1> <h2>前言</h2> <p><strong>KiviBot 插件</strong>基于 TypeScript 开发。<br /> 因此,本教程假设您已经具有一定的<strong>TypeScript 基础</strong>,并对 Node.js 有一定的了解。</p> <ul> <li><a href="https://www.showdoc.com.cn/p/d14da024cd71198bd6d58daefbe1a5ca">前置知识</a></li> </ul> <h2>所需工具</h2> <h4>1.KiviBot 框架</h4> <p>通过 开始 中的 <a href="https://www.showdoc.com.cn/p/d60084e69e64a4041b9747d616568aec">快速上手</a> 安装框架。</p> <h4>2.代码编辑器</h4> <p>您需要一个文本编辑器来编写代码。 我们推荐使用 Visual Studio Code (VS Code),因为它是免费和强大的,且支持终端的运行。<a href="https://code.visualstudio.com/">VS Code 官网</a></p> <h2>创建第一个插件 - demo1</h2> <ul> <li>在 <code>框架目录/plugins</code> 下新建文件夹(文件夹名称即插件名)</li> <li>文件夹下新建 index.ts(插件主文件)</li> <li>将下列代码粘贴到 index.ts 文件中并保存</li> </ul> <p>你可以新建一个 demo1 文件夹(文件夹名字要和下面 name 一样)</p> <p>typescript</p> <pre><code>import { definePlugin } from &amp;quot;kivibot&amp;quot;; export default definePlugin({ name: &amp;quot;demo1&amp;quot;, version: &amp;quot;1.0.0&amp;quot;, async setup(ctx) { //改为自己的qq号 ctx.bot.sendPrivateMsg(114514, &amp;quot;插件被启用了!&amp;quot;); }, });</code></pre> <ul> <li>接着向机器人发送 <code>#插件 启用 demo1</code></li> <li>再发送 <code>#插件 禁用 demo1</code></li> </ul> <p>可以看到的是,在启用插件时机器人会向指定 QQ 发送&quot;插件被启用了!&quot;</p> <p><strong>至此,你成功创建了第一个插件并启用。</strong></p> <p>接下来,对插件内容进行简要的讲解:</p> <p><strong>必要部分</strong> 为每个插件都应有的代码:</p> <p>typescript</p> <pre><code>import { definePlugin } from &amp;quot;kivibot&amp;quot;; //第一行代码,引入了框架核心kivibot里面的definePlugin函数 export default definePlugin({ name: &amp;quot;demo1&amp;quot;, // 插件名 version: &amp;quot;1.0.0&amp;quot;, // 插件版本 async setup(ctx) { // 插件启用时的逻辑 }, });</code></pre> <p><strong>主体部分</strong> 实现插件的功能:</p> <p>typescript</p> <pre><code>import { definePlugin } from &amp;quot;kivibot&amp;quot;; export default definePlugin({ name: &amp;quot;demo1&amp;quot;, version: &amp;quot;1.0.0&amp;quot;, async setup(ctx) { // ctx是插件上下文对象,包含bot等属性和handle等方法 ctx.bot.sendPrivateMsg(1706328818, &amp;quot;插件被启用了!&amp;quot;); // 调用bot对象的发送私聊消息方法 }, });</code></pre> <p>&gt; 注意,虽然 demo1 演示了 <strong>插件启用后</strong> 发送消息,但实际插件开发中我们<strong>不推荐</strong>你这样做。</p> <p><strong>小结</strong>:插件分为必要部分和本体部分,其中在必要部分定义插件的基本信息,在本体部分实现插件功能。通过 demo1,你应该了解到了如何创建一个基础插件,以及如何使用 ctx.bot 发送消息。</p> <h2>实现监听消息并回复 - demo2</h2> <p>在 KiviBot 中,我们使用 ctx.handle()方法来监听和处理消息事件。参考下面的示例:</p> <p>typescript</p> <pre><code>import { definePlugin } from &amp;quot;kivibot&amp;quot;; export default definePlugin({ name: &amp;quot;demo2&amp;quot;, version: &amp;quot;1.0.0&amp;quot;, async setup(ctx) { ctx.handle(&amp;quot;message&amp;quot;, async (e) =&amp;gt; { // 监听所有消息事件 if (e.message_type === &amp;quot;private&amp;quot;) { // 判断是否为私聊消息 e.reply(e.sender.nickname + &amp;quot;给我发了消息:&amp;quot; + e.raw_message); // 使用reply方法直接回复消息 } }); }, });</code></pre> <p><strong>下面简要介绍下事件对象 e。</strong> e 为接收到的消息事件对象,包含消息的各种信息和回复等方法。 例如一个群消息事件对象的结构如下:</p> <p>提示</p> <p>这是不完全的,可以自己 console.log 相应内容查看结构</p> <p>typescript</p> <pre><code>{ post_type: &amp;#039;message&amp;#039;, message_id: &amp;#039;xxx&amp;#039;, user_id: 1234567, time: 1672304636, message: [ { type: &amp;#039;text&amp;#039;, text: &amp;#039;这是文字&amp;#039; }, { type: &amp;#039;at&amp;#039;, qq: 1234567, text: &amp;#039;@用户&amp;#039; }, { type: &amp;#039;image&amp;#039;, file: &amp;#039;xxx.jpg&amp;#039;, url: &amp;#039;https://xxx.com/xxx.jpg&amp;#039; } ], raw_message: &amp;#039;这是文字@用户 [图片]&amp;#039;, message_type: &amp;#039;group&amp;#039;, sender: { user_id: 1234567, nickname: &amp;#039;用户名&amp;#039;, // ...其他发送者信息 }, group_id: 12345, // ...其他群消息相关信息 }</code></pre> <h2>指定词回复 - demo-2.5</h2> <p>再来一个示例,巩固一下 demo-2 的知识:</p> <p>typescript</p> <pre><code>import { definePlugin } from &amp;quot;kivibot&amp;quot;; export default definePlugin({ name: &amp;quot;demo-2.5&amp;quot;, version: &amp;quot;1.0.0&amp;quot;, async setup(ctx) { ctx.handle(&amp;quot;message&amp;quot;, (e) =&amp;gt; { if (e.raw_message === &amp;quot;你好&amp;quot;) { // raw_message是消息的文本内容 e.reply(&amp;quot;世界!&amp;quot;, true); // reply方法第二个参数为是否引用回复,默认false } }); }, });</code></pre> <h2>发送图片,语音等消息 - demo-3</h2> <p>在 KiviBot 中,我们使用 segment 工具来构造特殊消息:</p> <p>typescript</p> <pre><code>import { definePlugin, segment } from &amp;quot;kivibot&amp;quot;; export default definePlugin({ name: &amp;quot;demo-3&amp;quot;, version: &amp;quot;1.0.0&amp;quot;, async setup(ctx) { ctx.handle(&amp;quot;message&amp;quot;, (e) =&amp;gt; { if (e.raw_message === &amp;quot;发图片&amp;quot;) { const str = &amp;quot;这是个图片:&amp;quot;; const img = &amp;quot;https://example.com/image.png&amp;quot;; e.reply([str, segment.image(img)]); // 使用segment.image()构造图片消息 // 复杂消息需要用数组形式发送 } }); }, });</code></pre> <p>支持的 segment 方法包括:</p> <ul> <li><a href="http://segment.at/">segment.at</a>() - @某人</li> <li>segment.image() - 图片</li> <li>segment.record() - 语音</li> <li>segment.video() - 视频 等等</li> </ul> <p>更多请看 Bot API 中的 segment</p> <h2>提升自己</h2> <p>入门教程暂时到这里,接下来可以:</p> <ul> <li>学习进阶开发技巧</li> <li>阅读 API 文档深入学习</li> </ul>

页面列表

ITEM_HTML