TeleWoW is a Windows-first Python Telegram bot for monitoring and controlling a local EmuCoach or TrinityCore Mists of Pandaria repack.
Clone this repository into the repack root directory. The repository folder must be named tele-wow and must sit next to Repack and Database. Relative paths in .env are resolved from the tele-wow folder, so the default paths intentionally use ../Repack and ../Database.
- Features
- Preview
- Project layout
- Requirements
- Easy install
- Manual setup
- Running the bot
- Buttons
- Remote Access setup
- Operational notes
- License
- Telegram bot with inline keyboard control panel
- User ID whitelist protection
.env-driven configuration- Host stats for CPU, RAM, and disk usage
- Process monitoring for
mysqld.exe,authserver.exe, andworldserver.exe - Crash alerts when a tracked process transitions from running to stopped
- Start, stop, and restart actions for MySQL, AuthServer, and WorldServer
- Remote Access actions for worldserver commands
- In-bot account creation through worldserver RA commands
- Confirmation dialogs for risky actions
- Cleaner dashboard-style main panel with reduced bot message clutter
Main dashboard
Server status
Remote Access
Crash alert example
tele-wow/
bot.py
config.py
database.py
install_bot.bat
LICENSE
monitor.py
ra.py
requirements.txt
start_bot.bat
.env.example
screenshots/
TELEGRAM_SETUP.md
- Windows host
- Python 3.11+
- A Telegram bot token from BotFather
- One or more Telegram numeric user IDs for the whitelist
- A WoW repack root folder containing
DatabaseandRepack
Recommended for most users:
install_bot.batWhat the installer does:
- Explains that it only installs the bot, not the WoW repack itself
- Checks that
tele-wowis placed besideDatabaseandRepack - Checks for Python 3.11+ and installs it with
wingetif needed - Creates
.venv - Activates
.venv - Installs the required Python packages
- Creates
.envfrom.env.exampleif.envdoes not already exist
What you still need to do after the installer finishes:
- Open TELEGRAM_SETUP.md and create your Telegram bot.
- Edit
.envand fill in your Telegram values. - Review the default
../Repackand../Databasepaths in.env. - Enable RA in
Repack\worldserver.confif you want Remote Access features. - Start the bot with
start_bot.bat.
The installer does not overwrite an existing .env, and it reuses an existing .venv if one is already present.
-
Clone this repository into your repack root folder and make sure your structure looks like this:
Database/ Repack/ tele-wow/ -
Open a terminal inside the
tele-wowfolder. -
Create and activate a virtual environment on Windows:
python -m venv .venv .\.venv\Scripts\activate -
Install dependencies:
pip install -r requirements.txt -
Copy
.env.exampleto.env. -
Keep the
tele-wowfolder in the repack root directory so the default../Repackand../Databasepaths stay valid. -
Follow the Telegram setup guide in TELEGRAM_SETUP.md to create your bot, get the token, and find your Telegram user IDs and chat ID.
-
Fill in these values in
.env:TELEGRAM_BOT_TOKENTELEGRAM_ALLOWED_USER_IDSTELEGRAM_ALERT_CHAT_ID- Server executable and working-directory paths if your installation differs
RA_HOST,RA_PORT,RA_USERNAME,RA_PASSWORD, andRA_TIMEOUT_SECONDSif you want Remote Access features- Database connection settings if they differ from the default repack config
The default .env.example uses repo-relative paths such as ../Repack/worldserver.exe and ../Database/_Server/MySQL.bat, so it stays portable across different install locations.
python bot.pyWindows launcher:
start_bot.batThe bot polls Telegram, schedules a 15-second heartbeat, and sends crash alerts to the configured chat ID.
start_bot.bat changes to the repo folder, activates .venv, and then runs python bot.py. This makes it suitable for double-click launch or for Windows Task Scheduler.
Task Scheduler note:
- Point the task to
start_bot.batinside thetele-wowfolder - Set
Start into thetele-wowfolder
First run flow:
- Start the bot with
python bot.py. - Open Telegram and search for the bot username you created in BotFather.
- Open the bot chat and press
Start. - Send
/whoamito read your Telegram User ID and Chat ID. - Add that User ID to
TELEGRAM_ALLOWED_USER_IDSin.env. - Add that Chat ID to
TELEGRAM_ALERT_CHAT_IDif you want alerts in that chat. - Restart the bot.
- Send
/startor/menuto open the control panel and enable the fixed navigation keyboard.
Before the whitelist is configured, only /whoami and /debugid are expected to work.
The bot tries to keep one main control-panel message updated instead of sending a new panel message for every action.
After the first authorized /start or /menu, the bot also enables a fixed reply keyboard with safe shortcuts for ๐ Menu, ๐ฎ Status, ๐ Stats, and ๐ Remote.
๐ System Stats: CPU, RAM, and disk usage for the configured host path๐ฎ Server Status: Running or stopped state for MySQL, AuthServer, and WorldServerโก Quick Actions: Start, stop, and restart shortcuts for the server processes๐ Remote Access: Run worldserver RA actions such as server info, saveall, announce, and shutdown๐ค Account Creator: Create a new WoW account through worldserver RA
Fixed reply-keyboard shortcuts:
๐ Menu: Return to the main dashboard panel๐ฎ Status: Open the server status panel๐ Stats: Open the system stats panel๐ Remote: Open the Remote Access panel
Risky actions such as stop, restart, shutdown, and account creation use confirmation steps before the command is executed.
Remote Access (RA) is used for worldserver command execution such as announcements, account commands, and server commands.
The current basic process-control features do not require RA, but any remote worldserver command feature does.
RAmust be enabled inRepack\worldserver.confworldserver.exemust be running- You need an existing WoW account for
RAlogin - That account must have a high enough security level for
Ra.MinLevel
Check the CONSOLE AND REMOTE ACCESS section in Repack\worldserver.conf.
These settings matter:
Ra.Enable = 1
Ra.IP = "127.0.0.1"
Ra.Port = 3443
Ra.MinLevel = 3
Notes:
Ra.Enable = 1enables the remote consoleRa.IP = "127.0.0.1"is recommended when the bot runs on the same machine as the serverRa.MinLevel = 3means the login account must have security level3or higher
RA cannot be used until you already have a privileged account.
The first account is usually created from the local worldserver console window, not through RA itself.
Typical bootstrap flow:
- Start
worldserver.exe - Open the local worldserver console window
- Create an account
- Grant that account a GM or admin level high enough for
RA - Use that account later for
RAlogin
Typical commands are:
account create myadmin mypassword
account set gmlevel myadmin 3 -1
Important:
- Command syntax can vary slightly between core versions
- If your core uses a different account permission command, use the equivalent command available in your console
-1commonly means all realms on Trinity or SkyFire style cores
Once RA is configured, it can be used for commands such as:
- server announcements
- save commands
- shutdown commands
- account creation commands handled by worldserver
Add these values to .env:
RA_HOST=127.0.0.1
RA_PORT=3443
RA_USERNAME=your-ra-account
RA_PASSWORD=your-ra-password
RA_TIMEOUT_SECONDS=10
After the RA values are saved in .env:
- Restart the bot
- Open the Telegram control panel with
/startor/menu - Open
๐ Remote Access - Use one of the built-in actions:
โน Server Info๐พ Save All๐ฃ Announce๐ Shutdown
For actions that need extra input, the bot will ask you to reply in chat.
Examples:
๐ฃ Announce: send the announcement text in chat๐ Shutdown: send the shutdown delay in seconds
You can send cancel during an input step to stop the current action.
- Open the Telegram control panel
- Press
๐ค Account Creator - Press
โ Create Account - Send the new username in chat
- Send the new password in chat
- Confirm the action when the bot asks
The bot will call the worldserver account creation command through RA.
RA is not used to start or stop Windows processes like mysqld.exe, authserver.exe, or worldserver.exe. Those actions stay in the local process-control layer.
- MySQL is launched through
Database\_Server\MySQL.batby default to match the existing repack tooling. - AuthServer and WorldServer are launched from the
Repackfolder because their config and data directories are relative. - Restarting MySQL also restarts dependent server processes in dependency order.
- Unauthorized Telegram users are ignored unless their numeric ID appears in the whitelist.
- Remote console features require RA to be enabled in
Repack\worldserver.confby settingRa.Enable = 1in theCONSOLE AND REMOTE ACCESSsection.
This project is licensed under the MIT License. See LICENSE.



