你希望将Twitter(推特)上的特定账号推文、关键词搜索结果或自己的推文自动转发到Telegram频道或群组中,以便实时追踪信息。很多新手在搭建TwitterTelegramBot时,会遇到API申请失败、Bot Token获取错误、转发规则不生效等问题。本文将手把手教你完成从准备工作到最终测试的全流程,并附上常见故障的备用处理方案。

准备工作:注册并获取必要的API密钥

具体操作说明:

首先,你需要拥有一个Twitter开发者账号。访问 developer.twitter.com,使用你的Twitter账号登录。点击 “Create Project”创建一个新项目(免费版即可),填写项目名称和用途描述(例如“个人推文转发”)。创建完成后,在项目仪表盘内点击 “Keys and Tokens”标签页,生成 API KeyAPI Key SecretBearer Token(建议使用Bearer Token进行读取操作)。同时,在 “Authentication Tokens”下生成 Access TokenAccess Token Secret(权限等级选择 Read即可,无需写权限)。将这些密钥复制并保存在安全位置。

注意事项/小提示:

  • 免费版Twitter API有每月50万条推文的读取限制,个人使用完全足够。
  • 密钥一旦生成后,关闭页面就无法再次查看完整Secret,务必立即保存。
  • 确保你的Twitter账号没有开启双重验证(2FA),否则部分Token生成会失败。

备用方案:

  • 如果无法创建Twitter开发者项目,可以尝试使用第三方代理服务(如 ntfy.sh的Twitter桥接),但稳定性较差。
  • 若已有其他Twitter API代理,可直接使用其提供的代理URL代替官方API地址。

创建Telegram Bot并获取Token

具体操作说明:

打开Telegram,搜索 @BotFather(官方机器人创建助手)。点击 /start开始对话,然后输入 /newbot。按照提示为你的Bot设置一个名称(如“My Twitter Forwarder”)和一个用户名(必须以 bot结尾,例如 MyTwitterForwarderBot)。创建成功后,BotFather会返回一条消息,包含你的Bot Token,格式类似 1234567890:ABCdefGHIjklmNOPqrStuVWXyz。复制该Token,并妥善保存。接着,创建一个Telegram频道或群组,将你的Bot添加为管理员(至少给予 发送消息权限)。

注意事项/小提示:

  • Bot Token是机器人的唯一凭证,泄露后他人可控制你的机器人,切勿分享到公开场合。
  • 创建频道时,建议将频道设为 公开(方便后续获取频道ID),或使用 @getidsbot获取私密频道的数字ID。

备用方案:

  • 如果你忘记了Token,可以重新对 @BotFather输入 /mybots,选择你的Bot,点击 API Token查看或重置。
  • 若无法创建Bot,可尝试使用第三方Telegram Bot托管服务(如 BotHost),但需注意数据隐私。

获取Telegram频道或群组的Chat ID

具体操作说明:

将你的Bot添加到目标频道或群组后,需要获取该对话的唯一ID。方法一:向你的Bot发送任意一条消息(如 /start),然后访问以下URL(替换 YOUR_BOT_TOKEN):https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates。在返回的JSON数据中,查找 “chat”: {“id”: -1001234567890}字段,其中的数字就是Chat ID(频道ID通常以 -100开头)。方法二:使用 @getidsbot机器人,将其拉入频道或群组,它会直接回复当前对话的ID。

注意事项/小提示:

  • 如果 getUpdates返回空数据,说明Bot没有收到任何消息。可以再次向Bot发送 /start或任何文字,然后刷新URL。
  • 频道ID为负数,群组ID也可能为负数,复制时请包含负号。

备用方案:

  • 对于私密频道,无法通过 getUpdates获取ID时,可以临时将频道改为公开,获取ID后再改回私密。
  • 也可以使用编程方式(如Python脚本)调用Telegram API获取更新。

编写或部署TwitterTelegramBot脚本

具体操作说明:

这里以最常用的Python脚本为例。在你的服务器或本地电脑上安装Python 3.8+和必要的库:pip install tweepy requests schedule。创建一个新文件 bot.py,写入以下核心逻辑:使用 tweepy库连接Twitter API,通过 requests库向Telegram Bot API发送消息。关键代码段如下:

