Skip to content

Instantly share code, notes, and snippets.

@Petap0w
Last active July 12, 2025 20:02
Show Gist options
  • Save Petap0w/88b7f4769317f2e805b0186c42a557f9 to your computer and use it in GitHub Desktop.
Save Petap0w/88b7f4769317f2e805b0186c42a557f9 to your computer and use it in GitHub Desktop.
Metagross Doc

Metagross Discord Bot - Complete Command Guide

This guide covers all available Discord slash commands for the Metagross Pokémon notification bot. Commands are organized by functionality and include detailed examples for both regular users and administrators.

Table of Contents

Prerequisites

Required Roles

  • Premium Role: Required for most commands
  • Admin Role: Required for administrative functions and managing other users

Getting Started

  1. Ensure you have the Premium or Admin role in your Discord server
  2. Set your location using /location (recommended for distance-based filtering)
  3. Create Pokémon filters using /pokemon add or use aliases for convenience

Pokémon Filter Management

/pokemon add - Create Pokémon Filters

Creates a new filter group for Pokémon notifications. You must specify at least one filter parameter.

Basic Usage

/pokemon add pokemon:charizard,blastoise miniv:90 maxiv:100

All Available Parameters

Parameter Type Description Example
pokemon String Pokémon names, IDs, or aliases (comma-separated) charizard,blastoise or rare-spawns
form String Form IDs (comma-separated) 1,2,3
miniv Number Minimum IV percentage 90
maxiv Number Maximum IV percentage 100
minlevel Number Minimum level 30
maxlevel Number Maximum level 50
mincp Number Minimum CP 2000
maxcp Number Maximum CP 4000
attack String Attack IV range 10-15
defense String Defense IV range 10-15
stamina String Stamina IV range 10-15
maxrank Integer Maximum PvP rank 10
gender Integer Gender filter 1 (male), 2 (female), 3 (genderless)
size Integer Size filter 1 (XXS), 2 (XS), 3 (M), 4 (XL), 5 (XXL)
distance Number Maximum distance in meters (requires location set) 5000

Examples

High IV Rare Pokémon:

/pokemon add pokemon:rare-spawns miniv:95 maxiv:100 minlevel:20

Specific Pokémon with CP Range:

/pokemon add pokemon:charizard,blastoise mincp:2000 maxcp:3500 miniv:80

PvP-Ready Pokémon:

/pokemon add pokemon:azumarill,medicham maxrank:10 miniv:90

Perfect IV Pokémon:

/pokemon add pokemon:all miniv:100 maxiv:100

Specific IV Spreads:

/pokemon add pokemon:metagross attack:15 defense:15 stamina:15

Local Area Pokémon:

/pokemon add pokemon:all miniv:80 distance:2000

/pokemon list - View Your Filters

Displays all your current Pokémon filter groups with their settings.

Usage

/pokemon list

Output Format

The command shows:

  • Filter Group ID: Used for removal
  • Pokémon: Original input (aliases in bold, individual Pokémon in Pokédex order)
  • Filters: All active filter parameters
  • Status: Whether the filter is active

Example Output

**Filter Group #1**
Pokémon: **rare-spawns**, charizard, blastoise
Filters: IV: 90-100%, Level: 20-50, CP: 2000-4000, Distance: 5000m
Status: ✅ Active

**Filter Group #2**
Pokémon: azumarill, medicham
Filters: IV: 90-100%, PvP Rank: ≤10
Status: ✅ Active

/pokemon form - View Pokémon Forms

Displays all available forms for a specific Pokémon with their form IDs and names. This is useful for setting up form-based filters.

Usage

/pokemon form pokemon:deoxys

or

/pokemon form pokemon:386

Parameters

Parameter Type Description Example
pokemon String Single Pokémon name or ID deoxys or 386

Restrictions

  • Single Pokémon Only: Cannot use multiple Pokémon, aliases, or "all"
  • No Commas/Spaces: Must be a single Pokémon identifier
  • Name or ID: Can use either Pokémon name or Pokédex ID

Output Format

The command returns a Discord embed containing:

  • Title: "Forms for [Pokémon Name]"
  • Form List: Each form with its ID and name (e.g., "0 - Normal", "1 - Attack")
  • Pokémon Image: Thumbnail image of the Pokémon (if uicon_base_url is configured)
  • Sorted Order: Forms listed in ascending order by form ID

Example Output

**Forms for Deoxys**
`0` - Normal
`1` - Attack
`2` - Defense
`3` - Speed

Use Cases

  • Filter Setup: Use form IDs when creating filters with /pokemon add form:1,2
  • Form Discovery: Learn what forms are available for specific Pokémon
  • Filter Planning: Plan form-based notification strategies

Examples

View Forms by Name:

/pokemon form pokemon:castform

View Forms by ID:

/pokemon form pokemon:351

Common Multi-Form Pokémon:

/pokemon form pokemon:deoxys
/pokemon form pokemon:wormadam
/pokemon form pokemon:cherrim
/pokemon form pokemon:giratina

Alias System

Aliases allow you to create named groups of Pokémon for easier filter management.

