介绍 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 的暗色模式,请对本站关闭后再访问。
(亮色模式的对比度、亮度等选项不受影响)