`python

import tweepy

import requests

# 填入你的密钥

consumer_key = "YOUR_API_KEY"

consumer_secret = "YOUR_API_KEY_SECRET"

access_token = "YOUR_ACCESS_TOKEN"

access_token_secret = "YOUR_ACCESS_TOKEN_SECRET"

bearer_token = "YOUR_BEARER_TOKEN"

bot_token = "YOUR_BOT_TOKEN"

chat_id = "YOUR_CHAT_ID"

# 初始化Twitter客户端

client = tweepy.Client(bearer_token)

# 获取用户时间线(示例:转发自己的最新推文)

user_id = client.get_user(username="你的推特用户名").data.id

tweets = client.get_users_tweets(id=user_id, max_results=5)

# 发送到Telegram

for tweet in tweets.data:

message = f"新推文:{tweet.text}\n链接:https://twitter.com/user/status/{tweet.id}"

url = f"https://api.telegram.org/bot{bot_token}/sendMessage"

requests.post(url, json={"chat_id": chat_id, "text": message})

`

保存后,在终端运行 python bot.py测试是否成功发送。

注意事项/小提示:

  • 如果使用 schedule库实现定时检查(如每10分钟一次),需在脚本中加入循环和睡眠逻辑,避免频繁请求导致API限流。
  • 免费版Twitter API的搜索功能有限,建议使用 get_users_tweetsget_users_mentions等已有端点。

备用方案:

  • 如果你不熟悉编程,可以使用现成的开源项目(如 Twitter-to-Telegram的Docker镜像),直接拉取并配置环境变量。
  • 也可以使用 n8nZapier等无代码自动化平台,连接Twitter和Telegram,但需要付费订阅。

测试转发功能并验证结果

具体操作说明:

运行脚本后,立即在Twitter上发布一条新推文(或等待定时触发)。然后打开你的Telegram频道或群组,查看是否出现对应的消息。如果成功,消息应包含推文文本和跳转链接。同时,检查脚本的控制台输出,确认没有报错。如果使用定时任务,建议设置 每5分钟检查一次,并在第一次测试时手动缩短间隔。

注意事项/小提示:

  • 首次测试时,建议只转发自己的推文,避免触发Twitter的垃圾信息检测。
  • 如果消息未出现,检查Telegram Bot是否被群组封禁,或Chat ID是否正确(尤其是负数ID是否包含负号)。

备用方案:

  • 若Telegram消息发送失败,尝试手动通过浏览器访问 https://api.telegram.org/botYOUR_BOT_TOKEN/sendMessage?chat_id=YOUR_CHAT_ID&text=Test验证Token和ID是否有效。
  • 若Twitter API返回错误(如429限流),等待15分钟后再试,并考虑减少请求频率。

设置自动运行(服务器或云函数)

具体操作说明:

为了让Bot持续运行,你需要将其部署到一台长期在线的服务器或云函数上。推荐使用 PythonAnywhere(免费版每天可运行一个任务)或 Vercel(使用Serverless函数)。以PythonAnywhere为例:上传脚本后,在 Tasks页面创建一个定时任务,例如 python3 /home/你的用户名/bot.py,并设置运行间隔(如每10分钟)。保存后,任务会自动执行。

注意事项/小提示:

  • 免费服务器通常有CPU和内存限制,避免同时运行多个Bot实例。
  • 如果使用云函数(如AWS Lambda),需将脚本打包成无状态函数,并通过事件触发器调用。

备用方案:

  • 如果你有家用电脑,可以使用 Windows任务计划程序crontab实现定时运行,但需保持电脑开机。
  • 也可使用 Replit的Always-on功能(需付费),或 Heroku(已停止免费套餐,可考虑Railway.app等替代)。

常见问题补充

问:Bot无法获取Twitter用户的时间线,提示“Not authorized”?

答:请检查你在Twitter开发者项目中生成的 Bearer Token是否具有读取用户时间线的权限。在开发者后台的 “Keys and Tokens”页面,确保 “App permissions”设置为 “Read”或更高。如果问题依旧,尝试重新生成Bearer Token。

问:Telegram消息发送成功,但推文链接打不开?

答:检查推文链接格式是否正确。标准格式为 https://twitter.com/用户名/status/推文ID。如果推文ID获取错误,请查阅tweepy文档中 tweet.id的字段名(某些版本可能为 tweet.id_str)。

问:Bot运行一段时间后停止转发新推文?

答:这通常是因为Twitter API的 限流Token过期。登录Twitter开发者后台,查看 “Usage”页面确认是否超出免费额度。如果Token过期,重新生成Access Token并更新脚本。同时,确保Bot没有被Telegram封禁(向Bot发送 /start检查是否有回复)。

问:如何只转发包含特定关键词的推文?

答:使用Twitter API的 搜索端点search_recent_tweets,传入查询参数(如 “比特币”)。在脚本中过滤推文文本,仅当包含关键词时才调用Telegram API发送。注意免费版搜索仅限于最近7天的推文。

总结:

通过获取Twitter和Telegram的API密钥、编写转发脚本并部署到服务器,即可实现推文自动转发到Telegram,关键在于密钥安全、ID准确和限流管理。