/alias add - Create Pokémon Aliases

Creates a reusable alias for a group of Pokémon.

Usage

/alias add name:rare-spawns pokemon:dragonite,tyranitar,salamence,metagross

Parameters

Parameter Type Description Example
name String Alias name (one word or hyphenated) rare-spawns or pvp-meta
pokemon String Pokémon names or IDs (comma/space separated) charizard,blastoise

Naming Rules

  • Must be one word or hyphenated words
  • Can contain letters, numbers, and hyphens
  • Cannot start/end with hyphen
  • Cannot have consecutive hyphens
  • Cannot conflict with existing Pokémon names

Examples

Rare Spawns:

/alias add name:rare-spawns pokemon:dragonite,tyranitar,salamence,metagross,gyarados

Starter Pokémon:

/alias add name:starters pokemon:bulbasaur,ivysaur,venusaur,charmander,charmeleon,charizard,squirtle,wartortle,blastoise

PvP Meta Pokémon:

/alias add name:pvp-meta pokemon:azumarill,medicham,altaria,skarmory

Legendary Pokémon:

/alias add name:legendaries pokemon:mewtwo,mew,lugia,ho-oh

/alias list - View Your Aliases

Displays all your current aliases with their Pokémon groups.

Usage

/alias list

Output Format

The command shows:

  • Alias ID: Used for removal
  • Alias Name: The name you gave the alias
  • Pokémon Count: Number of Pokémon in the group
  • Pokémon List: All Pokémon in the alias (in Pokédex order)

Example Output

**Alias #1: rare-spawns**
Pokémon (4): dragonite, salamence, tyranitar, metagross

**Alias #2: pvp-meta**
Pokémon (4): altaria, azumarill, medicham, skarmory

Location Management

/location - Set Your Location

Sets your location for distance-based filtering. You can use coordinates or an address.

Usage

/location address:Paris, France

or

/location coordinates:48.8566,2.3522

Parameters

Parameter Type Description Example
address String Human-readable address Paris, France
coordinates String Latitude,longitude 48.8566,2.3522

Examples

Set Location by Address:

/location address:New York, NY

Set Location by Coordinates:

/location coordinates:40.7128,-74.0060

Set Location for Another User (Admin Only):

/location address:London, UK user:123456789012345678

Notes

  • Address Geocoding: Addresses are automatically converted to coordinates
  • Distance Filtering: Once set, you can use distance parameter in filters
  • Admin Override: Admins can set location for other users
  • Validation: Invalid addresses or coordinates will show an error

Filter Removal

/remove - Remove Filters or Aliases

Removes filter groups or aliases by their ID.

Usage

/remove pokemon:1,3,5

or

/remove alias:2

Parameters

Parameter Type Description Example
pokemon String Filter group IDs (comma-separated) 1,3,5
alias Integer Single alias ID 2

Notes

  • Filter Groups: Can remove multiple at once (comma-separated IDs)
  • Aliases: Can only remove one at a time
  • ID Ordering: Response shows IDs in numerical order regardless of input order
  • Cascade Effect: Removing an alias updates all filters that use it

Examples

Remove Multiple Filters:

/remove pokemon:2,4,6

Response: "✅ Removed filter group(s): 2, 4, 6"

Remove Alias:

/remove alias:3

Response: "✅ Removed alias 'rare-spawns' (#3), updated 2 filters, deleted 1 empty filters"


Area Management

Area management allows Discord servers to automatically create and manage threads for different geographic areas. Users can join area threads to receive Pokémon alerts for specific locations.

How Area Management Works

When area management is enabled for a guild:

  1. Automatic Thread Creation: The bot creates Discord threads for each geographic area
  2. Geofence Integration: Areas are defined by geofence data from your server
  3. Filter Application: Each area thread applies configurable filters to Pokémon alerts
  4. User Access: Premium and Admin users can join area threads via buttons

Joining Area Threads

Area threads are displayed in parent channels with interactive buttons:

Area Thread Buttons

  • Join Thread: Click to join a specific area thread
  • Page Navigation: Navigate through multiple pages of area threads
  • Thread Access: Only Premium and Admin users can join threads

Example Area Structure

📁 Central Paris (Parent Channel)
├── 🧵 Eiffel Tower Area (Thread)
├── 🧵 Louvre Area (Thread)
└── 🧵 Champs-Élysées Area (Thread)

📁 North Paris (Parent Channel)
├── 🧵 Sacré-Cœur Area (Thread)
└── 🧵 Montmartre Area (Thread)

Area Thread Features

  • Private Threads: Only joined users can see and receive alerts
  • Automatic Filtering: Pokémon alerts are filtered by area + config filters
  • Location Visualization: Alerts include static maps showing spawn location
  • Organized Structure: Areas are grouped by parent regions

Area Management Configuration

Area management is configured by server administrators in the bot configuration:

[[guilds]]
guild_id = "your_guild_id"
area_management = true
area_filters = ["high_iv", "rare_pokemon"]

