The ultimate Pika Network statistics Discord bot — Track player stats, compare players, monitor guilds, view skins, and much more!
Get detailed stats with auto-calculated ratios (KDR, WLR, FKDR, arrow accuracy) for:
| Game Mode | Command | Modes Available |
|---|---|---|
| 🛏️ BedWars | /bw | Solo, Doubles, 3v3v3v3, 4v4v4v4, Ranked |
| ⚔️ SkyWars | /sw | Solo, Doubles, Mega, Ranked |
| 🥊 Unranked Practice | /practice | Boxing, NoDebuff, Gapple, Sumo, BuildUHC, Combo, Debuff, Fist, Spleef |
| 🏆 Ranked Practice | /ranked | Boxing, NoDebuff, Gapple, Sumo, BuildUHC, Combo, Debuff, Fist, Spleef |
| ❤️ Lifesteal | /lifesteal | All Modes |
| 🗡️ KitPvP | /kitpvp | All Modes |
| 🌲 Survival | /survival | All Modes |
| 🏝️ OP Skyblock | /opskyblock | All Modes |
| 🌴 Classic Skyblock | /classicskyblock | All Modes |
| ⚡ OP Factions | /opfactions | All Modes |
All stats support 4 time intervals: Total, Monthly, Weekly, Daily.
- Rank & Level with progress bar
- Online status detection
- Guild membership info
- Verification badges (Discord, Email, Booster)
- Minecraft avatar display
- Compare any two players side by side
- Color-coded indicators (🟢 Better, 🔴 Worse, 🟡 Tied)
- Auto-calculated ratio comparisons
- Quick shortcuts:
/bw-compare,/sw-compare
- Guild info — Owner, level, creation date, member count
- Member list — Full guild roster
- Guild tracking — Real-time notifications when members join/leave
- Background monitoring every 5 minutes
- Full body render of Minecraft skins
- 3D head render
- 2D face avatar
- Download links for all formats
- Interactive help menu with dropdown categories
- Bot statistics — Server count, uptime, latency
- Server info — Discord server details
- Vote reminders — Configurable daily DM reminders
- Ping checker — WebSocket & API latency
Click to view screenshots
/bw PlayerName total solo
Shows BedWars stats with KDR, WLR, FKDR ratios, arrow accuracy, and leaderboard rankings.
/compare Player1 Player2 bedwars total ALL_MODES
Side-by-side comparison with color-coded indicators.
/profile PlayerName
Rich profile with rank, level progress bar, guild info, and online status.
/guild GuildName
Complete guild information with member roster.
- Python 3.10+ — Download
- Discord Bot Token — Create one
Clone the repository
git clone https://github.com/codewithriza/PikaStatsBot.git cd PikaStatsBotCreate a virtual environment (recommended)
python -m venv .venv source .venv/bin/activate # Linux/macOS# or .venv\Scripts\activate # Windows
Install dependencies
pip install -r bot/requirements.txt
Configure the bot
cp .env.example .env
Edit
.envand add your Discord bot token:DISCORD_TOKEN=your_bot_token_here
Run the bot
python -m bot.bot
- Go to Discord Developer Portal
- Create a New Application
- Go to Bot → Click Add Bot
- Copy the Token and paste it in your
.envfile - Enable these Privileged Gateway Intents:
- ✅ Message Content Intent
- Go to OAuth2 → URL Generator:
- Scopes:
bot,applications.commands - Permissions:
Send Messages,Embed Links,Read Message History,Use External Emojis
- Scopes:
- Use the generated URL to invite the bot to your server
PikaStatsBot/
├── bot/
│ ├── __init__.py
│ ├── bot.py # Main bot entry point & setup
│ ├── config.py # Configuration management
│ ├── requirements.txt # Python dependencies
│ ├── cogs/
│ │ ├── __init__.py
│ │ ├── stats.py # Game stats commands (10+ game modes)
│ │ ├── profile.py # Profile, friends, skin, avatar commands
│ │ ├── guild.py # Guild info, members, tracking commands
│ │ ├── compare.py # Player comparison commands
│ │ └── utility.py # Help, ping, vote, bot info commands
│ └── utils/
│ ├── __init__.py
│ ├── api.py # Async Pika Network API wrapper with caching
│ └── embeds.py # Embed builder utilities
├── .env.example # Environment variable template
├── .gitignore # Git ignore rules
├── CONTRIBUTING.md # Contribution guidelines
├── LICENSE # MIT License
└── README.md # This file
| Command | Description |
|---|---|
/bw <player> [interval] [mode] | BedWars statistics |
/sw <player> [interval] [mode] | SkyWars statistics |
/practice <player> [interval] [mode] | Unranked Practice statistics |
/ranked <player> [interval] [mode] | Ranked Practice statistics |
/lifesteal <player> [interval] | Lifesteal statistics |
/kitpvp <player> [interval] | KitPvP statistics |
/survival <player> [interval] | Survival statistics |
/opskyblock <player> [interval] | OP Skyblock statistics |
/classicskyblock <player> [interval] | Classic Skyblock statistics |
/opfactions <player> [interval] | OP Factions statistics |
/stats <player> <game> [interval] [mode] | Any game mode (generic) |
| Command | Description |
|---|---|
/profile <player> | View player profile |
/friends <player> | View friends list |
/skin <player> | View Minecraft skin (full body) |
/avatar <player> | View Minecraft head avatar |
| Command | Description |
|---|---|
/guild <name> | View guild information |
/guild-members <name> | List all guild members |
/guild-track <name> | Track guild member changes |
/guild-untrack <name> | Stop tracking a guild |
| Command | Description |
|---|---|
/compare <p1> <p2> [game] [interval] [mode] | Compare two players |
/bw-compare <p1> <p2> [mode] | Quick BedWars comparison |
/sw-compare <p1> <p2> [mode] | Quick SkyWars comparison |
| Command | Description |
|---|---|
/help | Interactive help menu |
/ping | Check bot latency |
/vote | Pika Network vote links |
/botinfo | Bot statistics & info |
/serverinfo | Discord server info |
/invite | Bot invite link |
All configuration is done through environment variables (.env file):
| Variable | Required | Default | Description |
|---|---|---|---|
DISCORD_TOKEN | ✅ Yes | — | Your Discord bot token |
BOT_PREFIX | No | ! | Legacy command prefix |
OWNER_ID | No | 0 | Your Discord user ID |
VOTE_REMINDER_USER_ID | No | 0 | User ID for vote reminders (0 = disabled) |
VOTE_REMINDER_HOUR | No | 18 | Hour to send reminder (24h format) |
VOTE_REMINDER_TIMEZONE | No | Asia/Kolkata | Timezone for reminders |
PikaStatsBot uses the following Pika Network API endpoints:
GET https://stats.pika-network.net/api/profile/{player_name}
Returns: username, rank, level, experience, lastSeen, friends, clan, verification status.
GET https://stats.pika-network.net/api/profile/{player_name}/leaderboard?type={game}&interval={interval}&mode={mode}
- type:
bedwars,skywars,unrankedpractice,rankedpractice,lifesteal,kitpvp,survival,opskyblock,classicskyblock,opfactions - interval:
total,monthly,weekly,daily - mode:
ALL_MODES,solo,doubles, etc.
GET https://stats.pika-network.net/api/clans/{guild_name}
Returns: name, tag, owner, members, leveling, creationTime.
GET https://api.minetools.eu/uuid/{player_name}
GET https://crafatar.com/avatars/{uuid}
GET https://crafatar.com/renders/head/{uuid}
GET https://crafatar.com/renders/body/{uuid}
GET https://crafatar.com/skins/{uuid}
- Async-first — All API calls use
aiohttpfor non-blocking I/O - Caching — 2-minute TTL cache to reduce API load and improve response times
- Modular cogs — Each feature area is a separate cog for maintainability
- Error handling — Global error handler + per-command error handling
- Logging — Structured logging to console and file
- Type hints — Full type annotations throughout the codebase
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Quick start:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Test thoroughly
- Submit a Pull Request
This project is licensed under the MIT License — see the LICENSE file for details.
PikaStatsBot is not affiliated with, endorsed by, or partnered with PikaNetwork. All data is fetched from publicly available API endpoints.
Made with ❤️ by codewithriza