Skip to content

Repeater Management DM Commands

This document provides comprehensive documentation for all repeater management commands available via direct message (DM) to the bot.

Note: All repeater commands are DM-only and cannot be used in public channels.

Command Format: !repeater <subcommand> [options]


Table of Contents


Repeater Discovery & Cataloging

!repeater scan

Scans the current device contacts and catalogs new repeaters into the database. Also updates location data for existing repeaters.

Usage:

!repeater scan

What it does: - Scans all contacts on the device - Identifies repeaters and RoomServers - Catalogs new repeaters in the database - Updates location data for existing repeaters

Example Response:

โœ… Scanned contacts and cataloged 5 new repeaters


!repeater discover

Discovers and adds companion contacts to the device.

Usage:

!repeater discover

What it does: - Scans for companion contacts that should be added to the device - Automatically adds discovered companions (if auto-add is enabled)

Example Response:

โœ… Companion contact discovery initiated


Listing & Viewing

!repeater list

Lists repeater contacts stored in the database.

Usage:

!repeater list          # Show active repeaters only
!repeater list --all    # Show all repeaters (including purged)
!repeater list -a       # Short form for --all

What it shows: - Repeater name - Device type (Repeater or RoomServer) - Last seen timestamp - Purge count - Active status (๐ŸŸข active, ๐Ÿ”ด purged)

Example Response:

๐Ÿ“ก **Repeater Contacts** (Active):

๐ŸŸข ๐Ÿ“ก **Hillcrest**
   Type: Repeater
   Last seen: 2024-01-15 14:30
   Purge count: 0

๐ŸŸข ๐Ÿ  **Northgate RoomServer**
   Type: RoomServer
   Last seen: 2024-01-15 12:00
   Purge count: 1


Location & Geolocation

!repeater locations

Shows location data statistics for all tracked repeaters.

Usage:

!repeater locations

What it shows: - Total repeater count - Percentage with GPS coordinates - Percentage with city/state/country data - Examples of repeater locations

Example Response:

๐Ÿ“ Repeater Locations (25 total):
GPS: 20 (80%)
City: 18 (72%)
State: 15 (60%)
Country: 15 (60%)
None: 5 (20%)

(Second message with examples may follow)


!repeater update-geo

Updates missing geolocation data (city, state, country) for repeaters that have coordinates but are missing location information.

Usage:

!repeater update-geo                    # Update up to 10 repeaters (default)
!repeater update-geo 5                  # Update up to 5 repeaters
!repeater update-geo dry-run            # Preview what would be updated
!repeater update-geo dry-run 3           # Preview for up to 3 repeaters

What it does: - Finds repeaters with GPS coordinates but missing city/state/country - Performs reverse geocoding to fill in missing data - Respects rate limits (2 seconds between requests) - Skips repeaters with 0,0 coordinates (hidden locations)

Example Response:

๐ŸŒ Geolocation Update
Batch size: 10
Found: 8 repeaters with missing data
Updated: 6 repeaters
Errors: 0
Skipped: 2
โœ… Geolocation data updated successfully!


!repeater geocode

Manages geocoding operations for contacts with coordinates but missing location data.

Usage:

!repeater geocode              # Show geocoding status
!repeater geocode trigger       # Geocode 1 contact immediately
!repeater geocode bulk         # Bulk geocode up to 10 contacts (default)
!repeater geocode bulk 20      # Bulk geocode up to 20 contacts (max: 50)
!repeater geocode dry-run      # Preview what would be geocoded
!repeater geocode dry-run 5    # Preview for up to 5 contacts
!repeater geocode status       # Show detailed geocoding status

Subcommands: - trigger - Manually trigger background geocoding for a single contact - bulk [N] - Bulk geocode multiple contacts (default: 10, max: 50) - dry-run [N] - Preview geocoding without making changes - status - Show detailed geocoding status

Example Response (status):

๐ŸŒ Geocoding: 45/60 done, 15 pending

Example Response (bulk):

๐ŸŒ Bulk geocoding completed:
Found: 15 contacts
Updated: 12 contacts
Errors: 1
Skipped: 2


Purging Repeaters

!repeater purge

Removes repeaters from the device contact list.

Usage:

!repeater purge all                    # Purge all repeaters
!repeater purge all force               # Force purge all (uses multiple removal methods)
!repeater purge all "Clear all repeaters"           # With reason
!repeater purge 30                      # Purge repeaters older than 30 days
!repeater purge 14 "Auto-cleanup"                   # Purge with reason
!repeater purge "Hillcrest"             # Purge specific repeater by name
!repeater purge "Hillcrest" "Manual removal"      # With reason

