1
Fork 0
mirror of https://github.com/RGBCube/TwitterDiscordWebhook synced 2025-07-27 04:57:44 +00:00
TwitterDiscordWebhook/main.js
2023-01-27 15:19:51 -05:00

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}`)
);