Command Line Interfaces#
Once installed, you can configure and start a Sopel IRC Bot instance:
$ sopel configure
# ... configuration wizard ...
$ sopel start
The configure
subcommand will run a brief configuration wizard to set up
the basic options: the bot’s nick, its admin’s nick, the IRC server to connect
to, and channels to join. By default, it creates the file
~/.sopel/default.cfg
(creating the homedir directory if necessary.)
Once this is done, the start
subcommand runs the bot, using this
configuration file unless one is provided using the -c
/--config
option.
Certain command-line options can be passed via environment variables. Also see the section on environment variables for more possibilities.
The sopel
command#
sopel#
Sopel IRC Bot
usage: sopel [-h] [-V] {start,configure,stop,restart} ...
- -h, --help#
show this help message and exit
- -V, --version#
Show version number and exit
sopel start#
Start a Sopel instance. This command requires an existing configuration file that can be generated with sopel configure
.
usage: sopel start [-h] [-d] [-c filename] [--config-dir CONFIGDIR]
- -h, --help#
show this help message and exit
- -d, --fork#
Run Sopel as a daemon (fork). This bot will safely run in the background. The instance will be named after the name of the configuration file used to run it. To stop it, use
sopel stop
(with the same configuration).
- -c <filename>, --config <filename>#
Use a specific configuration file. A config name can be given and the configuration file will be found in Sopel’s homedir (defaults to
~/.sopel/default.cfg
). An absolute pathname can be provided instead to use an arbitrary location. When theSOPEL_CONFIG
environment variable is set and not empty, it is used as the default value.
- --config-dir <configdir>#
Look for configuration files in this directory. By default, Sopel will search in
~/.sopel
. When theSOPEL_CONFIG_DIR
environment variable is set and not empty, it is used as the default value.
sopel stop#
Stop a running Sopel instance. This command determines the instance to quit by the name of the configuration file used (“default”, or the one from the -c
/--config
option). This command should be used when the bot is running in the background from sopel start -d
, and should not be used when Sopel is managed by a process manager (like systemd or supervisor).
usage: sopel stop [-h] [-k] [-c filename] [--config-dir CONFIGDIR]
- -h, --help#
show this help message and exit
- -k, --kill#
Kill Sopel without a graceful quit
- -c <filename>, --config <filename>#
Use a specific configuration file. A config name can be given and the configuration file will be found in Sopel’s homedir (defaults to
~/.sopel/default.cfg
). An absolute pathname can be provided instead to use an arbitrary location. When theSOPEL_CONFIG
environment variable is set and not empty, it is used as the default value.
- --config-dir <configdir>#
Look for configuration files in this directory. By default, Sopel will search in
~/.sopel
. When theSOPEL_CONFIG_DIR
environment variable is set and not empty, it is used as the default value.
sopel restart#
Restart a running Sopel instance
usage: sopel restart [-h] [-c filename] [--config-dir CONFIGDIR]
- -h, --help#
show this help message and exit
- -c <filename>, --config <filename>#
Use a specific configuration file. A config name can be given and the configuration file will be found in Sopel’s homedir (defaults to
~/.sopel/default.cfg
). An absolute pathname can be provided instead to use an arbitrary location. When theSOPEL_CONFIG
environment variable is set and not empty, it is used as the default value.
- --config-dir <configdir>#
Look for configuration files in this directory. By default, Sopel will search in
~/.sopel
. When theSOPEL_CONFIG_DIR
environment variable is set and not empty, it is used as the default value.
sopel configure#
Run the configuration wizard. It can be used to create a new configuration file or to update an existing one.
usage: sopel configure [-h] [--plugins] [-c filename] [--config-dir CONFIGDIR]
- -h, --help#
show this help message and exit
- --plugins#
Check for Sopel plugins that require configuration, and run their configuration wizards.
- -c <filename>, --config <filename>#
Use a specific configuration file. A config name can be given and the configuration file will be found in Sopel’s homedir (defaults to
~/.sopel/default.cfg
). An absolute pathname can be provided instead to use an arbitrary location. When theSOPEL_CONFIG
environment variable is set and not empty, it is used as the default value.
- --config-dir <configdir>#
Look for configuration files in this directory. By default, Sopel will search in
~/.sopel
. When theSOPEL_CONFIG_DIR
environment variable is set and not empty, it is used as the default value.
The sopel-config
command#
New in version 7.0: The command sopel-config
and its subcommands have been added in
Sopel 7.0.
sopel-config#
Sopel configuration tool
usage: sopel-config [-h] {list,init,get} ...
- -h, --help#
show this help message and exit
sopel-config get#
Get a configuration option’s value
usage: sopel-config get [-h] [-c filename] [--config-dir CONFIGDIR]
section option
- section#
The name of the section to look in
- option#
The name of the option to retrieve
- -h, --help#
show this help message and exit
- -c <filename>, --config <filename>#
Use a specific configuration file. A config name can be given and the configuration file will be found in Sopel’s homedir (defaults to
~/.sopel/default.cfg
). An absolute pathname can be provided instead to use an arbitrary location. When theSOPEL_CONFIG
environment variable is set and not empty, it is used as the default value.
- --config-dir <configdir>#
Look for configuration files in this directory. By default, Sopel will search in
~/.sopel
. When theSOPEL_CONFIG_DIR
environment variable is set and not empty, it is used as the default value.
sopel-config init#
Initialize Sopel configuration file
usage: sopel-config init [-h] [-c filename] [--config-dir CONFIGDIR]
- -h, --help#
show this help message and exit
- -c <filename>, --config <filename>#
Use a specific configuration file. A config name can be given and the configuration file will be found in Sopel’s homedir (defaults to
~/.sopel/default.cfg
). An absolute pathname can be provided instead to use an arbitrary location. When theSOPEL_CONFIG
environment variable is set and not empty, it is used as the default value.
- --config-dir <configdir>#
Look for configuration files in this directory. By default, Sopel will search in
~/.sopel
. When theSOPEL_CONFIG_DIR
environment variable is set and not empty, it is used as the default value.
sopel-config list#
List available configurations from Sopel’s config directory
with the extension “.cfg”. Use option --config-dir
to use a
specific config directory.
usage: sopel-config list [-h] [-c filename] [--config-dir CONFIGDIR]
[-e EXTENSION] [-p]
- -h, --help#
show this help message and exit
- -c <filename>, --config <filename>#
Use a specific configuration file. A config name can be given and the configuration file will be found in Sopel’s homedir (defaults to
~/.sopel/default.cfg
). An absolute pathname can be provided instead to use an arbitrary location. When theSOPEL_CONFIG
environment variable is set and not empty, it is used as the default value.
- --config-dir <configdir>#
Look for configuration files in this directory. By default, Sopel will search in
~/.sopel
. When theSOPEL_CONFIG_DIR
environment variable is set and not empty, it is used as the default value.
- -e <extension>, --ext <extension>, --extension <extension>#
Filter by extension (default to “.cfg)”
- -p, --path#
Display a list of absolute filenames instead of their names
The sopel-plugins
command#
New in version 7.0: The command sopel-plugins
and its subcommands have been added in
Sopel 7.0.
sopel-plugins#
Sopel plugins tool
usage: sopel-plugins [-h] {show,configure,list,disable,enable} ...
- -h, --help#
show this help message and exit
sopel-plugins configure#
Run a config wizard to configure a plugin.
This can be used whether the plugin is enabled or not.
usage: sopel-plugins configure [-h] [-c filename] [--config-dir CONFIGDIR]
name
- name#
Plugin name
- -h, --help#
show this help message and exit
- -c <filename>, --config <filename>#
Use a specific configuration file. A config name can be given and the configuration file will be found in Sopel’s homedir (defaults to
~/.sopel/default.cfg
). An absolute pathname can be provided instead to use an arbitrary location. When theSOPEL_CONFIG
environment variable is set and not empty, it is used as the default value.
- --config-dir <configdir>#
Look for configuration files in this directory. By default, Sopel will search in
~/.sopel
. When theSOPEL_CONFIG_DIR
environment variable is set and not empty, it is used as the default value.
sopel-plugins disable#
Disable a Sopel plugin by its name, no matter where it comes from.
It is not possible to disable the coretasks
plugin.
usage: sopel-plugins disable [-h] [-c filename] [--config-dir CONFIGDIR] [-f]
[-r]
name [name ...]
- name#
Name of the plugin to disable. Can be used multiple times to disable multiple plugins at once. In case of error, configuration is not modified.
- -h, --help#
show this help message and exit
- -c <filename>, --config <filename>#
Use a specific configuration file. A config name can be given and the configuration file will be found in Sopel’s homedir (defaults to
~/.sopel/default.cfg
). An absolute pathname can be provided instead to use an arbitrary location. When theSOPEL_CONFIG
environment variable is set and not empty, it is used as the default value.
- --config-dir <configdir>#
Look for configuration files in this directory. By default, Sopel will search in
~/.sopel
. When theSOPEL_CONFIG_DIR
environment variable is set and not empty, it is used as the default value.
- -f, --force#
Force exclusion of the plugin. When
core.enable
is defined, a plugin may be disabled without being excluded. In this case, use this option to force its exclusion.
- -r, --remove#
Remove from
core.enable
list if applicable.
sopel-plugins enable#
Enable a Sopel plugin by its name, no matter where it comes from.
The coretasks
plugin is always enabled.
By default, a plugin that is not excluded is enabled, unless at
least one plugin is defined in the core.enable
list.
In that case, Sopel uses an “allow-only” policy for plugins, and
all desired plugins must be added to this list.
usage: sopel-plugins enable [-h] [-c filename] [--config-dir CONFIGDIR] [-a]
name [name ...]
- name#
Name of the plugin to enable. Can be used multiple times to enable multiple plugins at once. In case of error, configuration is not modified.
- -h, --help#
show this help message and exit
- -c <filename>, --config <filename>#
Use a specific configuration file. A config name can be given and the configuration file will be found in Sopel’s homedir (defaults to
~/.sopel/default.cfg
). An absolute pathname can be provided instead to use an arbitrary location. When theSOPEL_CONFIG
environment variable is set and not empty, it is used as the default value.
- --config-dir <configdir>#
Look for configuration files in this directory. By default, Sopel will search in
~/.sopel
. When theSOPEL_CONFIG_DIR
environment variable is set and not empty, it is used as the default value.
- -a, --allow-only#
Enforce allow-only policy. It makes sure the plugin is added to the
core.enable
list.
sopel-plugins list#
List available Sopel plugins from all possible sources.
Plugin sources are: built-in, from sopel_modules.*
,
from sopel.plugins
entry points, or Sopel’s plugin directories.
Enabled plugins are displayed in green; disabled, in red.
usage: sopel-plugins list [-h] [-c filename] [--config-dir CONFIGDIR] [-C]
[-e | -d] [-n]
- -h, --help#
show this help message and exit
- -c <filename>, --config <filename>#
Use a specific configuration file. A config name can be given and the configuration file will be found in Sopel’s homedir (defaults to
~/.sopel/default.cfg
). An absolute pathname can be provided instead to use an arbitrary location. When theSOPEL_CONFIG
environment variable is set and not empty, it is used as the default value.
- --config-dir <configdir>#
Look for configuration files in this directory. By default, Sopel will search in
~/.sopel
. When theSOPEL_CONFIG_DIR
environment variable is set and not empty, it is used as the default value.
- -C, --no-color#
Disable colors
- -e, --enabled-only#
Display only enabled plugins
- -d, --disabled-only#
Display only disabled plugins
- -n, --name-only#
Display only plugin names
sopel-plugins show#
Show detailed information about a plugin.
usage: sopel-plugins show [-h] [-c filename] [--config-dir CONFIGDIR] name
- name#
Plugin name
- -h, --help#
show this help message and exit
- -c <filename>, --config <filename>#
Use a specific configuration file. A config name can be given and the configuration file will be found in Sopel’s homedir (defaults to
~/.sopel/default.cfg
). An absolute pathname can be provided instead to use an arbitrary location. When theSOPEL_CONFIG
environment variable is set and not empty, it is used as the default value.
- --config-dir <configdir>#
Look for configuration files in this directory. By default, Sopel will search in
~/.sopel
. When theSOPEL_CONFIG_DIR
environment variable is set and not empty, it is used as the default value.
Supported environment variables#
SOPEL_CONFIG
#
This environment variable replaces the built-in default config name (which is,
confusingly, also “default”) if set. It’s interpreted in the same way as the
-c
/--config
option accepted by most CLI commands described above.
New in version 7.0.
SOPEL_CONFIG_DIR
#
This environment variable replaces the default directory in which Sopel
searches for config files. It’s interpreted in the same way as the
--config-dir
option accepted by most CLI commands described above.
New in version 7.1.
Overriding individual settings#
Whenever a setting is accessed, Sopel looks for a matching environment variable. If found, the environment variable’s value (even if it’s empty) overrides the value from Sopel’s config file.
The variable name Sopel looks for is structured as follows:
SOPEL_
prefix (to prevent collisions with other programs)The section name in UPPERCASE, e.g.
CORE
orPLUGIN_NAME
_
as separatorThe setting name in UPPERCASE, e.g.
NICK
orAPI_KEY
For example, take this stripped-down config file:
[core]
nick = ConfigFileNick
host = irc.libera.chat
[plugin_name]
api_key = abad1dea
Sopel would take the nickname ConfigFileNick
when connecting to IRC at
irc.libera.chat
, and the plugin_name
plugin would use the API key
abad1dea
when communicating with its remote service.
However, by setting the environment variables:
SOPEL_CORE_NICK=EnvVarNick
SOPEL_PLUGIN_NAME_API_KEY=1337c0ffee9001
Sopel would take the nickname EnvVarNick
when connecting to IRC (still at
irc.libera.chat
; that value isn’t overridden or lost), and the
plugin_name
plugin would use the API key 1337c0ffee9001
, instead.
New in version 7.0.
Note
Any _
character in the section or setting name also appears in the
environment variable name. It’s therefore theoretically possible for two
plugins to have section and setting name pairs that both resolve to the same
environment variable name, but in practice this is highly unlikely.
However, should such a collision occur, please notify the main Sopel project and both plugin authors via any relevant communication channel(s).