来提交你的插件吧!
有疑问?来看看呗!

插件详情

astrbot_plugin_tg_button

一个可以把指令或者网址绑定到Telegram的按钮上的插件

Telegram
版本v1.3.3
作者随风潜入夜
Star5
更新2025/12/24

插件说明

astrbot_plugin_tg_button

✨ 为 AstrBot 在 Telegram 中添加交互式按钮的插件,现已更新 WebUI 以方便管理。 ✨

Version
License
Python 3.9+
AstrBot
GitHub

主要更新 (V1.3.3) - 修复按钮重定向

  • 🔧 功能修复: 解决了在特定场景下按钮重定向后菜单显示不正确的问题,确保开启“定位目标菜单”后能够准确展示目标按钮及菜单。

主要更新 (V1.3.2) - 新增按钮工具动作

  • 🔁 按钮重定向模块化动作: 新增的“按钮重定向”动作允许在工作流中临时复用现有按钮的行为,快速构建返回主菜单、引导至其他菜单等场景。
  • 🆔 获取现有 ID 模块化动作: 新增的“获取现有 ID”动作提供菜单、按钮、WebApp、本地动作与工作流的下拉选择,并将所选 ID 输出给下游节点,方便搭建依赖现有资源的流程。

主要更新 (V1.3.1) - 工作流画布与动作列表再升级

  • 🪄 悬浮动作列表: 模块化动作列表改为悬浮在画布左上角,折叠按钮缩成圆形悬浮球,吸入/展开动画更灵动,画布始终保持最大可视面积。
  • 📱 触控体验优化: 双指缩放加入阻尼和灵敏度调节,同时保留滚轮缩放与拖拽,移动端也能顺畅查看与摆放节点。
  • 🎚️ 列表密度调整: 列表内部采用更紧凑的卡片布局并支持平滑折叠,让更多模块动作可以同时显示、滚动浏览。

主要更新 (V1.3.0) - 等待用户输入体验升级

  • 🆕 提示展示模式切换: 等待用户输入 模块化动作的“提示展示方式”现支持三种策略,可在保留按钮菜单的前提下仅修改触发按钮标题、更新菜单标题文本,或继续使用替换整条消息的旧行为。
  • 🎛️ 一致的下拉选择: 包括消息解析模式在内的多选参数全面改为下拉菜单,避免手动输入导致的拼写错误。
  • 📣 更友好的默认提示: 在按钮标题模式下会自动精简提示与结果文本,保证 Telegram 按钮标签的可读性。

主要更新 (V1.2.2) - 新增消息操作动作

  • ✨ 新增消息编辑与删除动作:
    • 编辑消息文本: 用于更新纯文本消息的内容。
    • 编辑媒体消息: 用于更新带媒体消息的图片/语音和/或说明文字。
    • 删除消息: 用于删除任意指定的消息。
  • 📚 文档更新: 在工作流文档中为新动作添加了详细说明和“阅后即焚”高级教程。

主要更新 (V1.2.1) - 功能增强与修复

  • ✨ 新增预设动作: 添加了多个开箱即用的模块化动作,简化常见任务(如缓存、文本处理、发送图片等)。
  • 🚀 WebUI 优化: 优化了 WebUI 的交互和性能。
  • 🐛 Bug 修复: 修复了部分回调操作可能导致堵塞的问题,提升了插件的响应速度和稳定性。

主要更新 (V1.2.0) - 工作流与模块化动作

此版本引入了强大的“工作流”引擎和“模块化动作”系统,将插件的可定制性和扩展性得到了提升。

  • ✨ 新增“工作流 (Workflow)”引擎: 引入了一个可视化的工作流设计器,允许用户通过拖拽方式将多个独立的动作(HTTP、本地、模块动作)编排成复杂的任务流。实现了动作之间的数据传递和逻辑分支,极大地增强了自动化能力。
  • 🧩 新增“模块化动作 (Modular Action)”系统: 允许开发者和高级用户通过在指定目录中创建简单的 Python 文件来添加自定义功能,无需修改插件核心代码。这为插件提供了前所未有的可扩展性。
  • 📂 文档结构优化与内容补充: 将所有说明文档从 md/ 目录迁移至 docs/ 目录,并为新的“工作流”和“模块化动作”功能撰写了详细的开发和使用指南。

