LNNBot
LNNBot 是 DGCK81LNN 維護的 QQ 機器人,也在 Discord 可用,基於 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 語言編寫後供自己和他人使用,它們本身不是 Koishi.js 指令系統內的指令,但可以通過指令 whatcmd 調用。以 WhatLang 作為一門深奧編程語言(esolang)的學習門檻為代價,WhatCommands 的靈活性相比微指令更上一層樓,只要掌握 WhatLang,任何用戶都可以在語言提供的能力範圍內為 LNNBot 添加新功能,無需經bot維護者審核代碼。