很多用户想将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 Key和 API Key Secret,以及 Bearer Token。同样立即复制保存。
5. 额外生成 Access Token和 Access Token Secret(如果推送需要读取私密推文或发推,否则可跳过)。
注意事项/小提示:
- Twitter开发者审核可能需要几分钟到几小时,请耐心等待。
- 免费套餐有 每15分钟150个请求的限制,个人使用完全足够。
- 所有密钥和Token不要明文存储在公开代码或配置文件中。
备用方案:
- 如果无法申请Twitter开发者账号,可考虑使用第三方抓取服务(如 RSSHub将Twitter转为RSS,再通过Telegram RSS Bot推送),但实时性和稳定性较差。
- 另一种备选是使用 nitter.net的公开实例抓取推文,但可能受反爬限制。
选择并部署机器人服务:使用开源项目或托管平台
有了两边的API密钥后,你需要一个程序来连接Twitter和Telegram。这里推荐使用开源项目 Twitter-to-Telegram或 twit2tele,部署在 Railway或 Heroku等免费云平台上。
具体操作说明:
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),搜索 success或 error关键字,确认请求是否被正确处理。
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,不带图的纯文本推文会被忽略。 - 修改环境变量后,务必等待重新部署完成,否则旧配置仍生效。
备用方案:
- 如果项目不支持关键词过滤,可以使用 n8n或 Zapier等自动化工具搭建更复杂的流程。
- 也可以自己编写一个简单的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的自动推文推送,全程无需编写代码。