核心功能与定位
Towns Protocol Bot SDK 是官方提供的 TypeScript 开发工具包,专为构建去中心化社交机器人设计。该 SDK 深度集成 Towns 协议的消息系统与 Base 网络区块链能力,支持开发者创建具备链上交互能力的社区管理机器人。
核心用法概览
SDK 采用 Bun 运行时 作为基础环境,通过 makeTownsBot() 工厂函数初始化机器人实例。核心架构包含双钱包设计:bot.viem.account.address 作为 Gas 钱包负责支付交易费用(需充值 Base ETH),bot.appAddress 作为可选的国库钱包处理资金流转。
消息处理体系分为四大事件类型:
- `onMessage`:监听普通消息流(斜杠命令不触发)
- `onSlashCommand`:专用命令处理器,需在初始化时预定义命令列表
- `onReaction`:emoji 反应事件监听
- `onTip`:代币打赏事件(需开启"All Messages"模式)
- `onInteractionResponse`:交互组件响应处理(表单、交易签名等)
交互能力方面,SDK 支持发送富文本消息(支持提及、线程回复、附件)、发送交互式表单、发起链上交易请求,以及执行基础的权限管理操作(ban/unban)。
显著优点
1. 链上原生集成:直接通过 Viem 客户端与 Base 网络交互,无需额外配置 Web3 Provider
2. 类型安全:完整 TypeScript 类型定义,包含 BotCommand、BotHandler 等核心接口
3. 交互式组件:内置表单系统支持按钮、输入框等 UI 组件,降低前端开发负担
4. 权限抽象:封装 hasAdminPermission 等权限检查,简化 DAO 治理场景开发
5. 官方生态支持:与 Towns Developer Portal 深度集成,提供应用凭证管理与 Webhook 配置
潜在局限与风险
运行环境限制:强制依赖 Bun 运行时,Node.js 生态兼容性受限;bunx towns-bot init 脚手架工具链锁定技术选型。
资金安全风险:双钱包架构要求开发者正确区分 Gas 钱包与国库钱包,误操作可能导致资金损失;文档明确警示"永远不要仅凭 txHash 确认交易",必须验证 receipt.status === 'success'。
身份系统特殊性:User ID 采用以太坊地址格式(0x...),与传统社交平台的用户名体系差异显著,增加用户认知成本。
调试复杂性:消息转发模式(Message Forwarding Mode)需在 Developer Portal 手动配置,配置错误会导致事件监听失效,且错误提示为静默失败。
适用人群
- Web3 社区运营者:需要构建具有代币门控、打赏激励的 Discord/Telegram 替代方案
- DAO 工具开发者:开发提案投票、成员管理、资金分配的自动化机器人
- Base 生态建设者:熟悉 Viem/EVM 开发栈,希望快速接入 Towns 社交协议
安全等级评估
SDK 本身来自 Towns Protocol 官方(T1 可信度),但使用场景涉及区块链资金操作,需开发者自行管理私钥安全。建议生产环境采用硬件钱包或 KMS 方案托管 APP_PRIVATE_DATA。
常规风险提示
- 私钥泄露风险:
APP_PRIVATE_DATA包含完整凭证,泄露即导致机器人失控 - Gas 耗尽风险:高频链上操作需监控 Gas 钱包余额
- 交易回滚风险:未验证交易收据即执行业务逻辑可能导致状态不一致
- 兼容性风险:SDK 版本 2.0.0 处于快速迭代期,API 可能变动