LNNBot
LNNBot 是 DGCK81LNN 維護的 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 指令
WhatCommands 指令是一種可由用戶使用 WhatLang 語言自定義的功能,可通過發送 ¿¿名称 输入… 或 /wc 名称 输入… 來使用。
用戶系統
當 bot 首次在聊天中收到來自一個賬號的消息時,會自動將該賬號登記為用戶並按順序分配一個用戶序號。通過賬號綁定可以讓bot把指定賬號關聯到指定的一個已有用戶。每個用戶具有一定的權限。
點數系統
為了限制一些功能的使用,部分指令在調用時需要消耗點數。每個用戶每天(北京時間)可以使用 checkin 指令進行一次簽到來獲得點數;贊助 LNNBot 的用戶可以獲得點數消耗減免額度獎勵。用戶可以使用 balance 指令來查詢自己當前擁有的點數和點數消耗減免額度。
平台支持
LNNBot 主要提供服務是通過 QQ 賬號「LNNBot」,由於這是通過第三方協議 OneBot 實現的,框架將其稱作 onebot 平台,而 qq 平台是通過 QQ 官方開放平台實現的「真魂bot」。LNNBot 也在 Discord、Telegram、Kook 平台提供服務。部分功能只能在 onebot 平台正常使用。
外部鏈接
- LNNBot — LNN的:not(博客)?(記載了 LNNBot 的一些歷史)