An intelligent, multi-account automation bot for PokeMeow Discord bot with advanced CAPTCHA solving, smart ball selection, and comprehensive activity tracking.
- Overview
- Features
- Prerequisites
- Installation
- Configuration
- Usage
- Project Structure
- How It Works
- Troubleshooting
- Contributing
- Disclaimer
- License
PokeGrind is a sophisticated automation bot designed to interact with the PokeMeow Discord bot. It automates Pokemon hunting, fishing, item management, and ball inventory while implementing intelligent strategies to maximize efficiency and minimize detection.
- 🤖 Fully Automated: Runs 24/7 with minimal intervention
- 🧠 Intelligent Ball Selection: Automatically chooses the optimal Pokeball based on rarity
- 🔍 Advanced CAPTCHA Solver: YOLOv8-powered digit detection with high accuracy
- 📊 Comprehensive Tracking: Real-time statistics and webhook notifications
- 🎣 Multi-Activity Support: Handles both hunting and fishing simultaneously
- 👥 Multi-Account Management: Run multiple accounts concurrently
- ⚡ Resource Management: Auto-restocks balls, uses items, and manages inventory
- 🎯 Smart Exception Handling: Custom ball configurations for specific Pokemon
-
Automated Pokemon Hunting
- Continuous
/pokemoncommand execution - Intelligent ball selection based on Pokemon rarity
- Custom ball assignments for specific Pokemon
- Held item detection and special ball handling
- Daily hunt limit detection with automatic midnight reset scheduling
- Continuous
-
🎣 Automated Fishing
- Parallel fishing and hunting operations
- Fish-specific rarity detection
- Separate ball configuration for fishing
- Integrated with fish database for rarity lookup
-
🧩 Advanced CAPTCHA Solving
- YOLOv8 Nano model for digit detection
- Image preprocessing and enhancement
- Automatic CAPTCHA response submission
- High success rate with confidence-based validation
-
📦 Item Management
- Automatic ball restocking when thresholds are met
- Grazz Berry usage for held items
- Repel activation when available
- Egg hatching automation
- Lootbox opening
- Startup command randomization
-
📊 Statistics & Tracking
- Real-time catch tracking by rarity
- Session statistics (catches, coins, tokens)
- Webhook notifications for rare catches
- Market view triggers for valuable Pokemon
- Console logging with color-coded severity levels
- Rate Limiting: Respects Discord API limits
- Random Delays: Humanized timing between actions
- Error Recovery: Automatic reconnection on failures
- Daily Limit Handling: Smart scheduling for hunt limit resets
- Activity Coordination: Prevents conflicting simultaneous actions
- Configurable Ball Selection: Define ball usage per rarity tier
- Pokemon Exceptions: Override ball selection for specific Pokemon
- Fish Exceptions: Custom handling for rare fish
- Per-Account Settings: Individual configurations for multiple accounts
- Webhook Integration: Custom Discord webhook for notifications
Before installing PokeGrind, ensure you have:
- Python 3.8+ installed on your system
- Discord User Token (for selfbot operation)
- PokeMeow Bot in your Discord server
- Channel/Server IDs where PokeMeow is active
- YOLOv8 Model File (
best.pt) for CAPTCHA solving
All dependencies are listed in requirements.txt:
discord.py-self>=2.1.0b0- Discord selfbot libraryaiohttp>=3.8.0- Async HTTP clientPillow>=9.0.0- Image processing for CAPTCHApytz>=2022.1- Timezone handlingpygame>=2.1.0- Audio notificationsultralytics>=8.0.0- YOLOv8 for CAPTCHA solving
git clone https://github.com/dragonblz/PokeGrind.git
cd PokeGrindpip install -r requirements.txtPlace your trained YOLOv8 model file (best.pt) in the root directory of the project.
Edit config.json with your account details and preferences (see Configuration section below).
The bot is configured through config.json. Here's a breakdown of the configuration structure:
Define which Pokeball to use for each rarity tier:
{
"Balls": {
"Common": "pb", // Pokeball
"Uncommon": "pb", // Pokeball
"Rare": "gb", // Greatball
"Super Rare": "ub", // Ultraball
"Legendary": "mb", // Masterball
"Shiny": "mb", // Masterball
"Shiny Event": "mb", // Masterball
"Shiny Full-odds": "prb" // Premier Ball
}
}Available Ball Types:
pb- Pokeballgb- Greatballub- Ultraballmb- Masterballdb- Diveball (fishing)prb- Premier Ball
Separate ball configuration for fishing:
{
"FishBalls": {
"Common": "pb",
"Uncommon": "gb",
"Rare": "ub",
"Super Rare": "ub",
"Legendary": "db",
"Shiny": "mb",
"Golden": "mb"
}
}Override ball selection for specific Pokemon:
{
"PokemonExceptions": {
"Yamper": "ub",
"Riolu": "ub",
"Groudon": "prb",
"Celebi": "prb"
}
}Configure one or more accounts:
{
"Accounts": [
{
"name": "MyAccount",
"enabled": true,
"token": "YOUR_DISCORD_TOKEN_HERE",
"channelid": "CHANNEL_ID_HERE",
"serverid": "SERVER_ID_HERE",
"FishingEnabled": false,
"BallRestock": {
"masterball": {"threshold": 0, "amount": 1},
"pokeball": {"threshold": 10, "amount": 20},
"greatball": {"threshold": 1, "amount": 5},
"ultraball": {"threshold": 1, "amount": 1},
"premierball": {"threshold": 0, "amount": 1}
}
}
]
}Account Parameters:
name: Display name for loggingenabled: Set tofalseto disable this accounttoken: Your Discord user tokenchannelid: Channel ID where PokeMeow is activeserverid: Server (guild) IDFishingEnabled: Enable/disable fishing for this accountBallRestock: Auto-restock settings (threshold = when to buy, amount = how many)
Add a Discord webhook URL for notifications:
{
"WebhookURL": "https://discord.com/api/webhooks/YOUR_WEBHOOK_URL"
}python main.pyThe bot will:
- Load configuration from
config.json - Initialize all enabled accounts
- Connect to Discord
- Load cogs (hunting, fishing, items)
- Run startup checks
- Begin automated activities
PokeGrind supports running multiple accounts simultaneously. Each account:
- Runs in its own async task
- Has independent activity coordination
- Maintains separate statistics
- Can have different configurations
Press Ctrl+C to gracefully shut down all accounts.
PokeGrind/
├── main.py # Entry point and multi-account manager
├── config.json # Configuration file (user-created)
├── requirements.txt # Python dependencies
├── best.pt # YOLOv8 CAPTCHA model
├── fishes.json # Fish rarity database
├── state.json # Runtime state persistence
├── bell.mp3 # Audio notification
│
├── core/ # Core functionality
│ ├── __init__.py
│ ├── config.py # Configuration loader
│ └── logger.py # Colored console logging
│
└── cogs/ # Activity modules
├── __init__.py
├── base.py # Base activity cog
├── hunting.py # Pokemon hunting logic
├── fishing.py # Pokemon fishing logic
├── items.py # Item management
├── utils.py # Utilities (ball matcher, coordinator)
├── tracker.py # Statistics tracking
└── captcha_solver.py # YOLOv8 CAPTCHA solver
The bot uses an ActivityCoordinator to manage multiple activities:
- Hunting - Executes
/pokemoncommand - Fishing - Executes
/fishcommand (if enabled) - Items - Manages repels, berries, eggs, and balls
Activities are coordinated to prevent conflicts and ensure smooth operation.
- Parse Pokemon message for name and rarity
- Check if Pokemon is in exceptions list → use exception ball
- Check if Pokemon has held item → use held item ball configuration
- Use standard ball configuration based on rarity
- Verify ball is in inventory
- Click appropriate ball button
- Detect CAPTCHA message from PokeMeow
- Download CAPTCHA image
- Preprocess image (grayscale conversion, enhancement)
- Run YOLOv8 inference to detect digits
- Sort detected digits left-to-right
- Combine digits into answer
- Submit answer to CAPTCHA prompt
When the daily hunt limit is reached:
- Bot detects "daily limit" message
- Calculates time until midnight in America/New_York timezone + random offset (0-30 min)
- Schedules disconnection
- Waits for reset time
- Automatically reconnects and resumes hunting
Bot doesn't start:
- Check that
config.jsonexists and is valid JSON - Verify your Discord token is correct
- Ensure
best.ptmodel file is present
Commands not found:
- Make sure PokeMeow bot has registered slash commands in your server
- Try using PokeMeow commands manually first
- Check channel and server IDs are correct
CAPTCHA solving fails:
- Ensure
best.ptmodel is properly trained - Check model confidence threshold in
captcha_solver.py - Verify Pillow and ultralytics are installed correctly
Multiple accounts not working:
- Each account needs a unique token
- Verify all accounts have
"enabled": true - Check logs for account-specific errors
Ball restock not working:
- Ensure you have sufficient coins
- Check ball restock thresholds and amounts
- Verify
/shop buycommand is available
The bot uses color-coded console logging:
- 🟢 Green: Startup and success messages
- 🔵 Blue: Info and general operations
- 🟡 Yellow: Warnings
- 🔴 Red: Errors
- 🟣 Magenta: Hunt/fish actions
- 🟠 Cyan: Item operations
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow existing code style and conventions
- Add comments for complex logic
- Test thoroughly with multiple accounts
- Update documentation for new features
IMPORTANT: READ CAREFULLY
This bot is for educational purposes only. Using selfbots violates Discord's Terms of Service and may result in account termination. The authors of this project:
- Do NOT encourage violating Discord's ToS
- Are NOT responsible for any account bans or penalties
- Are NOT liable for any damages or consequences
- Provide this software AS-IS without warranty
Use at your own risk. By using this bot, you acknowledge and accept all risks associated with automated Discord activity.
- Be respectful of Discord's platform and community
- Don't spam or harass other users
- Don't use this bot to gain unfair advantages in competitive scenarios
- Consider the impact on server performance and other players
This project is licensed under the MIT License - see the LICENSE file for details.
- discord.py-self - For the selfbot library
- Ultralytics - For the YOLOv8 framework
- PokeMeow - For the Pokemon Discord bot
- Contributors - For improvements and bug fixes
Made with ❤️ for Pokemon enthusiasts