Igor

Igor allows you to write bots for Matrix.

Installation

The package can be installed by adding igor to your list of dependencies in mix.exs:

def deps do
  [
    {:igor, "~> 0.3.1"}
  ]
end

Igor depends on html5ever_elixir, which in turn depends on the html5ever Rust library, so to compile Igor, you will need to install Rust.

Note that html5ever_elixir 0.7.0 does not work with OTP 22, but html5ever_elixir 0.8.0 does not compile with older versions of Rust (notably, the version of Rust shipped with Debian Buster), so there isn’t a single version of html5ever_elixir that will work universally. Currently, mix.lock specifies version 0.7.0, but if you need/want to use version 0.8.0, run mix deps.unlock html5ever rustler and then mix deps.get.

Running the bot

Standalone

To run Igor on its own, create a new Elixir project that depends on it and on any plugins that you want to use, and run mix deps.get to fetch the dependencies. Then create a config/config.exs file (see config/config_sample.exs for an example), and call mix igor.run to start the bot.

As part of an application

Igor can also be started from within another Elixir application by calling

Igor.start_link(opts)

where opts is a keyword list as described in the configuring section below. Or it can be started by a supervisor:

children = [
  {Igor, opts}
]
Supervisor.start_link(children, strategy: :one_for_one)

Configuring

Igor takes the following configuration parameters:

Responders

Igor uses responders to respond to Matrix events, and comes with some sample responders. For information on writing your own responder, see the documentation for Igor.Responder.