Area Thread Permissions

  • @everyone: Cannot see area channels or threads
  • Premium Role: Can view parent channels and join area threads
  • Admin Role: Can view parent channels and join area threads
  • Bot: Full control over thread creation and message sending

Troubleshooting Area Threads

Cannot see area channels:

  • Ensure you have the Premium or Admin role
  • Check that area management is enabled for your guild

Cannot join area threads:

  • Verify you have the required role (Premium or Admin)
  • Check that the thread still exists (may have been deleted)

No alerts in area threads:

  • Area threads only receive Pokémon that spawn within the area
  • Alerts are also filtered by the guild's area filters
  • Check that the area has recent Pokémon spawns

📖 For detailed area management documentation, see docs/AREA_MANAGEMENT.md


Admin Commands

/destination - Manage Destinations (Admin Only)

Manages notification destinations for the bot.

Available Actions

List Destinations:

/destination action:list

Enable Destination:

/destination action:enable user:123456789012345678

Disable Destination:

/destination action:disable user:123456789012345678

Clean User Thread:

/destination action:clean user:123456789012345678

Resets the specified user's private thread access to owner and admins only, removing any unauthorized users who were tagged.

Parameters

Parameter Type Description Example
action String Action to perform list, enable, disable, clean
user String User ID (for enable/disable/clean actions) 123456789012345678

Admin User Management

Most commands support admin override for managing other users:

Add Filter for Another User

/pokemon add pokemon:rare-spawns miniv:90 user:123456789012345678

Set Location for Another User

/location address:Paris, France user:123456789012345678

Create Alias for Another User

/alias add name:rare-spawns pokemon:dragonite,tyranitar user:123456789012345678

Rate Limit Protection

Metagross includes automatic rate limit protection to prevent Discord from throttling your notifications.

How It Works

  • Automatic Detection: Monitors Discord API responses for rate limit headers
  • Smart Thresholds: Tracks rate limits across multiple timeframes (1min, 1hr, 24hr)
  • Auto-Disable: Automatically disables destinations that hit rate limits too frequently
  • User Notifications: Sends detailed Discord embeds when destinations are disabled
  • Recovery: Easy re-enabling with automatic rate limit reset

Rate Limit Thresholds

Destinations are automatically disabled when they hit:

  • 5+ rate limits in 1 minute, OR
  • 20+ rate limits in 1 hour, OR
  • 50+ rate limits in 24 hours

User Notifications

When a destination is auto-disabled, users receive a rich Discord embed with:

  • Reason: Why the destination was disabled
  • Threshold: Which threshold was exceeded
  • Recovery: How to re-enable the destination
  • Timing: When the rate limit will reset

Re-enabling Destinations

Disabled destinations can be re-enabled using:

/destination action:enable user:YOUR_USER_ID

Prevention Tips

  • Use Specific Filters: More specific filters reduce notification volume
  • Add Distance Limits: Distance filtering reduces notifications from far locations
  • Monitor Queue Health: Watch for queue recovery alerts in logs
  • Adjust Batch Settings: Increase batch sizes and intervals for high-volume scenarios

Tips and Best Practices

Filter Optimization

Start Specific:

# Good: Specific Pokémon with IV requirements
/pokemon add pokemon:dragonite,tyranitar miniv:90 mincp:2000

# Avoid: Too broad
/pokemon add pokemon:all miniv:20

Use Distance Filtering:

# Add distance to reduce notifications from far locations
/pokemon add pokemon:rare-spawns miniv:80 distance:5000

Combine Multiple Criteria:

# Multiple filters for better targeting
/pokemon add pokemon:azumarill miniv:90 maxrank:10 maxcp:1500

Alias Management

Create Logical Groups:

/alias add name:starters pokemon:bulbasaur,ivysaur,venusaur,charmander,charmeleon,charizard,squirtle,wartortle,blastoise
/alias add name:legendaries pokemon:mewtwo,mew,lugia,ho-oh

Use Aliases in Filters:

/pokemon add pokemon:legendaries miniv:95
/pokemon add pokemon:starters miniv:90 distance:3000

Location Management

Set Your Location Early:

/location address:Your City, State

Use Precise Coordinates:

/location coordinates:40.7128,-74.0060

Performance Tips

Monitor Your Filters:

  • Use /pokemon list regularly to review active filters
  • Remove unused filters with /remove pokemon:ID
  • Update filters based on your needs

Use Distance Filtering:

  • Always set your location for distance-based filtering
  • Start with larger distances and reduce as needed
  • Consider your travel range when setting distance limits

Optimize for Your Use Case:

  • Collectors: Focus on IV and rarity filters
  • PvP Players: Use PvP rank and league-specific filters
  • Local Players: Emphasize distance and area-based filtering

Command Reference

User Commands

Command Description Admin Only
/pokemon add Create Pokémon filters No
/pokemon list View your filters No
/pokemon form View Pokémon forms No
/alias add Create Pokémon aliases No
/alias list View your aliases No
/location Set your location No
/remove Remove filters or aliases No
/destination Manage bot destinations and clean threads Yes

All commands support the user parameter for admin management of other users' settings.


For technical support or feature requests, contact your server administrator or the bot developers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment