2 回答

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 分鐘發送一次推文,這對我的測試非常有用。

TA貢獻1884條經驗 獲得超4個贊
添加回答
舉報