Skip to content

Instantly share code, notes, and snippets.

@qawemlilo
Last active March 19, 2018 08:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save qawemlilo/1a42af9eceaa05a0c09c108461a5b866 to your computer and use it in GitHub Desktop.
Save qawemlilo/1a42af9eceaa05a0c09c108461a5b866 to your computer and use it in GitHub Desktop.
Building a twitter bot for posting the latest package releases on Github
"use strict";
const Twitter = require('twit');
const axios = require('axios');
const moment = require('moment');
const config = require('../.env');
const client = new Twitter({
consumer_key: config.TWITTER_BOT_KEY,
consumer_secret: config.TWITTER_BOT_SECRET,
access_token: config.TWITTER_BOT_TOKEN_KEY,
access_token_secret: config.TWITTER_BOT_TOKEN_SECRET
});
console.log();
console.log(' > Checking for new packages releases');
console.log();
async function findAndTweetNewReleases(name, url) {
try {
let res = await axios.get(url);
let releases = res.data;
if (releases && releases.length) {
releases.forEach(function (release) {
let hoursAgo = moment().diff(moment(release.published_at), 'hours');
if (hoursAgo < 24) {
let tweet = `New #${name} release: ${release.tag_name} - ${release.html_url}`;
tweeterClient.post('statuses/update', { status: tweet }, function(err, data, response) {
if (error) {
console.error(error)
}
});
}
});
}
}
catch (error) {
console.error(error);
}
}
// nodejs
findAndTweetNewReleases('nodejs', 'https://api.github.com/repos/nodejs/node/releases');
// express
findAndTweetNewReleases('express', 'https://api.github.com/repos/expressjs/express/releases');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment