跳转到内容

LNNBot

此后如竟没有炬火,我便是唯一的光。

LNNBotDGCK81LNN 维护的 QQ 机器人,也在部分其他平台可用,基于 Koishi.js 框架,具有〇改希顶语转写、代码运行、网站截图、字体渲染、信息查询等丰富的功能。

架构

Koishi.js 是一个可扩展的机器人框架,它允许各种插件各自提供自己的功能。LNNBot 的各种功能根据来源可以分为:

  • 插件市场插件,即从 Koishi.js 插件市场安装的插件,由不同的 Koishi.js 插件开发者编写并发布在 npm,通常用 TypeScript 编写;
  • miniplug 插件,即借助 DGCK81LNN 制作的 miniplug 插件,由维护者在机器人控制台直接使用 JavaScript 编写的插件,省去了将 TypeScript 插件源代码编译为 JavaScript 并重启 bot 的过程,并且可以随时修改插件代码并进行热重载;
  • 微指令,即通过 DGCK81LNN 制作的 microcommands 插件,由维护者在聊天中通过指令输入 JavaScript 代码定义的指令,代码保存在机器人数据库;
  • WhatCommands 指令,即通过最初由预防开发的 WhatLang 语言解释器,由用户自定义的一类类似于指令的功能。

以上四个类别之间实际上存在从属关系,miniplug 本身是一个插件市场插件,microcommands 本身是一个 miniplug 插件(也在插件市场发布),WhatCommands 指令依赖于插件市场插件 whatlang。四个类别之间呈现从稳健到轻便的层级关系,在为 LNNBot 实现新功能时,较为复杂的功能需要编写为单独插件,而轻量简单的需求使用微指令甚至 WhatCommands 指令即可满足。

DGCK81LNN 编写的插件市场插件会开源在 GitHub;而 LNNBot 所用的 miniplug 插件和微指令的源代码则会不定期同步到 Gitee 仓库 DGCK81LNN/lnnbot-miniplugs。另外,用户可以通过 /microcommand show 微指令名称¿¿¿ cmdget WhatCommands指令名称 查询 LNNBot 的任何微指令或 WhatCommands 指令的源代码。

功能系统

指令系统

主条目:LNNBot/指令

指令是 LNNBot 功能中重要的一类,它们有一种共通的调用语法,即发送 /名称 选项和参数…

WhatCommands 指令

主条目:LNNBot/WhatCommands指令

WhatCommands 指令是一种可由用户使用 WhatLang 语言自定义的功能,可通过发送 ¿¿名称 输入…/wc 名称 输入… 来使用。

用户系统

当 bot 首次在聊天中收到来自一个账号的消息时,会自动将该账号登记为用户并按顺序分配一个用户序号。通过账号绑定可以让bot把指定账号关联到指定的一个已有用户。每个用户具有一定的权限

点数系统

为了限制一些功能的使用,部分指令在调用时需要消耗点数。每个用户每天(北京时间)可以使用 checkin 指令进行一次签到来获得点数;赞助 LNNBot 的用户可以获得点数消耗减免额度奖励。用户可以使用 balance 指令来查询自己当前拥有的点数和点数消耗减免额度。

平台支持

LNNBot 主要提供服务是通过 QQ 账号“LNNBot”,由于这是通过第三方协议 OneBot 实现的,框架将其称作 onebot 平台,而 qq 平台是通过 QQ 官方开放平台实现的“真魂bot”。LNNBot 也在 Discord、Telegram、Kook 平台提供服务。部分功能只能在 onebot 平台正常使用。

外部链接