亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 Discord.js 和 twit 相互集成以在指定頻道上實時 Twitter 提要

如何將 Discord.js 和 twit 相互集成以在指定頻道上實時 Twitter 提要

夢里花落0921 2021-11-18 16:28:15
是否可以用Twit做一個爬蟲,是否也可以在Discord頻道中輸出接收到的數據?目前我已經用兩個模塊制作了一個腳本,它運行良好??刂婆_輸出同時適用于 Discord.js 和 Twit。我已經輸入了 Discord 的令牌和 Twitter API 的幾個鍵。但我的目標有點復雜。使用 twit,我需要制作一個爬蟲來實時從 twitter 帳戶中爬取推文,而 Discord.js 應該在 Discord 頻道中輸出這些數據。有誰知道如何做到這一點?我嘗試嘗試使用 Twit 的流函數,但無法弄清楚它究竟是如何工作的。它從任何時間跨度抓取隨機推文。我不確定如何配置它。即使我發現我仍然需要將它與 Discord.js 集成
查看完整描述

2 回答

?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

最簡單的方法如下:


const Discord = require('discord.js');

const Twitter = require('twit');

const twitterConf = {

    consumer_key: process.env.TWITTER_CONSUMER_KEY,

    consumer_secret: process.env.TWITTER_CONSUMER_SECRET,

    access_token: process.env.TWITTER_ACCESS_TOKEN_KEY,

    access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET,

  }

const client = new Discord.Client();

const twitterClient = new Twitter(twitterConf);

// Specify destination channel ID below

const dest = '11111111111111111111'; 


// Create a stream to follow tweets

const stream = twitterClient.stream('statuses/filter', {

  follow: '2899773086', // @Every3Minutes, specify whichever Twitter ID you want to follow

});


stream.on('tweet', tweet => {

  const twitterMessage = `${tweet.user.name} (@${tweet.user.screen_name}) tweeted this: https://twitter.com/${tweet.user.screen_name}/status/${tweet.id_str}`

  client.channels.get(dest).send(twitterMessage);

  return false;

});


client.on('ready', () => {

  console.log(`I'm in`);

});


client.login(process.env.DISCORD_TOKEN);

當然,以下假設您在適當的環境變量中指定了 Discord 和 Twitter 密鑰。


注意:默認情況下,流將包含的不僅僅是用戶自己的推文:轉發、回復。您可以使用以下功能輕松過濾它們(不是我的,來源指出):


// SOURCE:

// https://github.com/ttezel/twit/issues/286#issuecomment-236315960

function isReply(tweet) {

  if (tweet.retweeted_status

    || tweet.in_reply_to_status_id

    || tweet.in_reply_to_status_id_str

    || tweet.in_reply_to_user_id

    || tweet.in_reply_to_user_id_str

    || tweet.in_reply_to_screen_name) return true;

  return false;

}

出于測試目的,我在這里使用了@Every3Minutes,因為它每 3 分鐘發送一次推文,這對我的測試非常有用。


查看完整回答
反對 回復 2021-11-18
?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

我會這樣做:

  1. 為您要跟蹤的每個用戶創建一個流。(這可以幫助您定位用戶

  2. 然后將每個鏈接stream.on('tweet'到您的不和諧機器人的響應。


查看完整回答
反對 回復 2021-11-18
  • 2 回答
  • 0 關注
  • 272 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號