Skip to content

Instantly share code, notes, and snippets.

@chtzvt
Last active January 27, 2018 10:52
Show Gist options
  • Save chtzvt/1133ccdd685515912f476a766f9ee49e to your computer and use it in GitHub Desktop.
Save chtzvt/1133ccdd685515912f476a766f9ee49e to your computer and use it in GitHub Desktop.
Let cleverbot.io manage your Twitter DMs for you
var CONFIG = {
BOT_NAME: ' ',
TWITTER_API_KEYS: {
consumer_key: ' ',
consumer_secret: ' ',
access_token: ' ',
access_token_secret: ' ',
},
CLEVERBOTIO_API_USER: ' ',
CLEVERBOTIO_API_KEY: ' ',
CLEVERBOTIO_NICK: 'none',
ONLY_USERS: ["*"], // List of users to send shit meme responses to. Default is ANY.
getResponseTime: function(){
return Math.floor((Math.random() * 5) + 1) * 60000;
}
};
var Twit = require('twit');
var cleverbot = require('cleverbot.io');
var T = new Twit(CONFIG.TWITTER_API_KEYS);
var stream = T.stream('user', {
stringify_friend_ids: true
});
var bot = new cleverbot(CONFIG.CLEVERBOTIO_API_USER, CONFIG.CLEVERBOTIO_API_KEY);
if(CONFIG.CLEVERBOTIO_NICK !== 'none')
bot.setNick(CONFIG.CLEVERBOTIO_NICK);
stream.on('direct_message', function(directMsg) {
//Never reply to self.
if (directMsg.direct_message.sender.screen_name == CONFIG.BOT_NAME)
return;
if(CONFIG.ONLY_USERS.indexOf('*') || CONFIG.ONLY_USERS.indexOf(directMsg.direct_message.sender.screen_name) && directMsg.direct_message.text.length > 0)
setTimeout(function(){ getBotResponse(directMsg.direct_message.sender.screen_name, directMsg.direct_message.text, sendResponse)}, CONFIG.getResponseTime());
});
function getBotResponse(user, text, callback) {
bot.ask(text, function (err, response) {
if (err)
console.info('SHITMEMEBOT_DEBUG: ' + JSON.stringify(err));
callback(user, response);
}.bind({user:user, text:text, callback:callback}));
}
function sendResponse(user, link) {
var params = {
screen_name: user,
text: link
};
T.post('direct_messages/new', params, function(err, data, response) {
if (err)
console.info('SHITMEMEBOT_DEBUG: ' + JSON.stringify(err));
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment