很多用户想将Twitter上的特定账号推文或关键词搜索结果,自动转发到Telegram频道或群组中,以便实时获取信息。但在实际操作中,新手常遇到找不到合适的Bot、配置失败、推送中断或无法自定义筛选条件等问题。本文将手把手教你如何搭建一个稳定可用的Twitter Telegram Bot,实现推文自动推送。

准备工作:注册Telegram Bot并获取Token

在开始配置推送前,你需要先拥有一个Telegram Bot的API Token,这是连接所有服务的钥匙。

具体操作说明:

1. 打开Telegram,搜索 @BotFather并进入对话框。

2. 发送 /newbot命令,按提示为你的Bot命名(例如“Twitter推送助手”)。

3. 再设置一个以 _bot结尾的用户名(例如 MyTwitterPushBot)。

4. 创建成功后,BotFather会返回一段类似 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11的字符串,这就是你的 API Token,请立即复制并妥善保存。

5. 将你的Bot添加到目标频道或群组中,并赋予它 发送消息的权限。

注意事项/小提示:

  • Token 一旦泄露,他人即可控制你的Bot,务必保密。
  • 建议将Bot设为频道管理员,否则无法发送消息。
  • 如果忘记Token,可以在BotFather中发送 /mybots,选择你的Bot,再点 API Token即可查看。

备用方案:

  • 如果无法访问BotFather,可尝试使用第三方Bot管理工具(不推荐,有安全风险)。
  • 对于群组,需要先将Bot拉入群组,然后在群组中发送 /start命令激活Bot。

获取Twitter API密钥:申请开发者账号并创建应用

Bot需要访问Twitter的实时数据,因此必须拥有Twitter开发者账号并创建应用以获取API密钥。

具体操作说明:

1. 访问 Twitter Developer Portal(developer.twitter.com),使用你的Twitter账号登录。

2. 点击 Create Project,填写项目名称和用途描述(如“个人推送服务”),选择 Essential免费套餐(足够个人使用)。

3. 在项目内点击 Create App,为你的应用命名(如“MyTwitterBot”)。

4. 创建成功后,进入 Keys and Tokens页面,你会看到 API KeyAPI Key Secret,以及 Bearer Token。同样立即复制保存。

5. 额外生成 Access TokenAccess Token Secret(如果推送需要读取私密推文或发推,否则可跳过)。

注意事项/小提示:

  • Twitter开发者审核可能需要几分钟到几小时,请耐心等待。
  • 免费套餐有 每15分钟150个请求的限制,个人使用完全足够。
  • 所有密钥和Token不要明文存储在公开代码或配置文件中。

备用方案:

  • 如果无法申请Twitter开发者账号,可考虑使用第三方抓取服务(如 RSSHub将Twitter转为RSS,再通过Telegram RSS Bot推送),但实时性和稳定性较差。
  • 另一种备选是使用 nitter.net的公开实例抓取推文,但可能受反爬限制。

选择并部署机器人服务:使用开源项目或托管平台

有了两边的API密钥后,你需要一个程序来连接Twitter和Telegram。这里推荐使用开源项目 Twitter-to-Telegramtwit2tele,部署在 RailwayHeroku等免费云平台上。

具体操作说明:

1. 打开GitHub,搜索 twitter-to-telegram,选择一个Star数高、最近有更新的项目(如 Rongronggg9/RSS-to-Telegram也支持Twitter)。

2. 点击 Fork将项目复制到你的GitHub账户下。

3. 注册 Railway.app(免费额度足够个人使用),点击 New Project,选择 Deploy from GitHub repo,授权并选择你Fork的项目。

4. 在Railway的 Variables中添加环境变量:

- TELEGRAM_BOT_TOKEN:填入第一步的Bot Token。

- TWITTER_BEARER_TOKEN:填入第二步的Bearer Token。

- CHAT_ID:填入你的Telegram频道或群组ID(获取方法:将Bot加入群组后,发送 /id命令,Bot会回复一串数字)。

- TWITTER_USERNAMES:填入你想监控的Twitter用户名(多个用逗号隔开,如 elonmusk,NASA)。

5. 点击 Deploy,等待部署完成,查看日志确认无报错。

注意事项/小提示:

  • 不同项目的环境变量名称可能不同,请仔细阅读项目 README文档。
  • 如果使用Heroku,需绑定信用卡验证身份,但不会收费。
  • 部署后建议先监控一个活跃账号测试,确认推送正常再添加更多。

备用方案:

  • 如果你有VPS,可以直接在服务器上运行Docker镜像,如 docker run -e TELEGRAM_BOT_TOKEN=xxx ...
  • 也可以使用 PythonAnywhere等在线IDE运行脚本,但需保持进程常驻。

测试推送功能:验证推文是否成功到达Telegram

部署完成后,必须进行实际测试,确保整个链路畅通。

具体操作说明:

1. 等待5-10分钟(部分项目有缓存或轮询间隔),检查你的Telegram频道或群组是否收到了被监控账号的最新推文。

2. 如果未收到,手动在被监控的Twitter账号上发一条新推文(或使用一个测试小号),观察Bot是否有反应。

3. 查看Railway/Heroku的 日志(Logs),搜索 successerror关键字,确认请求是否被正确处理。

4. 如果日志显示 200 OK但Telegram无消息,检查 CHAT_ID是否正确(注意:频道ID为负值,如 -1001234567890,群组ID通常为正数)。

5. 在Telegram中向你的Bot发送 /start命令,如果Bot回复了,说明Bot本身可用。

注意事项/小提示:

  • 免费平台的部署可能需要几分钟才能生效,请耐心等待。
  • 如果日志显示Twitter API返回 401 Unauthorized,检查Bearer Token是否过期或权限不足。
  • 推文可能因为包含敏感内容或被删除而无法推送,这是正常现象。

备用方案:

  • 如果Bot无任何反应,尝试在Railway中 重新部署(点击 Redeploy),有时环境变量更新后需要重启。
  • 手动在浏览器中访问 https://api.telegram.org/bot<你的Token>/sendMessage?chat_id=<你的ChatID>&text=测试消息,如果Telegram收到,说明Bot和ChatID正常,问题出在Twitter端。

自定义筛选与高级配置:按关键词或内容类型推送

基础推送只能监控所有推文,你可以通过配置实现更精准的筛选,比如只推送包含特定关键词的推文,或只推送图片/视频推文。

具体操作说明:

1. 在Railway的 Variables中添加或修改以下环境变量(以 RSS-to-Telegram为例):

- FILTER_KEYWORDS:填入关键词,多个用逗号隔开(如 AI,比特币,spacex),只有包含这些词的推文才会推送。

- FILTER_IMAGES_ONLY:设为 true则只推送带图片的推文。

- FILTER_RETWEETS:设为 false可过滤掉转发推文。

- MESSAGE_TEMPLATE:自定义推送消息格式(如 {username} 发推了: {text})。

2. 保存变量后,Railway会自动重新部署,等待生效。

3. 检查日志确认新配置已加载(通常会有 Filter keywords: AI,比特币的日志输出)。

4. 发布一条包含关键词的测试推文,验证是否只有匹配的推文被推送。

注意事项/小提示:

  • 关键词过滤是大小写不敏感的,但中文关键词需确保编码正确。
  • 如果设置 FILTER_IMAGES_ONLY,不带图的纯文本推文会被忽略。
  • 修改环境变量后,务必等待重新部署完成,否则旧配置仍生效。

备用方案:

  • 如果项目不支持关键词过滤,可以使用 n8nZapier等自动化工具搭建更复杂的流程。
  • 也可以自己编写一个简单的Python脚本,用 tweepy库监听推文,再用 python-telegram-bot推送,灵活性最高。

常见问题补充

问:Bot推送有延迟怎么办?

答:免费套餐的轮询间隔通常为1-5分钟,无法实时。如果要求秒级推送,需升级Twitter API套餐(付费)或使用Webhook方式。另外,检查项目设置中是否有 POLL_INTERVAL参数,可适当缩短(但不建议低于30秒,以免触发限流)。

问:推送突然停止了,日志显示 429 Too Many Requests

答:说明你的请求频率超过了Twitter API限制。解决方案:1. 减少监控的账号数量;2. 增大轮询间隔;3. 使用 Bearer Token代替用户Token(免费套餐下Bearer Token的限额更高)。如果持续出现,可等待15分钟后自动恢复。

问:如何同时监控多个Twitter账号?

答:在环境变量 TWITTER_USERNAMES中用逗号分隔即可,如 elonmusk,NASA,SpaceX。注意不要超过免费套餐的请求限制,建议不超过10个账号。

问:我想把推文转发到多个Telegram群组怎么办?

答:部分项目支持 CHAT_IDS数组格式,用逗号分隔多个ChatID。如果不支持,可以部署多个Bot实例,每个实例对应一个群组。

总结:

通过获取Telegram Bot Token和Twitter API密钥,部署开源项目到免费云平台,并配置环境变量,即可实现从Twitter到Telegram的自动推文推送,全程无需编写代码。