Add instructions on how to configure the bot and run it in README
Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
106
README.md
106
README.md
@@ -1,3 +1,109 @@
|
||||
# Omnibot
|
||||
|
||||
IRC bot with plugin/module support.
|
||||
|
||||
# Preparation
|
||||
|
||||
Omnibot is written in Elixir, which I am still learning. There are no releases yet, so there is no
|
||||
"installation" process.
|
||||
|
||||
There are two ways to run omnibot: as a standalone process, or as a docker container.
|
||||
|
||||
## Standalone
|
||||
|
||||
### Requirements
|
||||
|
||||
* Elixir 1.10+
|
||||
* A Rust compiler
|
||||
* You can install Rust via https://rustup.rs
|
||||
* I'm annoyed by this too. I'm working on getting rid of this dependency.
|
||||
|
||||
### Building
|
||||
|
||||
Run these lines to build:
|
||||
|
||||
```
|
||||
mix local.hex
|
||||
mix local.rebar3
|
||||
mix deps.get
|
||||
```
|
||||
|
||||
Confirm this by running `mix test`
|
||||
|
||||
## Docker
|
||||
|
||||
All you need for this is to be able to run `docker` and `docker-compose` - nothing else.
|
||||
|
||||
# Configuration
|
||||
|
||||
Runtime configuration is specified via an Elixir script, in **omnibot.exs** by default. [An example
|
||||
configuration](https://github.com/alekratz/omnibot/blob/master/omnibot.example.exs) is also provided
|
||||
in the project root. Changing the configuration file can be done setting the environment variable
|
||||
`OMNIBOT_CONFIG` to the path of the configuration file to use.
|
||||
|
||||
## Configuration keys
|
||||
|
||||
* `server` - the IRC server to connect to. **(required)**
|
||||
* `nick` - the IRC nickname to use for the bot. **(optional, default "omnibot")**
|
||||
* `user` - the IRC username to use for the bot. **(optional, default "omnibot")**
|
||||
* `real` - the IRC realname to use for the bot. **(optional, default "omnibot")**
|
||||
* `port` - the port to connect to the server on. **(optional, default 6667)**
|
||||
* `ssl` - whether to use SSL or not. Note that IRC usually uses port 6697 for SSL. **(optional, default false)**
|
||||
* `channels` -
|
||||
* `plugins` - a list of plugins to load and their configuration. **(optional, default [])**
|
||||
* `plugin_paths` - a list of locations to look for additional plugins. **(optional, default [])**
|
||||
|
||||
### Plugin configuration
|
||||
|
||||
Plugin configuration is done as a list of either:
|
||||
|
||||
* a plugin name, e.g. `Core` or
|
||||
* a *tuple* of plugin, and plugin configuration, e.g.
|
||||
`{Omnibot.Contrib.Fortune, channels: ["#general"]}`
|
||||
|
||||
#### Plugin channels
|
||||
|
||||
All plugins have a `channels` configuration value, which determines which IRC channels the plugin
|
||||
will be active in. Alternatively, if you want a plugin to be active in all channels, you can specify
|
||||
`channels: :all` in the plugin configuration instead of a list. This will also include channels
|
||||
specified *only* in their channel config, which do not appear in the root-level "channels" config.
|
||||
In other words, if "#foo" channel is joined only because it is specified by `SomePlugin`, all other
|
||||
plugins that join `:all` will also be active in this channel. (author's note: this is probably not
|
||||
desired behavior, but that's the behavior as of now)
|
||||
|
||||
## Gotchas
|
||||
|
||||
* In the configuration file, a `config` variable **must** be assigned to an `%Omnibot.Config {}`
|
||||
structure.
|
||||
* The list of loaded plugins **must** include the `Core` plugin for correct functionality. This
|
||||
plugin handles things like joining channels and reconnecting to the server if the connection is
|
||||
lost.
|
||||
|
||||
# Usage
|
||||
|
||||
This section assumes that you have created a configuration file and are ready to run the bot.
|
||||
|
||||
## From standalone
|
||||
|
||||
Ensure you have your configuration saved in omnibot.exs (or wherever you decide to point it), and
|
||||
then run:
|
||||
|
||||
`mix run --no-halt`
|
||||
|
||||
This will start the application up and running.
|
||||
|
||||
## Using Docker
|
||||
|
||||
Dockerfile, docker-compose.yml, and docker.env files have been provided so you can write your
|
||||
omnibot.exs configuration and start a docker container. You should simply be able to run
|
||||
`docker-compose up -d` and be good to go.
|
||||
|
||||
# Final notes
|
||||
|
||||
Since this is a BEAM application, you will sometimes see error messages pop up. This is normal
|
||||
behavior. If you see endless error messages (e.g. can't connect), then something is probably wrong
|
||||
and checking the logs may help you determine the issue.
|
||||
|
||||
# Plugins
|
||||
|
||||
TODO: short intro about plugins and links to examples
|
||||
|
||||
Reference in New Issue
Block a user