MeshCore Bot Commands
This document provides a comprehensive list of all available commands in the MeshCore Bot, with examples and detailed explanations.
Table of Contents
- Basic Commands
- Information Commands
- Emergency Commands
- Gaming Commands
- Entertainment Commands
- Sports Commands
- MeshCore Utility Commands
- Admin Commands
Basic Commands
test or t
Test message response to verify bot connectivity and functionality.
Usage:
- test - Basic test response
- test <phrase> - Test with optional phrase
Examples:
Response: Confirms message receipt with connection information.
ping
Simple ping/pong response to test bot responsiveness.
Usage:
Response: Pong!
help
Show available commands or get detailed help for a specific command.
Usage:
- help - List all available commands
- help <command> - Get detailed help for a specific command
Examples:
Response: Lists commands or provides detailed information about the specified command.
hello
Greeting response. Also responds to various greeting keywords.
Usage:
Response: Friendly greeting message.
cmd
List available commands in compact format.
Usage:
Response: Compact list of all available commands.
version
Show the bot's current software version.
Usage:
Response: Version string for the running MeshCore bot build.
status
Show current bot and radio status details.
Usage:
Response: Runtime status summary (connection/health information).
Information Commands
channels
List and manage hashtag channels on the MeshCore network.
Usage:
- channels - List general channels
- channels list - List all channel categories
- channels <category> - List channels in a specific category
- channels #channel - Get information about a specific channel
Examples:
Response: Lists available channels with their descriptions and usage statistics.
wx <zipcode>
Get weather information for a US zip code using NOAA data.
Aliases: weather, wxa, wxalert
Usage:
Examples:
Response: Current weather conditions, forecast for tonight/tomorrow, and active weather alerts. Includes: - Current conditions (temperature, humidity, wind, etc.) - Short-term forecast (tonight, tomorrow) - Weather alerts if any are active
Note: Weather alerts are automatically included when available.
gwx <location>
Get global weather information for any location worldwide using Open-Meteo API.
Aliases: globalweather, gwxa
Usage:
Examples:
Response: Current weather conditions and forecast for the specified location, including: - Current temperature and conditions - Feels-like temperature - Wind speed and direction - Humidity - Dew point - Visibility - Pressure - Forecast for today/tonight and tomorrow
aqi <location>
Get Air Quality Index (AQI) information for a location.
Usage:
aqi <location>
aqi <city>
aqi <city>, <state>
aqi <city>, <country>
aqi <latitude>,<longitude>
aqi help
Examples:
Response: Air quality data including: - US AQI value and category - European AQI (if available) - Pollutant concentrations (PM2.5, PM10, Ozone, etc.) - Health recommendations
rain <location>
Minute-level rain nowcast β tells you when precipitation is about to start or stop in the next couple hours, using Open-Meteo's 15-minutely precipitation forecast. Works worldwide with no API key.
Aliases: nowcast, snow
Usage:
Examples:
Response: A single line describing the upcoming precipitation, for example:
- π§οΈ Rain starting in ~25min for Seattle (~45min) β dry now, rain expected (with rough duration)
- π§οΈ Rain easing in ~20min for Seattle β raining now, clearing soon
- π§οΈ Heavy rain steady for 2h+ in Seattle β raining now, no break in the window
- βοΈ No rain expected in next 2h for Seattle β dry through the window
The keyword sets which precipitation the answer leads with: rain/nowcast lead with rain (liquid amount), while snow leads with snowfall (reported as depth, e.g. π¨οΈ Snow starting in ~40min (~1.5 in snow)). Either keyword still mentions the other type when it's in the window, and snow/ice changeovers are called out. Bare countries or US states (e.g. rain france, snow texas) default to the region's capital with a heads-up, since one centroid isn't representative.
When no location is given, uses the sender's companion location if known, then the bot's configured location.
Configuration: [Rain_Command] β enabled, window_minutes (how far ahead to look, default 120), precip_threshold_mm (sensitivity, default 0.1), and optional default_lat/default_lon. Temperature/precipitation source units are shared via [Weather] (weather_model is honored).
Note: Falls back to hourly precipitation when a weather model doesn't provide 15-minute data for the area.
airplanes [location] [options] / overhead [lat,lon]
Get aircraft tracking information using ADS-B data from airplanes.live or compatible APIs.
Aliases: aircraft, planes, adsb, overhead
Usage:
airplanes
airplanes here
airplanes <latitude>,<longitude>
airplanes [location] [options]
overhead
overhead <latitude>,<longitude>
Special Command: overhead
- Returns the single closest aircraft directly overhead
- Uses companion location from database (if available)
- If companion location not available, prompts user to specify coordinates
- Always returns one aircraft sorted by distance (closest first)
Location Options:
- No location: Uses companion location (if available), otherwise bot location
- here: Uses bot location from config
- <lat>,<lon>: Uses specified coordinates (e.g., 47.6,-122.3)
Filter Options:
- radius=<nm> - Search radius in nautical miles (default: 25, max: 250)
- alt=<min>-<max> - Filter by altitude range in feet (e.g., alt=1000-5000)
- speed=<min>-<max> - Filter by ground speed range in knots
- type=<code> - Filter by aircraft type code (e.g., B738, A321)
- callsign=<pattern> - Filter by callsign pattern
- military - Show only military aircraft
- ladd - Show only LADD aircraft
- pia - Show only PIA aircraft
- squawk=<code> - Filter by transponder squawk code
- limit=<n> - Limit number of results (default: 10, max: 50)
- closest - Sort by distance (closest first)
- highest - Sort by altitude (highest first)
- fastest - Sort by speed (fastest first)
Examples:
airplanes
airplanes here
airplanes 47.6,-122.3
airplanes radius=50
airplanes alt=10000-40000
airplanes type=B738
airplanes military
airplanes callsign=UAL limit=5
airplanes 47.6,-122.3 radius=25 closest
Response: - Single aircraft: Detailed format with callsign, type, altitude, speed, track, distance, bearing, vertical rate, and registration - Multiple aircraft: Compact list format with callsign, altitude, speed, distance, and bearing
Configuration:
The command can be configured in config.ini under [Airplanes_Command]:
- enabled - Enable/disable the command
- api_url - API endpoint URL (default: http://api.airplanes.live/v2/)
- default_radius - Default search radius in nautical miles
- max_results - Maximum number of results to return
- url_timeout - API request timeout in seconds
Note: Uses companion location from database if available, otherwise falls back to bot location from config. The API is rate-limited to 1 request per second.
sun
Get sunrise and sunset times for the bot's configured location.
Usage:
Response: Sunrise and sunset times, day length, and solar noon.
Note: Uses the bot's configured default location (bot_latitude and bot_longitude in config.ini), not the user's location from their advert.
aurora
Get aurora visibility/forecast conditions for configured or provided coordinates.
Usage:
Response: Aurora activity and visibility guidance for the requested location.
moon
Get moon phase information and moonrise/moonset times for the bot's configured location.
Usage:
Response: Current moon phase, moonrise/moonset times, and illumination percentage.
Note: Uses the bot's configured default location (bot_latitude and bot_longitude in config.ini), not the user's location from their advert.
solar
Get solar conditions and HF band status.
Usage:
Response: Solar activity information including: - Solar flux - Sunspot number - A-index and K-index - HF band conditions (Open/Closed/Marginal) - Solar activity summary
Data comes from HamQSL and NOAA SWPC. For the provenance of the underlying
modules/solar_conditions.py implementation, see
Solar conditions rewrite provenance.
solarforecast or sf
Get solar panel production forecast for a location.
Usage:
sf <location|repeater_name|coordinates|zipcode> [panel_size] [azimuth] [angle]
solarforecast <location> [panel_size] [azimuth] [angle]
Parameters:
- location - Location name, repeater name, coordinates (lat,lon), or zipcode
- panel_size - Panel size in watts (optional, default: 100W)
- azimuth - Panel azimuth in degrees, 0=south (optional, default: 180)
- angle - Panel tilt angle in degrees (optional, default: 30)
Examples:
Response: Solar panel production forecast including: - Daily production estimate - Hourly production breakdown - Peak production time - Total daily kWh estimate
hfcond
Get HF band conditions for amateur radio.
Usage:
Response: HF band conditions including: - Band status (Open/Closed/Marginal) - Solar flux - A-index and K-index - Propagation conditions
satpass <NORAD>
Get satellite pass information for a satellite by NORAD ID.
Usage:
- satpass <NORAD> - Get radio passes (all passes above horizon)
- satpass <NORAD> visual - Get visual passes only (must be visually observable)
- satpass <shortcut> - Use predefined shortcuts
Shortcuts:
- Weather Satellites: noaa15, noaa18, noaa19, metop-a, metop-b, metop-c, goes16, goes17, goes18
- Space Stations: iss, tiangong, tiangong1, tiangong2
- Telescopes: hst, hubble
- Other: starlink
Examples:
Response: Upcoming satellite passes including: - Pass start/end times - Maximum elevation - Duration - Azimuth at start/end - Visual pass indicator (if applicable)
Note: Requires n2yo_api_key to be configured in config.ini.
Emergency Commands
alert <location> [all]
Get active emergency incidents for a location.
Usage:
Parameters:
- location - City name, zipcode, street address with city, coordinates, or county name
- all - Show all incidents (default: shows most relevant incidents)
Examples:
alert seattle
alert 98101
alert main street seattle
alert 47.6,-122.3
alert seattle all
alert king county
Response: Active emergency incidents including: - Incident type and description - Location - Agency - Time - Severity level
Note: Requires Alert_Command configuration in config.ini with agency IDs for your area.
Gaming Commands
dice
Roll dice with various configurations.
Usage:
- dice - Roll a standard 6-sided die (d6)
- dice d<N> - Roll a die with N sides
- dice <X>d<N> - Roll X dice with N sides each
Examples:
Response: Shows the dice roll result(s) and total.
roll
Roll a random number within a specified range.
Usage:
- roll - Roll a number between 1 and 100
- roll <max> - Roll a number between 1 and max
Examples:
Response: Shows the random number result.
magic8
Ask the Magic 8-Ball a yes/no question.
Usage:
Examples:
Response: A randomized Magic 8-Ball style answer.
Entertainment Commands
joke
Get a random joke from various categories.
Usage:
- joke - Get a random joke
- joke <category> - Get a joke from a specific category
Examples:
Response: A random joke from the selected category.
dadjoke
Get a dad joke from icanhazdadjoke.com.
Usage:
Response: A random dad joke.
hacker
Responds to Linux/Unix commands with supervillain mainframe error messages.
Usage:
Examples:
Response: Humorous error messages in the style of a supervillain's mainframe system.
catfact
Get a random cat fact.
Usage:
Response: A short random cat fact.
Sports Commands
sports
Get sports scores for configured teams or leagues.
Usage:
- sports - Get scores for default teams
- sports <team> - Get scores for a specific team
- sports <league> - Get scores for a league (nfl, mlb, nba, nhl, etc.)
Examples:
Response: Current scores and game information for the requested teams or league.
World Cup scores are also available year-round here, e.g.
sports fifa.
wc or worldcup
FIFA World Cup scores and schedule. Responds only while a World Cup (men's or women's) is actually in progress β the active tournament is auto-detected from the ESPN schedule, so no dates need to be configured. Outside a tournament it replies that none is in progress.
Usage:
- wc - Live/most recent scores and upcoming fixtures
- wc <nation> - Focus on a specific nation's match
Examples:
Response: Current scores, match state, and upcoming fixtures for the active tournament.
Configuration: [Worldcup_Command] β enabled, api_timeout, cache_ttl_minutes. For proactive live match announcements posted to a channel, see the World Cup Live Service.
MeshCore Utility Commands
path or decode or route
Decode and display the routing path of a message.
Usage:
Response: Shows the complete routing path the message took through the mesh network, including all intermediate nodes.
trace and tracer
Run a link trace for diagnostics. trace sends a trace along the given path (return may not be heard by the bot). tracer builds a round-trip path so the bot's radio hears the return.
Usage:
- trace [path] - Trace along path (comma-separated 2-char hex, e.g. 01,7a,55). No path = use your message's incoming path.
- tracer [path] - Same but path is converted to round-trip (e.g. 01,7a,55 β 01,7a,55,7a,01) so the bot hears the response.
Examples:
With no path, both use the path your message took to reach the bot (like the test command).Config: [Trace_Command] β enabled, maximum_hops, trace_mode (one_byte/two_byte), timeout_base_seconds (default 1.0), timeout_per_hop_seconds (default 0.5), trace_retry_count (default 2 attempts), trace_retry_delay_seconds (default 1.0), update_graph_one_byte, update_graph_two_byte. Total wait per attempt = base + (hops Γ per_hop). On failure, waits then retries up to trace_retry_count times.
Response: Compact trace result: tag, hop count, SNR per hop, and optional graph update when enabled.
prefix <XX>
Look up repeaters by two-character prefix.
Usage:
- prefix <XX> - Look up repeaters with the specified prefix
- prefix <XX> all - Include all repeaters (not just active ones)
- prefix refresh - Refresh the prefix cache
- prefix free or prefix available - Show available prefixes
Examples:
Response: List of repeaters matching the prefix, including: - Repeater name - Status (active/inactive) - Last seen time - Location (if available)
stats
Show bot usage statistics for the past 24 hours.
Usage:
- stats - Overall statistics
- stats messages - Message statistics
- stats channels - Channel statistics
- stats paths - Path statistics
Examples:
Response: Usage statistics including: - Total messages processed - Commands executed - Channel activity - Routing path information
multitest or mt
Listen for 6 seconds and collect all unique paths from incoming messages.
Usage:
Response: List of all unique routing paths discovered during the 6-second listening period.
Command Syntax
Prefix
Commands can be used with or without the ! prefix:
- test or !test - Both work
- wx 98101 or !wx 98101 - Both work
Direct Messages
Some commands work in both public channels and direct messages, while admin commands typically require direct messages for security.
Rate Limiting
The bot implements rate limiting to prevent spam. If you send commands too quickly, you may receive a rate limit message. Wait a few seconds before trying again.
Case Sensitivity
Most commands are case-insensitive:
- TEST and test work the same
- WX 98101 and wx 98101 work the same
Getting Help
Use the help command to get more information:
- help - List all commands
- help <command> - Get detailed help for a specific command
Additional Notes
Location Requirements
Some commands use location data:
- sun and moon - Use the bot's configured default location (bot_latitude and bot_longitude in config.ini), not the user's location from their advert
- solar - Does not require location (provides global solar conditions)
- solarforecast - Requires a location parameter (location name, repeater name, coordinates, or zipcode)
- wx - Requires a zipcode parameter
- gwx - Requires a location parameter
- aqi - Requires a location parameter
API Keys
Some commands require API keys to be configured in config.ini:
- satpass - Requires n2yo_api_key
- aqi - Requires airnow_api_key (optional, uses fallback if not configured)
Weather Data
wxuses NOAA API (US locations only)gwxuses Open-Meteo API (global locations)- Both provide current conditions and forecasts
Command Categories
Commands are organized into categories for easier discovery: - Basic - Essential commands for testing and help - Information - Weather, astronomy, and data queries - Emergency - Emergency and safety information - Gaming - Fun commands for games and random numbers - Entertainment - Jokes and humorous responses - Sports - Sports scores and information - MeshCore Utility - Network-specific utilities - Admin - Administrative commands (DM only)
Admin Commands
Note: Admin commands are only available via Direct Message (DM) and may require ACL permissions.
repeater or repeaters or rp
Manage repeater contacts and contact list capacity.
Usage:
Repeater Management Subcommands
scan- Scan current contacts and catalog new repeaterslist- List repeater contacts (use--allto show purged ones)locations- Show location data status for repeatersupdate-geo- Update missing geolocation data (state/country) from coordinatesupdate-geo dry-run- Preview what would be updated without making changesupdate-geo <N>- Update up to N repeaters (default: 10)update-geo dry-run <N>- Preview updates for up to N repeaterspurge all- Purge all repeaterspurge all force- Force purge all repeaters (uses multiple removal methods)purge <days>- Purge repeaters older than specified dayspurge <name>- Purge specific repeater by namerestore <name>- Restore a previously purged repeaterstats- Show repeater management statistics
Contact List Management Subcommands
status- Show contact list status and limitsmanage- Manage contact list to prevent hitting limitsmanage --dry-run- Show what management actions would be takenadd <name> [key]- Add a discovered contact to contact listauto-purge- Show auto-purge status and controlsauto-purge trigger- Manually trigger auto-purgeauto-purge enable/disable- Enable/disable auto-purgepurge-status- Show detailed purge status and recommendationstest-purge- Test the improved purge systemdiscover- Discover companion contactsauto <on|off>- Toggle manual contact addition settingtest- Test meshcore-cli command functionality
Examples:
repeater scan
repeater status
repeater manage
repeater manage --dry-run
repeater add "John"
repeater discover
repeater auto-purge
repeater auto-purge trigger
repeater purge-status
repeater purge all
repeater purge 30
repeater stats
Response: Varies by subcommand. Provides information about repeater contacts, contact list capacity, and management actions.
Note: This system helps manage both repeater contacts and overall contact list capacity. It automatically removes stale contacts and old repeaters when approaching device limits.
Automatic Features:
- NEW_CONTACT events are automatically monitored
- Repeaters are automatically cataloged when discovered
- Contact list capacity is monitored in real-time
- auto_manage_contacts = device (default): Firmware auto-adds chat (companion) peers only, with overwrite oldest non-favourite when the contact table is full; the bot schedules delayed jobs to set that firmware policy and to favourite keys in Admin_ACL plus the effective announcements ACL (same rules as the announcements command), then clear favourite on other contacts. The bot still runs capacity management on NEW_CONTACT (near-limit manage_contact_list) and does not call add_contact for new companions itself. Contact limit for logging and capacity is taken from the radioβs max_contacts and, if the live table is larger (under-reported max), raised to match the mesh so counts are not shown as over-capacity. Companion auto-purge never runs on the radio in this mode. Count-based repeater auto-purge only runs if the table grows strictly above that synced limit (normally off while the firmware manages slots).
- auto_manage_contacts = bot: Bot adds new companions via add_contact (full NEW_CONTACT payload), runs manage-before-add when the list is near limit, and retries once after manage_contact_list if the radio returns TABLE_FULL.
- auto_manage_contacts = false: Manual mode - NEW_CONTACT companions are tracked in the database only; use !repeater commands to manage the device list.
advert
Send a network flood advert to announce the bot's presence on the mesh network.
Usage:
Response: Confirms that the advert was sent.
Note: - DM only command - 1-hour cooldown period between uses - Sends a flood advert to all nodes on the network
reload
Reload supported runtime configuration without restarting the bot.
Usage:
Response: Confirms reload success or reports validation/loading errors.
Note: Admin DM command. Connection/radio settings still require a process restart.
channelpause / channelresume
Temporarily pause or resume bot reactions on public channels.
Usage:
Response: Confirms whether channel handling is paused or resumed.
Note: Admin DM command. DMs continue to work while channel responses are paused.
greeter
Show greeter behavior and configuration guidance.
Usage:
Response: Describes greeter mode and points to [Greeter_Command] settings in config.
feed
Manage RSS feed and API feed subscriptions (Admin only).
Usage:
Subcommands
subscribe <rss|api> <url> <channel> [name]- Subscribe to a feedunsubscribe <id|url> <channel>- Unsubscribe from a feedlist [channel]- List all subscriptionsstatus <id>- Get status of a specific subscriptiontest <url>- Test a feed URLenable <id>- Enable a subscriptiondisable <id>- Disable a subscriptionupdate <id> [interval_seconds]- Update subscription interval
Examples:
feed subscribe rss https://alerts.example.com/rss emergency "Emergency Alerts"
feed subscribe api https://api.example.com/alerts emergency "API Alerts" '{"headers": {"Authorization": "Bearer TOKEN"}}'
feed list
feed status 1
feed test https://example.com/feed.xml
Response: Confirmation of the action or list of subscriptions.
Note: Admin access required. Feeds are automatically checked and posted to the specified channel.
announcements
Manage announcement ACL and related announcement settings.
Usage:
Response: Shows current announcement ACL or confirms changes.
Note: Admin access required.
schedule
View configured scheduled messages and advert interval.
Usage:
Response: Lists configured scheduled posts (each line shows the cron or preset schedule, or legacy HH:MM if you still use deprecated HHMM keys) plus current advert timing.
Note: DM-only command by default. Cron day-of-week uses APScheduler numbering (0=Monday), not Vixie cron β see Scheduled messages.
webviewer or web or viewer or wv
Manage the web viewer integration.
Usage:
Subcommands:
| Subcommand | Description |
|---|---|
status |
Report enabled/running state, URL, circuit-breaker state, failure count, and shutdown state |
reset |
Reset the integration's circuit breaker after repeated failures |
restart |
Restart the web viewer process |
Response: A compact status line, or confirmation that the reset or restart was initiated.
Note: DM-only command. Disable with enabled = false under [WebViewer_Command].
For more information about configuring the bot, see the main README file.