缘起
最近我的 GM 魂又有点蠢蠢欲动,就组织了一群损友在飞书上跑《魔王之影》的文字团,苦于飞书没有现成好用的骰子 bot 轮子,每次都要切出去投骰子很断节奏。
恰好前段时间读 SICP 有点上头,满脑子都是求值器,就想着干脆自己上手撸一个,顺便实战学习( vibe coding )一下 AST 的解析。
于是就有了这个 🎲Feishu Dice Bot🤖。
项目介绍
这是一个基于 Go 编写,通过 WebSocket 连接飞书开放平台的轻量级掷骰机器人。 主打零门槛部署和多种规则支持。
解决了什么痛点?
- 无公网 IP 痛点:利用飞书的 WS 长连接模式,不需要公网 IP ,不需要域名备案,也不用配置内网穿透。家里 NAS 或云服务器跑个 Docker 就能用。
-
复杂规则支持:既然是为了跑团写的,自然要比微信🎲表情要强那么一丢丢。
- 魔王之影/D&D:
1d20+1 - 2d6^(属性检定+阻挠:投 d20+1 ,减去 2 个 d6 中最大的那个) - 建卡:
4d6^3(投 4 取 3) - FATE:
4dF+2(Fudge 骰子) - 统计:内置了简单的统计模块,甚至能生成欧非排行榜。
- 魔王之影/D&D:
- 两种输出格式:支持纯文本和卡片两种消息格式,丰俭自由。
技术实现
既然是受 SICP 启发,核心的表达式求值部分自然没有用现成的库,而是请 Gemini 老师手写了 Lexer 和 Parser。
- 采用递归下降分析法构建 AST 。
- 支持优先级控制(乘法优先于加减)、括号嵌套、后缀修饰符(如
^取最大,v取最小)。 - 部署方面,除了 Docker Compose ,也提供 Podman Quadlet 配置,配合 systemd 管理更优雅。
效果预览
User:
1d20+5Bot: 18 Details: 13 + 5

仓库地址
开源在 GitHub (MIT License):https://github.com/nirvam/feishu-dice-bot
欢迎 star 和 pr !
题外话
顺便强力安利一下“痛苦大师” Robert J. Schwalb 设计的 TRPG 规则 《魔王之影》(Shadow of the Demon Lord) ,世设比 5e 有趣,规则比 FATE 直观。感兴趣的朋友可以去机核网,试听一下位面旅行者 G 的两期世设和规则介绍节目,讲得非常有“味道”。