主要更新 (V1.1.2) - 安全修复

此版本为安全更新,建议升级。

  • 🔒 安全修复: 修复了 actions.py 中存在的服务器端模板注入 (SSTI) 漏洞。此漏洞可能允许有权访问 WebUI 的用户在服务器上执行任意代码。现已通过引入 Jinja2 沙箱环境来阻止此类攻击。
  • 🐛 Bug 修复: 修复了当设置 webui_auth_token 密钥后,访问 WebUI 主页会导致 500 服务器错误的问题。

主要更新 (V1.1.1)

此版本主要针对 WebUI 进行了全面的功能增强和体验优化,并修复了若干 Bug。

  • 功能: 在 WebUI 中补全了对“插入文本”、“转发查询”和“原始回调”等按钮类型的支持。
  • 优化: 重构了 WebUI 的弹窗系统和标签页动画,交互体验更统一、更流畅。
  • 修复: 解决了重复点击、鼠标悬停和标签页切换时遇到的多个视觉及逻辑 Bug。

主要更新 (V1.1.0)

此版本主要引入了一个可视化 Web 管理界面 (WebUI),用于替代旧版的指令式管理,并增加了多项新功能以支持更复杂的交互。

  • 💻 可视化 WebUI: 在浏览器中通过拖拽方式直观地管理按钮、菜单和布局。
  • 🚀 新增“动作 (Action)”系统: 让按钮能够调用外部 API、解析数据并动态更新消息。(可能不完善,已测试)
  • 🧩 新增按钮类型: 支持子菜单、WebApp 和返回等多种新类型。
  • 🌐 WebApp 集成: 直接在 Telegram 内部无缝打开网页应用。(可能不完善,未测试)
  • 📜 多菜单支持: 可创建多个相互链接的菜单,构建导航流程。

📦 插件安装

  • 方式一 (推荐): 在 AstrBot 的插件市场搜索 astrbot_plugin_tg_button,点击安装即可。

  • 方式二 (手动):

    # 进入 AstrBot 插件目录
    cd /path/to/your/AstrBot/data/plugins
    # 克隆仓库
    git clone https://github.com/clown145/astrbot_plugin_tg_button.git
    # 重启 AstrBot
    

⚙️ 插件配置

安装并重启 AstrBot 后,在 WebUI 找到本插件并进入“管理”页面进行配置。

配置项 说明 默认值
menu_command 用于调出根菜单的指令名 (无需 /)。 menu
menu_header_text 调出菜单时,按钮上方显示的默认提示文字。 请选择功能
webui_enabled (核心) 是否启用插件自带的按钮管理 WebUI。 false
webui_port WebUI 服务监听的端口号。 17861
webui_host WebUI 服务监听的地址。 127.0.0.1 仅本机可访问。 127.0.0.1
webui_exclusive 启用 WebUI 时是否独占插件,开启后将暂停指令与回调功能。 true
webui_auth_token (可选) 访问 WebUI 时需要携带的认证 Token,若为空则不校验。 ""

🖥️ 使用 WebUI 进行配置

现在,所有复杂的按钮和菜单管理都推荐通过 WebUI 完成。

  1. 在插件配置中,将 webui_enabled 设置为 true 并保存。
  2. 在浏览器中访问 http://<webui_host>:<webui_port> (默认为 http://127.0.0.1:17861)。
  3. 界面分为左右两栏:左侧是菜单列表,右侧是未分配的按钮。

典型使用流程:创建子菜单与返回按钮