Options: - all - Remove all repeaters from device - all force - Force removal using multiple methods (for stubborn contacts) - - Remove repeaters older than specified number of days - - Remove specific repeater (partial name match allowed)

What it does: - Removes repeaters from the device contact list - Updates database to mark repeaters as purged - Records purge reason in database - Verifies removal was successful

Example Response:

โœ… Purged 12/12 repeaters

If some fail:

โœ… Purged 10/12 repeaters
โŒ Failed to purge 2 repeaters: Repeater1, Repeater2
๐Ÿ’ก Try '!repeater purge all force' to force remove stubborn repeaters


!repeater auto-purge

Manages automatic purging of repeaters when contact list approaches capacity limits.

Usage:

!repeater auto-purge                    # Show auto-purge status
!repeater auto-purge trigger            # Manually trigger auto-purge check
!repeater auto-purge enable             # Enable automatic purging
!repeater auto-purge disable            # Disable automatic purging
!repeater auto-purge monitor            # Run periodic contact monitoring

Subcommands: - trigger - Manually trigger an auto-purge check and execution - enable - Enable automatic purging - disable - Disable automatic purging - monitor - Run periodic contact monitoring (checks limits and triggers background geocoding)

Example Response (status):

๐Ÿ”„ Auto-Purge: ON | 285/300 (95%) | โš ๏ธ NEAR LIMIT

Example Response (trigger):

โœ… Auto-purge triggered successfully


!repeater purge-status

Shows detailed purge status and recommendations.

Usage:

!repeater purge-status

What it shows: - Auto-purge enabled/disabled status - Current contact count vs limit - Usage percentage - Health status (OK, NEAR LIMIT, FULL)

Example Response:

๐Ÿ“Š Purge: ON | 285/300 (95%) | โš ๏ธ Near 280


Restoring Repeaters

!repeater restore

Restores a previously purged repeater (marks it as active in database, but does not re-add to device).

Usage:

!repeater restore "Hillcrest"                    # Restore by name
!repeater restore "Hillcrest" "Manual restore"   # With reason

What it does: - Finds purged repeaters matching the name pattern - Marks them as active in the database - Records restore reason - Does NOT automatically re-add to device contact list

Example Response:

โœ… Restored repeater: Hillcrest

If multiple matches:

Multiple purged repeaters found matching 'Hill':
1. Hillcrest (Repeater)
2. Hilltop (RoomServer)

Please be more specific with the name.


Statistics & Status

!repeater stats

Shows comprehensive statistics about repeater tracking and management.

Usage:

!repeater stats

What it shows: - Total contacts ever heard - Currently tracked by device - Recent activity (24 hours) - Breakdown by MeshCore role (repeater, roomserver, companion, etc.) - Breakdown by device type

Example Response:

๐Ÿ“Š **Contact Tracking Statistics:**

โ€ข **Total Contacts Ever Heard:** 150
โ€ข **Currently Tracked by Device:** 45
โ€ข **Recent Activity (24h):** 12

**By MeshCore Role:**
โ€ข Repeater: 25
โ€ข RoomServer: 8
โ€ข Companion: 10
โ€ข Sensor: 2

**By Device Type:**
โ€ข Repeater: 25
โ€ข RoomServer: 8
โ€ข Companion: 10


!repeater status

Shows contact list capacity status and limits.

Usage:

!repeater status

What it shows: - Current contacts vs estimated limit - Usage percentage - Companion count - Repeater count - Stale contacts count - Health status indicator

Example Response:

๐Ÿ“Š 285/300 (95%) | ๐Ÿ‘ฅ10 ๐Ÿ“ก25 โฐ5 | โš ๏ธ NEAR

Status Indicators: - โœ… OK - Healthy usage - โš ๏ธ NEAR - Approaching limit - ๐Ÿšจ FULL! - At or over limit


Contact List Management

!repeater manage

Automatically manages the contact list to prevent hitting capacity limits.

Usage:

!repeater manage                    # Perform automatic management
!repeater manage --dry-run          # Preview what would be done
!repeater manage -d                 # Short form for --dry-run

What it does: - Analyzes contact list capacity - Removes stale contacts - Removes old repeaters (14+ days) - If at limit, performs aggressive cleanup (7+ day repeaters, 14+ day stale contacts) - Shows what actions were taken

Example Response (dry-run):

๐Ÿ” **Contact List Management (Dry Run)**

๐Ÿ“Š Current status: 285/300 (95.0%)

โš ๏ธ **Actions that would be taken:**
   โ€ข Remove 10 stale contacts
   โ€ข Remove old repeaters (14+ days)

Example Response (executed):

๐Ÿ”ง **Contact List Management Results**

๐Ÿ“Š Final status: 270/300 (90.0%)

โœ… **Actions taken:**
   โ€ข Removed 10 stale contacts
   โ€ข Removed 5 old repeaters (14+ days)


!repeater add

Adds a discovered contact to the device contact list.

Usage:

!repeater add "ContactName"                    # Add by name
!repeater add "ContactName" <public_key>       # Add with public key
!repeater add "John" "0x1234..." "Manual add"   # With reason

What it does: - Adds the specified contact to the device - Can optionally specify public key - Records addition reason

Example Response:

โœ… Successfully added contact: John


!repeater auto

Toggles manual contact addition setting.

Usage:

!repeater auto on                    # Enable auto-add
!repeater auto off                   # Disable auto-add
!repeater auto enable                # Enable (alternative)
!repeater auto disable               # Disable (alternative)

What it does: - Controls whether contacts are automatically added when discovered - When OFF: Bot requires manual addition via !repeater add - When ON: Bot automatically adds discovered contacts

Example Response:

โœ… Manual contact addition disabled


Testing & Debugging

!repeater test

Tests meshcore-cli command functionality.

Usage:

!repeater test

What it does: - Tests if meshcore-cli commands are available - Verifies help command works - Verifies remove_contact command works - Reports if purging functionality will work

Example Response:

๐Ÿงช **MeshCore-CLI Command Test Results**

๐Ÿ“‹ Help command: โœ… PASS
๐Ÿ—‘๏ธ Remove contact command: โœ… PASS

โœ… All required commands are available.

If commands are missing:

๐Ÿงช **MeshCore-CLI Command Test Results**

๐Ÿ“‹ Help command: โœ… PASS
๐Ÿ—‘๏ธ Remove contact command: โŒ FAIL

โš ๏ธ **WARNING**: remove_contact command not available!
This means repeater purging will not work properly.
Check your meshcore-cli installation and device connection.


!repeater test-purge

Tests the improved purge system.

Usage:

!repeater test-purge

What it does: - Performs a test purge operation - Shows initial and final contact counts - Reports which purge method was used - Verifies the purge system is working

Example Response:

๐Ÿงช Test: TestContact | 50โ†’49 (-1) | contact_key | โœ… OK


!repeater debug-purge

Debugs the purge system to see what repeaters are available.

Usage:

!repeater debug-purge

What it shows: - Total contacts on device - Number of repeaters found - List of repeaters with their types - Test of purge selection logic

Example Response:

๐Ÿ” Debug: 50 total, 12 repeaters | โ€ข Hillcrest (Repeater)... | โ€ข Northgate (RoomServer)... | Test: 3 available


Help

!repeater help

Shows comprehensive help for all repeater commands.

Usage:

!repeater help


Configuration

The repeater management system respects several configuration settings in config.ini:

  • auto_manage_contacts - Controls automatic contact management
  • device - Device handles auto-addition, bot manages capacity
  • bot - Bot automatically adds companion contacts and manages capacity
  • false - Manual mode (use commands to manage contacts)

  • Auto-purge threshold and limits are configured in the repeater manager


Notes

  1. DM Only: All repeater commands are DM-only for security reasons
  2. Rate Limiting: Geolocation commands respect rate limits (2 seconds between requests)
  3. Database Tracking: All actions are logged in the database with reasons
  4. Verification: Purge operations verify successful removal
  5. Background Tasks: Some operations (like background geocoding) run asynchronously
  6. Multi-Message Responses: Some commands (like locations) may send multiple messages to stay within message size limits

Common Use Cases

Initial Setup

!repeater scan                    # Catalog existing repeaters
!repeater status                  # Check contact list capacity

Regular Maintenance

!repeater status                  # Check capacity
!repeater manage                  # Auto-manage if needed
!repeater update-geo              # Fill in missing location data

Emergency Cleanup

!repeater status                  # Check if at limit
!repeater purge-status            # Detailed status
!repeater auto-purge trigger      # Trigger auto-purge

Bulk Operations

!repeater purge 30                # Remove old repeaters
!repeater update-geo 20           # Geocode 20 repeaters
!repeater geocode bulk 25         # Bulk geocode 25 contacts

Error Messages

Common error messages and their meanings:

  • Repeater manager not initialized - Bot configuration issue, check logs
  • No repeaters found - No repeaters match your criteria
  • Failed to purge - Contact removal failed (try force option)
  • No network connectivity - Cannot reach geocoding service
  • Rate limited - Too many geocoding requests (wait and retry)

See Also

  • REPEATER_MANAGEMENT.md - Technical details about repeater management system
  • Bot configuration file (config.ini) - Configuration options