You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript实现Twitter自动转推#100DaysOfCode功能不生效求排查

TypeScript实现Twitter自动转推Bot故障修复方案

故障核心原因

  • 未对搜索返回的推文列表做非空校验,无匹配结果时直接访问数组第一个元素会抛出异常,中断转推逻辑
  • 未处理重复转推错误,20秒轮询间隔内没有新的带#100DaysOfCode话题推文时,重复转推同一条内容会被Twitter接口拒绝
  • 你使用的twit库依赖Twitter v1.1接口,需确认你的开发者账号已开通v1.1接口的读写权限,新申请的免费层级账号默认仅开放v2接口只读权限,无法调用v1.1的转推接口
  • 需确认./config配置文件中已完整填写API Key、API Secret、Access Token、Access Token Secret四个有效参数,缺项或参数错误会导致请求被拦截
  • 搜索返回的第一条推文可能来自隐私账号、已被删除、或被限制转推,也会导致转推失败

修复后代码

import Twit, { Response } from 'twit';

const Twitter = new Twit(require('./config'));

const mediaArtsSearch: Twit.Params = {
  q: '#100DaysOfCode',
  count: 100,
  // eslint-disable-next-line @typescript-eslint/camelcase
  result_type: 'recent',
};

const retweetLatest = () => {
  Twitter.get('search/tweets', mediaArtsSearch, (error: Error, data: any) => {
    console.log(error, data);
    if (!error) {
      // 新增非空判断,避免无结果时报错
      if (!data.statuses || data.statuses.length === 0) {
        console.log('未找到匹配的推文,本轮跳过');
        return;
      }
      const targetTweet = data.statuses[0];
      // 跳过已被转推、隐私账号的推文
      if (targetTweet?.retweeted || targetTweet?.user?.protected || !targetTweet?.id_str) {
        console.log('当前推文不可转推,本轮跳过');
        return;
      }
      const retweetId = targetTweet.id_str;
      Twitter.post(
        'statuses/retweet/' + retweetId,
        {},
        (error: Error, response: Response) => {
          if (response) {
            console.log(
              '转推成功!可前往账号查看',
            );
          }
          if (error) {
            // 识别重复转推错误
            if ((error as any)?.code === 327) {
              console.log('该推文已被转推过,本轮跳过');
              return;
            }
            console.log('转推接口报错:', error);
          }
        },
      );
    } else {
      console.log('搜索接口报错:', error);
    }
  });
};

retweetLatest();
setInterval(retweetLatest, 1000 * 60); // 建议调整为1分钟轮询,避免触发接口频率限制

内容的提问来源于stack exchange,提问作者Alex.Foster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:18:03