以下步骤将演示如何创建一个名为“实用工具”的子菜单,并为其添加一个返回主菜单的按钮。

  1. 创建子菜单:

    • 在左侧“菜单 (Menus)”区域,点击 新增菜单。
    • 在新出现的菜单 menu_xxxx 中,将其名称修改为 实用工具。记下它的 ID,例如 menu_abc123。
  2. 创建返回按钮:

    • 在右侧“未分配的按钮”区域,点击 创建新按钮。
    • 在弹出的窗口中:
      • 显示文本: 返回上一级
      • 类型: 选择 子菜单 (Submenu)
      • 目标菜单: 选择 root (这是主菜单的 ID)
    • 点击 创建按钮。
  3. 创建入口按钮:

    • 再次点击 创建新按钮。
    • 在弹出的窗口中:
      • 显示文本: 实用工具
      • 类型: 选择 子菜单 (Submenu)
      • 目标菜单: 选择刚刚创建的 实用工具 (menu_abc123)
    • 点击 创建按钮。
  4. 组合布局:

    • 使用鼠标,将右侧的 返回上一级 按钮拖拽到左侧 实用工具 菜单的布局网格中。
    • 同样,将右侧的 实用工具 按钮拖拽到 root (主菜单) 的布局网格中。
  5. 保存:

    • 确认布局无误后,点击页面右上角的 保存全部 按钮。现在,你在 Telegram 中使用 /menu 就可以看到效果了。

🔒 安全警告:保护您的 WebUI 与模块化动作

WebUI 拥有强大的功能,可以配置能够执行服务器端逻辑的“动作 (Action)”按钮,甚至上传自定义代码(模块化动作)。因此,保护对 WebUI 的访问至关重要。

[!WARNING]
强烈建议不要常态化开启 WebUI!
为了安全和节省系统资源,建议仅在需要配置按钮时开启 WebUI,完成后立即在插件配置中将 webui_enabled 设置回 false。

[!CAUTION]
关于模块化动作上传功能的额外警告

  1. 高风险功能:通过 WebUI 上传 .py 文件作为模块化动作的功能,相当于允许通过网页直接在您的服务器上部署和执行代码。这是一个非常危险的权限。
  2. 默认关闭且不推荐开启:出于安全考虑,此功能默认是禁用的。我们强烈不推荐普通用户开启此功能。
  3. 强制密码保护:如果您确切地知道风险并决定启用它,您必须在插件配置中为上传 (webui_upload_auth_token) 和删除 (webui_delete_auth_token) 操作设置一个长而复杂的、不同于主 WebUI 密钥的密码。否则,任何能够访问您 WebUI 的人都有可能上传恶意代码并控制您的服务器。

[!IMPORTANT]
务必为 WebUI 设置访问密钥!
如果您需要开启 WebUI(即使是临时),特别是当您将端口暴露给公网(webui_host 设置为 0.0.0.0)时,必须在插件配置中设置一个长而复杂的 webui_auth_token。


📖 深入了解高级功能

我们为新功能准备了详细的指南文档,帮助你更好地使用本插件:

  • ✨ (新) 工作流 (Workflow) 功能详解
  • 🧩 (新) 如何创建模块化动作
  • 📄 动作 (Action) 按钮使用指南
  • 🌐 WebApp 按钮使用指南
  • 🔗 Telegram tg:// 协议链接大全
  • ⚙️ 按钮类型参考指南

⌨️ 关于旧版指令的说明

旧版的 /bind 和 /unbind 指令已在 1.2.0 版本中被完全移除,以鼓励用户转向功能更强大、更安全的 WebUI。

所有按钮和菜单的管理现在都应通过 WebUI 完成。


📝 开发说明

本插件的开发过程得到了 AI 的大量协助,如果代码或功能中存在任何不妥之处,敬请谅解并通过 Issue 提出,感谢您的支持!

AstrBot LogoAstrBot 插件市场社区

AstrBot 插件市场 是一个开放的插件分享平台,欢迎开发者们贡献优质插件。本站致力于为 AstrBot 用户提供高质量扩展,帮助您快速找到喜欢的插件,并鼓励社区伙伴分享使用心得、提出改进建议。

相关链接

官方项目主站 官方插件市场 官方项目仓库 侧边展示主站

开发相关

插件开发文档 快速提交插件 官方项目文档

© 2026 AstrBot 插件市场 Made with by Community