V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
nirvam
V2EX  ›  分享创造

[Go] 现在跑团当 GM 门槛太高了,不但要会编故事,还得会写飞书 bot

  •  
  •   nirvam ·
    nirvam · 3 天前 · 816 次点击

    缘起

    最近我的 GM 魂又有点蠢蠢欲动,就组织了一群损友在飞书上跑《魔王之影》的文字团,苦于飞书没有现成好用的骰子 bot 轮子,每次都要切出去投骰子很断节奏。

    恰好前段时间读 SICP 有点上头,满脑子都是求值器,就想着干脆自己上手撸一个,顺便实战学习( vibe coding )一下 AST 的解析。

    于是就有了这个 🎲Feishu Dice Bot🤖

    项目介绍

    这是一个基于 Go 编写,通过 WebSocket 连接飞书开放平台的轻量级掷骰机器人。 主打零门槛部署多种规则支持

    解决了什么痛点?

    1. 无公网 IP 痛点:利用飞书的 WS 长连接模式,不需要公网 IP ,不需要域名备案,也不用配置内网穿透。家里 NAS 或云服务器跑个 Docker 就能用。
    2. 复杂规则支持:既然是为了跑团写的,自然要比微信🎲表情要强那么一丢丢。
      • 魔王之影/D&D1d20+1 - 2d6^ (属性检定+阻挠:投 d20+1 ,减去 2 个 d6 中最大的那个)
      • 建卡4d6^3 (投 4 取 3)
      • FATE4dF+2 (Fudge 骰子)
      • 统计:内置了简单的统计模块,甚至能生成欧非排行榜。
    3. 两种输出格式:支持纯文本和卡片两种消息格式,丰俭自由。

    技术实现

    既然是受 SICP 启发,核心的表达式求值部分自然没有用现成的库,而是请 Gemini 老师手写了 LexerParser

    • 采用递归下降分析法构建 AST 。
    • 支持优先级控制(乘法优先于加减)、括号嵌套、后缀修饰符(如 ^ 取最大,v 取最小)。
    • 部署方面,除了 Docker Compose ,也提供 Podman Quadlet 配置,配合 systemd 管理更优雅。

    效果预览

    User: 1d20+5 Bot: 18 Details: 13 + 5

    screenshot

    仓库地址

    开源在 GitHub (MIT License):https://github.com/nirvam/feishu-dice-bot

    欢迎 star 和 pr !

    题外话

    顺便强力安利一下“痛苦大师” Robert J. Schwalb 设计的 TRPG 规则 《魔王之影》(Shadow of the Demon Lord) ,世设比 5e 有趣,规则比 FATE 直观。感兴趣的朋友可以去机核网,试听一下位面旅行者 G 的两期世设和规则介绍节目,讲得非常有“味道”。

    1 条回复    2026-01-16 11:11:43 +08:00
    Tumblr
        1
    Tumblr  
       2 天前
    GM 。。。我以为是 General Manager 。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5942 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 01:52 · PVG 09:52 · LAX 17:52 · JFK 20:52
    ♥ Do have faith in what you're doing.