mirror of
https://github.com/RGBCube/TwitterDiscordWebhook
synced 2025-07-27 04:57:44 +00:00
41 lines
1.5 KiB
JavaScript
41 lines
1.5 KiB
JavaScript
import fs from "fs";
|
|
import Twitter from "twit";
|
|
import { Webhook } from "discord-webhook-node";
|
|
|
|
const config = JSON.parse(fs.readFileSync("./config.json"));
|
|
|
|
const dClient = new Webhook(config.discord.webhookUrl);
|
|
dClient.setUsername(config.discord.webhookName);
|
|
dClient.setAvatar(config.discord.webhookAvatar);
|
|
|
|
const tClient = new Twitter({
|
|
consumer_key: config.twitter.apiKey,
|
|
consumer_secret: config.twitter.apiSecret,
|
|
access_token: config.twitter.accessToken,
|
|
access_token_secret: config.twitter.acessSecret,
|
|
});
|
|
|
|
tClient.get("account/verify_credentials", { skip_status: true })
|
|
.catch(err => console.error(`Unable to login due to the following error:\n${err}`))
|
|
|
|
.then(res => console.info(`Logged in as '${res.data.name}'!`));
|
|
|
|
console.info(`Fetching tweets from ID '${config.followingUserId}'.`);
|
|
|
|
tClient.stream("statuses/filter", { follow: config.followingUserId })
|
|
.on("tweet", twt => {
|
|
if (twt.retweeted_status || twt.in_reply_to_status_id || twt.is_quote_status) return;
|
|
|
|
let twitterLink = `https://twitter.com/${twt.user.screen_name}/status/${twt.id_str}`;
|
|
dClient.send(`${config.discord.webhookMessage} ${twitterLink}`);
|
|
})
|
|
|
|
.on("connected", () => console.info("Connected to Twitter!"))
|
|
|
|
.on("disconnect", () => console.warn("Disconnected from Twitter!"))
|
|
|
|
.on("reconnect", () => console.info("Reconnected to Twitter!"));
|
|
|
|
process.on("uncaughtException", err =>
|
|
console.error(`Something (bad) happened:\n${err}`)
|
|
);
|