介绍 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 仓库的 拉取请求列表 中查看。
本表单无 JavaScript,请勿重复提交。

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


This site does not support dark mode by Dark Reader, please turn it off before visiting.
(Contrast, brightness, etc. of light mode are not affected)