介紹 Tsukimiya bot

日期:

Tsukimiya bot(@tsukimiya_bot)是一個 Telegram 機器人,可以 eval 月兔倉頡程式語言的程式碼。

使用

  • /eval, /mbt, /mb, /moon, /evalmbt - eval Moonbit 程式碼。如果程式碼不在 fn main 中,將會自動包裹。此情況下,如果尾語句不是 println,則會 println 最後一行表示式的值。
  • /cj, /cangjie, /evalcj - eval 倉頡程式語言程式碼。
Moonbit
Moonbit
倉頡
倉頡

實現

Moonbit

對 Moonbit 程式碼的 eval 實現比較抽象。Jinser 說想把 Moonbit 編譯器編譯到 JS 後 worker 部分的程式碼拿出來跑在 Cloudflare Workers 上。雖然這個大小的 JS 不付錢的話不太能放在邊緣上,但這啟發了我。

尋找一通,發現官網上 文件 裡面有很多帶了編輯器的例子可以在瀏覽器裡編譯 Moonbit 程式碼並生成 WASM 再執行,甚至還帶了語言伺服器。檢視了 Docusaurus 上文件的原始碼,發現是 @moonbit/moonpad 的包,封裝成了 Web 元件。我這邊也封裝成了 Astro 元件放在文章裡(裡面寫死了 lsp-server.js 的路徑,需要擦屁股),你可以猛戳下面的 Run 按鈕檢視效果。

輸出

依賴裡面的 core 仍然是閉源的,我們沒法獲得編譯器的原始碼。不過不要緊,跑在瀏覽器裡就好了。開一個 HTTP 伺服器然後 bot 部分用 Puppeteer 模擬點選。這樣,雖然最終沒有跑在邊緣上,但可以使用 Browser Rendering 跑在 Cloudflare Workers 上。當然,最終還是要付錢。

倉頡

倉頡則是直接使用了官網上 線上體驗 部分的 API。

原始碼

其他的不得說項,具體可看原始碼:tsukimiya-bot

本作品採用 知識共享署名-非商業性使用 4.0 國際許可協議CC BY-NC 4.0 International) 進行許可。閣下可自由地共享(複製、發行)和演繹(修改、轉換或二次創作)本作品,唯須遵守許可協議條款。

評論

評論將在稽覈後顯示,閣下可以在本部落格的 Github 倉庫的 拉取請求列表 中檢視。提交成功後會自動跳轉。

本站不支持 Dark Reader 的暗色模式,请对本站关闭后再访问。
(亮色模式的对比度、亮度等选项不受影响)