Thanks to visit codestin.com
Credit goes to github.com

Skip to content
This repository was archived by the owner on Dec 3, 2025. It is now read-only.
/ ctt Public archive
forked from iawooo/ctt

这是一个基于Cloudflare实现的Telegram消息转发机器人,专注于将用户消息安全、高效地转发到后台群组每个用户独立群组中的分话题,直接话题中发送信息而无需再艾特回复,适用于客服、社区管理等场景。

License

Notifications You must be signed in to change notification settings

xuennai/ctt

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

134 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CFTeleTrans (CTT) - Telegram消息转发分组对话机器人(基于Cloudflare)

这是一个基于Cloudflare Workers实现的Telegram消息转发分组对话机器人,代号 CFTeleTrans (CTT),专注于将用户消息安全、高效地转发到后台群组,同时充分利用Cloudflare的免费额度(榨干CF大善人!)。该机器人支持用户验证、消息转发、频率限制、管理员管理等功能,适用于客服、社区管理等场景。

特点与亮点

  1. 充分利用Cloudflare免费额度(榨干CF大善人!)

    • CFTeleTrans (CTT) 完全基于Cloudflare Workers部署,利用其免费额度(每天10万次请求,50次/分钟)实现高性能、低成本的机器人运行。
    • 使用Cloudflare D1存储用户状态和数据,免费额度(每天10万次读/写)足以支持中小规模用户群。
    • 避免用别人的,受他人控制,(避免了突然植入广告,触不及防)该项目完全开源自己所有,可以自由修改代码的机器人
    • 零成本运行,适合个人开发者或小型团队,真正做到“榨干CF大善人”的免费资源!
  2. 分组对话消息管理

    • 用户消息自动转发到后台群组的子论坛,别人私聊你机器人就如同添加了你好友。
    • 群聊可多个号回复用户(只需将你的号拉进群并设置管理)
    • 置顶消息显示用户信息(昵称、用户名、UserID、发起时间)及通知内容
    • 每个用户独立一个话题,随时随地想聊就聊!
    • 可通过后台群组直接回复用户消息,消息会转发到用户私聊。
    • 支持监控并同步编辑后的文本或媒体文件。
    • 采用原生转发,支持显示转发来源。
    • 支持/delete指令撤回消息,支持/wipe指令批量撤回消息,轻松省力。
  3. 高效的用户验证机制

    • 支持按钮式 CF 人机验证,有惩罚机制,防止机器人刷消息。
    • 验证状态持久化,用户验证通过后短时间内无需重复验证,除非被拉黑或被管理员删除信息。
    • 删除聊天记录后重新开始,验证码会自动触发,确保用户体验流畅。
  4. 消息频率限制(防刷保护)

    • 默认每分钟40条消息上限(可通过环境变量调整),超过限制的用户需重新验证。
    • 有效防止恶意刷消息,保护后台群组和cf免费额度。
  5. 管理员面板功能

    • 支持/admin呼出管理员面板控制,简单方便。
    • 支持拉黑用户,查询黑名单,关闭验证码,关闭用户Raw,重置用户,删除用户等多种功能。
  6. 轻量级部署

    • 单文件部署(仅需一个_worker.js),代码简洁,易于维护。
    • 支持Cloudflare Workers和Cloudflare Pages部署,部署过程简单。

部署教程

准备工作

  1. 创建Telegram Bot

    • 在Telegram中找到@BotFather
    • 现在 BotFather 支持小程序图形化操作,优先使用小程序
    • 发送/newbot创建新机器人,按照提示设置机器人名称和用户名,获取Bot Token(例如123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
    • 发送/setinline切换内联模式
  2. 创建后台群组

    • 创建一个Telegram群组(按需设置是否公开)
    • 群组的“话题功能”打开
    • 添加机器人为管理员,建议权限全给(消息管理,话题管理)
    • 获取群组的Chat ID(例如-100123456789),可以通过@getidsbot获取(拉它进群)

部署到Cloudflare Workers

步骤 1:创建D1 SQL数据库

  1. 登录Cloudflare仪表板
  2. 导航到 存储和数据库 > D1 SQL数据库,输入一个名称(例如cfteletrans-db),点击 创建

步骤 2:获取Turnstile密钥

  1. 登录Cloudflare仪表板
  2. 导航到 应用程序安全 > Turnstile,点击 添加小组件
  3. 点击 添加主机名,填写你的Worker域名(例如 xxx.workers.dev)
  4. 小组件名称随意,其他无特殊需求默认即可
  5. 点击 创建,复制获取的站点密钥(Site Key)和 密钥(Secret Key)

步骤 3:创建Workers项目

  1. 登录Cloudflare仪表板
  2. 导航到 计算和AI > Workers和Pages > Workers和Pages,点击 创建
  3. 点击 Hello world,输入一个名称(例如cfteletrans),再点击 部署

步骤 4:配置环境变量

  1. 在创建的Workers项目 设置 > 变量和机密 中,添加以下变量:
  • BOT_TOKEN_ENV:您的Telegram Bot Token(例如123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11)。
  • GROUP_ID_ENV:后台群组的Chat ID(例如-100123456789)。
  • MAX_MESSAGES_PER_MINUTE_ENV:消息频率限制(例如40)。
  • TURNSTILE_SECRET_KEY:Turnstile密钥(例如0x4XXXXXXCD5_XiX2HfXXXOR_bXaXXZdXa4
  • TURNSTILE_SITE_KEY:Turnstile站点密钥(例如0x4XXXXXXCD5_XxXzxv70x38

步骤 5:绑定D1 SQL数据库

  1. 在创建的Workers项目 设置 > 绑定 中,绑定数据库:
  • 添加-选择D1数据库
  • 变量名称 D1
  • D1 数据库 选择刚建的数据库(例如cfteletrans-db),
  • 点击 编辑代码,把原来的代码用本项目中的_worker.js代码替换后部署

步骤 6:测试

  1. 在Telegram中找到您的机器人,发送/start
  2. 确认正确触发验证,Bot 发送带有 Mini App 按钮的消息。
  3. 完成验证,确认收到合并消息。
  4. 发送消息,确认消息转发到后台群组的子论坛。

迁移/升级提示

如果是因为从原项目迁移过来,且没有删除重建数据库而出现问题,建议在浏览器中依次访问以下链接以完成配置更新:

  1. 注册 Webhook https://xx.xxx.workers.dev/registerWebhook
  2. 检查数据表 https://xx.xxx.workers.dev/checkTables
  3. 检查 Webhook 状态 https://api.telegram.org/bot{你的BOT_TOKEN}/getWebhookInfo

注意: 请使用你自己的 Workers URL 和 Bot Token 替换上述链接中的占位符。

  • 特别注意 Telegram API 链接中的 bot 字符串不要删除,直接在后面跟上你的 Token。

需要在 Cloudflare 绑定的变量表

以下是项目中需要在 Cloudflare 环境中绑定的变量及其说明:

变量名 类型 描述 默认值/示例
BOT_TOKEN_ENV 环境变量 Telegram Bot 的 Token,用于与 Telegram API 通信。 your-telegram-bot-token
GROUP_ID_ENV 环境变量 Telegram 群组的 ID,用于消息转发和客服回复。 -123456789
MAX_MESSAGES_PER_MINUTE_ENV 环境变量 每分钟允许的最大消息数,用于限制用户发送频率。 40
TURNSTILE_SECRET_KEY 环境变量 Turnstie密钥 0x4XXXXXXCD5_XiX2HfXXXOR_bXaXXZdXa4
TURNSTILE_SITE_KEY 环境变量 Turnstile站点密钥 0x4XXXXXXCD5_XxXzxv70x38
D1 D1 绑定 Cloudflare D1 数据库绑定,用于存储用户状态、消息频率和群组映射。 cfteletrans-db

部署到Cloudflare pages

fork本项目!!!

步骤 1:创建pages项目

  1. 登录Cloudflare仪表板
  2. 导航到 Workers和Pages > Workers和Pages,选择pages,点击 创建
  3. 连接GitHub部署(或者下载本项目zip部署)

步骤 2:填写变量后重试部署

变量截图

灵感来源

本项目的灵感来源于 Telegram-interactive-bot(部署在服务器)

参考文献

在开发过程中,以下资源提供了宝贵的参考和指导:

致谢

  • 特别感谢 VTEXS 赞助本项目,感谢 VTEXS为开源社区提供算力支持!
  • Powered by DartNode
  • 特别感谢 xAI 提供的支持和灵感,帮助我完成了本项目的开发和优化!
  • 特别感谢 cloud flare 大善人!
  • 再次感谢所有测试者、贡献者和社区支持!

贡献

欢迎提交 Issue 或 Pull Request!如果您有任何改进建议或新功能需求,请随时联系我。

Star 增长趋势

许可证

本项目采用 MIT 许可证,详情请见 LICENSE 文件。

声明

  • 尊重原创,转载须知
    如需转载,请务必注明出处,感谢支持!严禁将本项目用于任何违法犯罪行为。
  • 二次修改与发布
    欢迎基于本项目进行二次开发,但请在发布时注明原始出处,共同维护开源社区的良好氛围。

About

这是一个基于Cloudflare实现的Telegram消息转发机器人,专注于将用户消息安全、高效地转发到后台群组每个用户独立群组中的分话题,直接话题中发送信息而无需再艾特回复,适用于客服、社区管理等场景。

Resources

License

Stars

Watchers

Forks

Languages

  • JavaScript 100.0%