Bot that makes demands for gods appropriately.
JavaScript Makefile
Switch branches/tags
Nothing to show
Clone or download
Permalink
Failed to load latest commit information.
admin Updated to use psy to supervise chronicler and exhortations processes. May 29, 2015
data Removed data/spam-users.json from git. Sep 12, 2015
logs Updated to use psy to supervise chronicler and exhortations processes. May 29, 2015
tests Add do not respond integration test. Jun 6, 2018
tools Lint. Nov 16, 2016
.eslintignore Lint. Nov 16, 2016
.eslintrc.js Prettier. Jan 25, 2018
.gitignore Removed data/spam-users.json from git. Sep 12, 2015
Makefile Prettier. Jan 25, 2018
README.md Warning about level-cache-server version. Aug 3, 2015
analyze-tweet-images.js Prettier. Jan 25, 2018
behaviorsettings.js Vision back on. Jun 1, 2018
convert-topics-keys-to-new-format.js Prettier. Jan 25, 2018
exhortationserver.js Prettier. Jan 25, 2018
exhorter.js Prettier. Jan 25, 2018
figurepicker.js Prettier. Jan 25, 2018
get-image-analysis.js Prettier. Jan 25, 2018
get-w2v-neighbors.js Prettier. Jan 25, 2018
godtributes.service Move servers again. Switch to rsync for deployment. May 25, 2016
handletwittererror.js Prettier. Jan 25, 2018
is-verb.js Prettier. Jan 25, 2018
logger.js Prettier. Jan 25, 2018
maketribute.js Add footer to archive. Jan 31, 2018
mutualize-follower-list.js Prettier. Jan 25, 2018
package-lock.json Updated iscool and can-i-chime-in. Jun 23, 2018
package.json Updated iscool and can-i-chime-in. Jun 23, 2018
pick-thanks-topic.js Add patrons. Fix secondary topic pool for general thanks to vision st… Jun 28, 2016
prepphrasepicker.js Prettier. Jan 25, 2018
relevant-related-word-types.js Started thanks.js. Factored out relevant-related-word-types. Jun 27, 2016
thanks.js Prettier. Jan 25, 2018
topicpool.js Prettier. Jan 25, 2018
translator.js Prettier. Jan 25, 2018
tributedemander.js Prettier. Jan 25, 2018

README.md

godtributes

This is the source for @godtributes, a Twitter bot that posts tweets in the format:

SOMETHING FOR THE SOMETHING GOD

It will also occasionally reply to followers in the same way, using words they've said.

It runs on Node and uses the excellent twit module to interact with Twitter.

Warning: For now, it depends on the stable branch of level-cache-server running on the machine and will have problems with master.

Installation

git clone git@github.com:jimkang/godtributes.git
npm install

Then, create a config.js file in the project root that contains your Twitter API keys and your Wordnik API key. Example:

module.exports = {
  twitter: {
    consumer_key: 'asdfkljqwerjasdfalpsdfjas',
    consumer_secret: 'asdfasdjfbkjqwhbefubvskjhfbgasdjfhgaksjdhfgaksdxvc',
    access_token: '9999999999-zxcvkljhpoiuqwerkjhmnb,mnzxcvasdklfhwer',
    access_token_secret: 'opoijkljsadfbzxcnvkmokwertlknfgmoskdfgossodrh'
  },
  wordnikAPIKey: 'mkomniojnnuibiybvuytvutrctrxezewarewetxyfcftvuhbg'
};

Set up an instance of level-cache-server in a parallel directory.

Optionally, set up a cron job for run maketributes.js and/or exhort.js periodically.

Usage

To post a tribute ([something] FOR THE [something] GOD) tweet, run the commmand:

node maketribute.js

To make a tribute and print it to the console, but not post it:

node maketribute.js --simulate

To make tribute replies to followers:

node exhort.js

To make tributes for followers and print them to the console, but not post them:

node exhort.js --simulate

Blacklisting

godtributes now uses iscool's blacklists. If you'd like to add to them, make an issue or PR there.

Tests

Run tests with make test.

Structure

maketribute.js is the script that makes tributes. It uses wordniksource to get topics for the tributes, figurepicker for the figures of the tributes, and tributedemander to construct the tributes.

wordniksource is an adapter for the Wordnik API. It makes calls to Wordnik to get random words, find word frequencies, and get parts of speech.

tributedemander puts together the "[something] FOR THE [something]" strings. It uses canonicalizer to get the proper forms of the topic and figure words involved.

canonicalizer figures out if a word is singular, plural, or possessive (largely using the inflection module), then generates non-possessive singular and plural forms.

figurepicker rolls on a RPG-style table to generate figures for tribute. The main tribute figure has a 75% chance of being 'GOD'.

exhort.js is the script that gets the followers of @godtributes, decides whether to tweet at them, then comes up with a tribute to tweet at them. It uses all of the above modules, plus nounfinder to find interesting nouns within a follower's tweet and chronicler to keep track of what it's already done.

nounfinder uses a few internal rules and wordniksource for parts of speech and frequency to decide what words are interesting nouns.

chronicler uses a LevelDB database (via basicset-levelwrap) to track which tweets have been replied to and when a user was last replied to.

License

MIT.