{"id":26869430,"url":"https://github.com/iawooo/ctt","last_synced_at":"2025-05-07T04:22:53.813Z","repository":{"id":283956033,"uuid":"953393138","full_name":"iawooo/ctt","owner":"iawooo","description":"这是一个基于Cloudflare实现的Telegram消息转发机器人，专注于将用户消息安全、高效地转发到后台群组每个用户独立群组中的分话题，直接话题中发送信息而无需再艾特回复，适用于客服、社区管理等场景。","archived":false,"fork":false,"pushed_at":"2025-04-27T14:06:26.000Z","size":2142,"stargazers_count":73,"open_issues_count":3,"forks_count":43,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-27T15:19:01.734Z","etag":null,"topics":["cf","cfteletrans","cloudflare","cloudflare-d1","cloudflare-pages","cloudflare-worker","cloudflare-workers","ctt","telegram","telegram-bot","telegram-bots","telegrambot","transfer-files","transfer-learning","transferlearning","transfers"],"latest_commit_sha":null,"homepage":"https://www.nodeseek.com/post-298304-1","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iawooo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-23T09:00:19.000Z","updated_at":"2025-04-27T14:06:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"e277aea3-a986-4db0-99e6-106359693138","html_url":"https://github.com/iawooo/ctt","commit_stats":null,"previous_names":["iawooo/ctt"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iawooo%2Fctt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iawooo%2Fctt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iawooo%2Fctt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iawooo%2Fctt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iawooo","download_url":"https://codeload.github.com/iawooo/ctt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252811188,"owners_count":21807905,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cf","cfteletrans","cloudflare","cloudflare-d1","cloudflare-pages","cloudflare-worker","cloudflare-workers","ctt","telegram","telegram-bot","telegram-bots","telegrambot","transfer-files","transfer-learning","transferlearning","transfers"],"created_at":"2025-03-31T06:16:56.774Z","updated_at":"2025-05-07T04:22:53.802Z","avatar_url":"https://github.com/iawooo.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CFTeleTrans (CTT) - Telegram消息转发分组对话机器人（基于Cloudflare）\n\n这是一个基于Cloudflare Workers实现的Telegram消息转发分组对话机器人，代号 **CFTeleTrans (CTT)**，专注于将用户消息安全、高效地转发到后台群组，同时充分利用Cloudflare的免费额度（榨干CF大善人！）。该机器人支持用户验证、消息转发、频率限制、管理员管理等功能，适用于客服、社区管理等场景。\n## 04.16更新：修复bug，去除话题前缀（建议更新）\n- **特别感谢 [VTEXS](https://vtexs.com/) 赞助本项目，感谢 [VTEXS](https://vtexs.com/)为开源社区提供算力支持！**\n- [![image](iframe组件截图图片链接)](https://yxvm.com/)\n[NodeSupport](https://github.com/NodeSeekDev/NodeSupport)赞助了本项目\n## 项目截图\n\n以下是 CFTeleTrans 项目的截图： \n\n![CFTeleTrans 截图](https://tc-212.pages.dev/1743001600418.png)\n\n## 特点与亮点\n\n1. **充分利用Cloudflare免费额度（榨干CF大善人！）**  \n   - **CFTeleTrans (CTT)** 完全基于Cloudflare Workers部署，利用其免费额度（每天10万次请求，50次/分钟）实现高性能、低成本的机器人运行。\n   - **使用Cloudflare D1存储用户状态和数据，免费额度（每天10万次读/写）足以支持中小规模用户群。**\n   - 避免用别人的，受他人控制，（避免了突然植入广告，触不及防）该项目完全开源自己所有，可以自由修改代码的机器人\n   - 零成本运行，适合个人开发者或小型团队，真正做到“榨干CF大善人”的免费资源！\n\n2. **分组对话消息管理**  \n   - 用户消息自动转发到后台群组的子论坛，别人私聊你机器人就如同添加了你好友，。\n   - 群聊可多个号回复用户（只需将你的号拉进群并设置管理）\n   - 置顶消息显示用户信息（昵称、用户名、UserID、发起时间）及通知内容\n   - 每个用户独立一个分组，随时随地想聊就聊！\n  \n3. **高效的用户验证机制**  \n   - 支持按钮式验证码验证（简单数学题），防止机器人刷消息。\n   - 验证状态持久化（1小时有效期），用户验证通过后无需重复验证，除非触发频率限制。\n   - 删除聊天记录后重新开始，验证码会自动触发，确保用户体验流畅。\n\n4. **消息频率限制（防刷保护）**  \n   - 默认每分钟40条消息上限（可通过环境变量调整），超过限制的用户需重新验证。\n   - 有效防止恶意刷消息，保护后台群组和cf免费额度。\n\n5. **管理员功能**  \n   - 支持管理员命令：`/block`（拉黑用户）、`/unblock`（解除拉黑）、`/checkblock`（检查用户是否在黑名单）。\n   - 管理员可通过后台群组直接回复用户消息，消息会转发到用户私聊。\n\n6. **轻量级部署**  \n   - 单文件部署（仅需一个`_worker.js`），代码简洁，易于维护。\n   - 支持Cloudflare Workers和Cloudflare Pages部署，部署过程简单。\n\n## 部署教程\n\n### 准备工作\n1. **创建Telegram Bot**：\n   - 在Telegram中找到`@BotFather`，发送`/newbot`创建新机器人。\n   - 按照提示设置机器人名称和用户名，获取Bot Token（例如`123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11`）。\n   - 发送`/setinline`切换内联模式。\n![CFTeleTrans 截图](picture/0903f76329b80fc231893abde40b9ab8.png)\n\n2. **创建后台群组**：\n   - 创建一个Telegram群组（按需设置是否公开），\n   - 群组的“话题功能”打开。\n   - 添加机器人为管理员，建议权限全给（消息管理，话题管理）\n   - 获取群组的Chat ID（例如`-100123456789`），可以通过`@getidsbot`获取（拉它进群）。\n\n### 部署到Cloudflare Workers\n\n#### 步骤 1：创建D1 SQL数据库\n1. 登录[Cloudflare仪表板](https://dash.cloudflare.com/)。\n2. 导航到 **存储和数据库 \u003e D1 SQL数据库**，输入一个名称（例如`cfteletrans-db`），点击 **创建**。\n\n#### 步骤 2：创建Workers项目\n1. 登录[Cloudflare仪表板](https://dash.cloudflare.com/)。\n2. 导航到 **Workers和Pages \u003e Workers和Pages**，点击 **创建**。\n3. 点击 **Hello world**，输入一个名称（例如`cfteletrans`），再点击 **部署**\n\n#### 步骤 3：配置环境变量\n1. 在创建的Workers项目 **设置 \u003e 变量和机密** 中，添加以下变量：\n- `BOT_TOKEN_ENV`：您的Telegram Bot Token（例如`123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11`）。\n- `GROUP_ID_ENV`：后台群组的Chat ID（例如`-100123456789`）。\n- `MAX_MESSAGES_PER_MINUTE_ENV`：消息频率限制（例如`40`）。\n\n#### 步骤 4：绑定D1 SQL数据库\n1. 在创建的Workers项目 **设置 \u003e 绑定** 中，绑定数据库：\n- 添加-选择D1数据库\n- 变量名称 `D1`\n- D1 数据库 选择刚建的数据库（例如`cfteletrans-db`），\n- 点击 **编辑代码**，把原来的代码用本项目中的_worker.js代码替换后部署\n\n#### 步骤 5：测试\n1. 在Telegram中找到您的机器人，发送`/start`。\n2. 确认收到“你好，欢迎使用私聊机器人！”并触发验证码。\n3. 完成验证，确认收到合并消息，例如：\n4. 发送消息，确认消息转发到后台群组的子论坛。\n\n\n## 需要在 Cloudflare 绑定的变量表\n\n以下是项目中需要在 Cloudflare 环境中绑定的变量及其说明：\n\n| **变量名**                  | **类型**   | **描述**                                                                 | **默认值/示例**            |\n|-----------------------------|------------|--------------------------------------------------------------------------|----------------------------|\n| `BOT_TOKEN_ENV`            | 环境变量   | Telegram Bot 的 Token，用于与 Telegram API 通信。                        | `your-telegram-bot-token`  |\n| `GROUP_ID_ENV`             | 环境变量   | Telegram 群组的 ID，用于消息转发和客服回复。                             | `-123456789`               |\n| `MAX_MESSAGES_PER_MINUTE_ENV` | 环境变量 | 每分钟允许的最大消息数，用于限制用户发送频率。                           | `40`                       |\n| `D1`                       | D1 绑定    | Cloudflare D1 数据库绑定，用于存储用户状态、消息频率和群组映射。         | `cfteletrans-db`           |\n\n\n### 部署到Cloudflare pages\n\n#### **fork本项目**！！！\n\n#### 步骤 1：创建pages项目\n1. 登录[Cloudflare仪表板](https://dash.cloudflare.com/)。\n2. 导航到 **Workers和Pages \u003e Workers和Pages**，选择pages，点击 **创建**。\n3. 连接GitHub部署（或者下载本项目zip部署）\n\n#### 步骤 2：填写变量后重试部署\n![变量截图](picture/30d4b767f1c9a050999b8642f164c90c.png)\n\n\n## 灵感来源\n本项目的灵感来源于 Telegram-interactive-bot(部署在服务器)\n\n- [Telegram-interactive-bot](https://github.com/MiHaKun/Telegram-interactive-bot)\n\n## 参考文献\n\n在开发过程中，以下资源提供了宝贵的参考和指导：\n\n- [NodeSeek 帖子](https://www.nodeseek.com/post-237769-1)\n\n## 致谢\n- 特别感谢 [VTEXS](https://vtexs.com/) 赞助本项目，感谢 [VTEXS](https://vtexs.com/)为开源社区提供算力支持！\n- 特别感谢 [xAI](https://x.ai/) 提供的支持和灵感，帮助我完成了本项目的开发和优化\n- 特别感谢 [cloud flare](https://www.cloudflare.com/) 大善人\n\n## 贡献\n\n欢迎提交 Issue 或 Pull Request！如果您有任何改进建议或新功能需求，请随时联系我。\n\n![Star 增长趋势](https://raw.githubusercontent.com/iawooo/StarCharts/refs/heads/main/images/ctt_star_chart.png)\n\n## 许可证\n\n本项目采用 MIT 许可证，详情请见 [LICENSE](LICENSE) 文件。\n\n## 声明\n\n- **尊重原创，转载须知**  \n  如需转载，请务必注明出处，感谢支持！严禁将本项目用于任何违法犯罪行为。  \n- **二次修改与发布**  \n  欢迎基于本项目进行二次开发，但请在发布时注明原始出处，共同维护开源社区的良好氛围。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiawooo%2Fctt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiawooo%2Fctt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiawooo%2Fctt/lists"}