Files
meshcore-bot/docs/configuration.md
Adam Gessaman ac2825a25d feat: Add channel keyword filtering to configuration
- Introduced `channel_keywords` option in the configuration files to limit bot responses in monitored channels to specified keywords, enhancing control over channel interactions.
- Updated relevant documentation and examples to reflect the new feature, ensuring users understand how to implement keyword restrictions.
- Modified the command manager to support the new keyword filtering logic, allowing for more efficient message handling in channels.
2026-02-09 11:56:43 -08:00

3.9 KiB
Raw Blame History

Configuration

The bot is configured via config.ini in the project root (or the path given with --config). This page describes how configuration is organized and where to find command-specific options.

config.ini structure

  • Sections are named in square brackets, e.g. [Bot], [Connection], [Path_Command].
  • Options are key = value (or key=value). Comments start with # or ;.
  • Paths can be relative (to the directory containing the config file) or absolute. For Docker, use absolute paths under /data/ (see Docker deployment).

The main sections include:

Section Purpose
[Bot] Bot name, database path, response toggles, command prefix
[Connection] Serial, BLE, or TCP connection to the MeshCore device
[Channels] Channels to monitor, DM behavior, optional channel keyword whitelist
[Admin_ACL] Admin public keys and admin-only commands
[Keywords] Keyword → response pairs
[Weather] Units and settings shared by wx / gwx and Weather Service
[Logging] Log file path and level

Channels section

[Channels] controls where the bot responds:

  • monitor_channels Comma-separated channel names. The bot only responds to messages on these channels (and in DMs if enabled).
  • respond_to_dms If true, the bot responds to direct messages; if false, it ignores DMs.
  • channel_keywords Optional. When set (comma-separated command/keyword names), only those triggers are answered in channels; DMs always get all triggers. Use this to reduce channel traffic by making heavy triggers (e.g. wx, satpass, joke) DM-only. Leave empty or omit to allow all triggers in monitored channels. Per-command channels = (empty) in a commands section also forces that command to be DM-only; see config.ini.example for examples (e.g. [Joke_Command]).

Command and feature sections

Many commands and features have their own section. Options there control whether the command is enabled and how it behaves.

Enabling and disabling commands

  • enabled Common option to turn a command or plugin on or off. Example:
    [Aurora_Command]
    enabled = true
    
  • Commands without an enabled key are typically always available (subject to Admin_ACL for admin-only commands).

Command-specific sections

Examples of sections that configure specific commands or features:

  • [Path_Command] Path decoding and repeater selection. See Path Command for all options.
  • [Prefix_Command] Prefix lookup, prefix best, range limits.
  • [Weather] Used by the wx / gwx commands and the Weather Service plugin (see Weather Service).
  • [Airplanes_Command] Aircraft/ADS-B command (API URL, radius, limits).
  • [Aurora_Command] Aurora command (default coordinates).
  • [Alert_Command] Emergency alerts (agency IDs, etc.).
  • [Sports_Command] Sports scores (teams, leagues).
  • [Joke_Command], [DadJoke_Command] Joke sources and options.

Full reference: see config.ini.example in the repository for every section and option, with inline comments.

Path Command configuration

The Path command has many options (presets, proximity, graph validation, etc.). All are documented in:

Path Command Presets, geographic and graph settings, and tuning.

Service plugin configuration

Service plugins (Discord Bridge, Packet Capture, Map Uploader, Weather Service) each have their own section and are documented under Service Plugins.

Reloading configuration

Some configuration can be reloaded without restarting the bot using the reload command (admin only). Radio/connection settings are not changed by reload; restart the bot for those.