使用带有 twitter-api-v2 的 node.js 运行多个流

问题描述 投票:0回答:2

我正在为 discord 设计一个 Twitter 集成,并通过调用搜索最近的推文遇到了速率限制问题。我正在研究流媒体但无法弄清楚如何流式传输多个用户(在命令中添加)。我目前正在使用这段代码,它对一个用户非常有用,但鉴于每个流的规则都存在,我看不出有一种方法可以轻松地运行单独的实例:

const { ETwitterStreamEvent, TweetStream, TwitterApi, ETwitterApiError } = require('twitter-api-v2');

const client = new TwitterApi(process.env["BEARER_TOKEN"]);

async function startStream(userName){
  const stream = await client.v2.searchStream();
  await client.v2.updateStreamRules({
  add: [
    { value: `from:${userName}`, tag: userName },
  ],
});
  
  stream.on(
    ETwitterStreamEvent.ConnectionError,
    err => console.log('Connection error!', err),
  );
  
  stream.on(
    ETwitterStreamEvent.ConnectionClosed,
    () => console.log('Connection has been closed.'),
  );
  
  stream.on(
    ETwitterStreamEvent.Data,
    eventData => console.log(eventData),
  );
  
  stream.autoReconnect = true;
}

有没有办法同时为不同的用户运行多个流?

node.js twitter-streaming-api twitter-api-v2
2个回答
0
投票

对于下一个,这里是一个小例子,对我来说很实用。 在“TwitterClient.js”文件中:

    const { TwitterApi } = require('twitter-api-v2');
    const client = new TwitterApi({
      appKey: process.env.TWITTER_KEY,
      appSecret: process.env.TWITTER_SECRET,
      accessToken: process.env.TWITTER_TOKEN_KEY,
      accessSecret: process.env.TWITTER_TOKEN_SECRET,
    });
    const bearer = new TwitterApi(process.env.TWITTER_BEARER_TOKEN);
    const twitterClient = client.readWrite;
    const twitterBearer = bearer.readOnly;
    
    module.exports = { twitterClient, twitterBearer };

启动机器人时,例如在 index.js 或 ready.js 中:

const { ETwitterStreamEvent } = require('twitter-api-v2');
const userName = "<username>";
await client.twitterBearer.v2.updateStreamRules({
   add: [
     { value: `from:${userName}`, tag: userName },
   ], 
});
const stream = await client.twitterBearer.v2.searchStream();
stream.on(
    ETwitterStreamEvent.Data,
    eventData => interactionTwitter.execute(eventData),
);

stream.autoReconnect = true;

-2
投票

添加:[ { 值:

from:${userName}
,标签:用户名}, { 值:
from:${userName2}
,标签:userName2 } ]});

© www.soinside.com 2019 - 2024. All rights reserved.