<commit_before>var Twit = require('twit');

exports = module.exports = {

  run: function () {
    this.twit = new Twit({
      consumer_key:         process.env.TWIT_API_KEY,
      consumer_secret:      process.env.TWIT_API_SECRET,
      access_token:         process.env.TWIT_ACCESS_TOKEN,
      access_token_secret:  process.env.TWIT_ACCESS_TOKEN_SECRET
    });

    this.user = process.env.DONKEY_USER;
    this.list_slug = process.env.DONKEY_LIST_SLUG;

    // let's go
    setInterval(this.publishFriends.bind(this), process.env.TWIT_INTERVAL);
  },

  publishFriends: function () {
    var self = this;
    this.fetchList(function (err, list) {
      err && console.log(err);
      var users = [];
      list && list.forEach(function (user, index) {
        if (Math.floor(Math.random() * list.length) <= index) {
          // randomly ignore some users
          continue;
        }
        users.push('@' + user.screen_name);
      });

      users.length && self.twit.post('status/update', { status: '#ff: ' + users.join(',') }, function (err) {
        err && console.log(err);
        console.log('follow friday done!');
      });
    });
  },

  fetchList: function (next) {
    this.twit.get(
      'lists/members',
      { slug: this.list_slug, owner_screen_name: this.user },
      function (err, data, res) {
        return next(err, data);
      }
    );
  }

};
<commit_msg>Last time I said it works? I was kidding.  Try this.<commit_after>var Twit = require('twit');

exports = module.exports = {

  run: function () {
    this.twit = new Twit({
      consumer_key:         process.env.TWIT_API_KEY,
      consumer_secret:      process.env.TWIT_API_SECRET,
      access_token:         process.env.TWIT_ACCESS_TOKEN,
      access_token_secret:  process.env.TWIT_ACCESS_TOKEN_SECRET
    });

    this.user = process.env.DONKEY_USER;
    this.list_slug = process.env.DONKEY_LIST_SLUG;

    // let's go
    setInterval(this.publishFriends.bind(this), process.env.TWIT_INTERVAL);
  },

  publishFriends: function () {
    var self = this;
    this.fetchList(function (err, list) {
      err && console.log(err);
      var users = [];
      list && list.forEach(function (user, index) {
        if (Math.floor(Math.random() * list.length) <= index) {
          // randomly ignore some users
          return;
        }
        users.push('@' + user.screen_name);
      });

      if (users.length) {
        var statusText = '#ff: ' + users.join(',');
        self.twit.post('status/update', { status: statusText }, function (err) {
          err && console.log(err);
          console.log('follow friday done!');
        });
      }
    });
  },

  fetchList: function (next) {
    this.twit.get(
      'lists/members',
      { slug: this.list_slug, owner_screen_name: this.user },
      function (err, data, res) {
        return next(err, data);
      }
    );
  }

};

{'fraction_non_alphanumeric': 0.14518364518364518, 'fraction_numerical': 0.0, 'mean_word_length': 2.3337182448036953, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4456707', 'n_tokens_mistral': 975, 'n_tokens_neox': 951, 'n_words': 176}