Skip to content
A modular IRC bot with Web interface
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets
data
plugins
.gitignore
.ruby-gemset
.ruby-version
Gemfile
Gemfile.lock
LICENSE.txt
README.md
catabot.rb
example.yaml

README.md

CopperTube catabot

A plugin-based IRC bot framework that also provides easy Web interfaces and periodic code execution. Written in Ruby on top of Cinch (for IRC) and Eldr (for Web). Comes with a number of useful and configurable plugins.

Current status: works great

README is outdated as of 2018-08-30, we have more plugins now!

Configuration is done via a single YAML file, see example.yaml.

Requires at least modern Ruby, a bunch of GEMs (see Gemfile) and some database (SQLite will do too). Exact dependencies depend on which plugins you want to use.

Plugin showcase

  • Base
    • Basic infrastructure for other plugins
    • Common help system and bot-wide commands
  • Clock
    • Show current time in different timezones/places
    • Also convert (date) times between timezones/places
  • Seen
    • Show last time the bot has seen a nick
    • Supports wildcards
  • Memo
    • Take notes for nicks not currently present
    • Per-channel public memos and global privmsg memos
    • Wildcarded nick matching, so John_ will get the message for John
  • Links
    • Gather links posted to channels
    • Includes link checking to provided page title where possible
    • Has a web page for recent links with channel filtering
  • Logger
    • Create time-based links to a web IRC log frontend
    • Per-channel snippets, fully configurable target link formatting
    • Example log browser that works well with this: ChatLogger
  • Facts
    • Per-channel facts database with public adding and voting
    • Think of it as a simple keyword-based micro Wiki
    • Has web pages for searching per-channel and a global recent facts page
  • Rules
    • Very similar to Facts above, but no keywords and you ask for a random rule
    • Quite useful e.g. for roguelike self-imposed challenges
  • GitHub
    • Quick IRC interface to a GitHub repository
    • Includes full-blown issue/pr search interface via IRC
    • Show recently merged, pending, link, details...
  • Jenkins
    • Quick IRC interface to a Jenkins instance
    • Show last builds, particular build details...
  • Jq
    • Run jq queries on some data directory
    • Results shown via web interface

Most plugins adapt their output based on if asked on channel vs. via a privmsg.

Here's just a sample:

< user> help *
<  bot> version - Tells you the version
<  bot> plugins - Tells you what plugins are loaded
<  bot> source - Gives you the link to my source code
<  bot> uptime - Tells you bot uptime stats
<  bot> help - Tells you what commands are available
<  bot> help [command] - Tells you basic [command] help
<  bot> seen [nick] - Check last known presence of [nick]. Accepts wildcards
<  bot> memo [...] - Can do: memo pending, memo tell [nick] [message], memo forget [nick]
<  bot> links [...] - Can do: links recent, links about [link]
<  bot> jq [...] - Can do: jq wtf, jq version, jq query [query], jq last
<  bot> github [...] - Can do: github pending, github recent, github link [number], github about [number], github search [query]
<  bot> jenkins [...] - Can do: jenkins last, jenkins recent, jenkins about [number]
<  bot> time [zone] - Show current time in [zone]
<  bot> facts [...] - Can do: facts all [keyword], facts add [keyword] [text], facts vote [up|down] [id], facts about [id], facts del [id], facts stats, facts links
<  bot> rule [...] - Can do: rule give, rule show [id], rule add [text], rule vote [up|down] [id], rule about [id], rule del [id], rule stats, rule links
<  bot> log [...] - Can do: log since [x minutes ago] as [name], log for [name], log about [name], log del [name], log links

Contributing

Follow the usual GitHub workflow:

  1. Fork the repository
  2. Make a new branch for your changes
  3. Work (and remember to commit with decent messages)
  4. Push your feature branch to your origin
  5. Make a Pull Request on GitHub

Licensing

Standard two-clause BSD license, see LICENSE.txt for details.

Copyright (c) 2015 - 2019 Piotr S. Staszewski

Awesome CopperTube image Copyright (c) 2015 Sean "Chezzo" Osman

You can’t perform that action at this time.