About This File
An entertaining IRC bot that's easy to extend.
Features:
- Simple real-time administration.
-
Unix fortunes (
fortune
must be present) - Catch-22 quotes
- UrbanDictionary queries
- Wolfram|Alpha queries
- Smart weather queries (Wunderground)
- Google searches
- YouTube searches
- ROT13 message "encryption"
- Magic 8 Ball queries
- Dictionary queries (Merriam-Webster)
- Cleverbot discussions
- Channel 'seen' log
- Link compression (TinyURL)
- ...and much more!
Installation
First, clone the repo and install yossarian-bot
's dependencies:
$ git clone https://github.com/woodruffw/yossarian-bot
$ cd yossarian-bot
$ bundle install
If you get errors during the bundle installation process, make sure that you're using Ruby 2.7 and have Ruby's development headers installed. You may need them from your package manager. Earlier versions of Ruby might work, but are not guaranteed or tested.
yossarian-bot
also requires API keys for several services. Make sure that they are exported to the environment (or set in the configuration) as follows:
-
Wolfram|Alpha -
WOLFRAM_ALPHA_APPID_KEY
-
Weather Underground -
WUNDERGROUND_API_KEY
-
WeatherStack -
WEATHERSTACK_API_KEY
-
Merriam-Webster -
MERRIAM_WEBSTER_API_KEY
-
YouTube (v3) -
YOUTUBE_API_KEY
-
Last.fm -
LASTFM_API_KEY
,LASTFM_API_SECRET
-
Open Exchange Rates -
OEX_API_KEY
-
Giphy -
GIPHY_API_KEY
-
BreweryDB -
BREWERYDB_API_KEY
-
AirQuality -
AIRNOW_API_KEY
-
OMDB -
OMDB_API_KEY
Additionally, the fortune
utility must be present in order for Unix fortunes to work correctly. Some package managers also provide the fortunes
, fortunes-off
, and fortunes-bofh-excuses
packages for additional fortune messages.
Running
Once all dependencies are installed, yossarian-bot
can be run as follows:
$ ruby bot-control.rb start $ # OR: $ ruby yossarian-bot.rb # not run in background
Using Docker
docker build -t yossarian-bot:latest . docker run -v $PWD/config.yml:/config.yml yossarian-bot
Using the bot
Configuration Options
yossarian-bot
is configured via a YAML file named config.yml.
Look at the example config.yml to see a list of optional and required keys.
Commands
There are a bunch of commands that yossarian-bot
accepts. You can see a complete list in the COMMANDS file.
Matches
yossarian-bot
matches all HTTP links and messages the title of the linked HTML page. This feature can be disabled by adding LinkTitling
to the server's disabled_plugins
array in config.yml
.
Messages of the form s/(.+)/(.+)
are also matched, and the first pattern matched is applied to the user's last previous message, with the second match replacing it. For example, a typo like "this is a setnence" can be corrected with s/setnence/sentence
. This feature can be disabled by adding RegexReplace
to the server's disabled_plugins
array in config.yml
.