Watch screen for w3c match started.
Find a file
cubiss 83d3909faa
All checks were successful
Build Windows Executable / build (push) Successful in 2m14s
black formatted
2026-05-17 17:38:18 +02:00
.forgejo/workflows Add .exe build 2026-05-17 07:47:32 +02:00
w3cwatcher black formatted 2026-05-17 17:38:18 +02:00
.gitignore Add .gitignore 2026-05-17 08:00:45 +02:00
claude.md Add generic webook support + cleanup. 2026-05-17 17:36:21 +02:00
pyproject.toml Linux support beta 2026-05-17 15:25:25 +02:00
README.md Add generic webook support + cleanup. 2026-05-17 17:36:21 +02:00
run.py black formatted 2026-05-17 17:38:18 +02:00
run_tray.pyw Add pyinstaller support. 2025-11-04 13:23:41 +01:00
w3cwatcher.spec Add .exe build 2026-05-17 07:47:32 +02:00

W3C Watcher

W3C Watcher is a lightweight background pixel-monitoring utility for Windows and Linux.
It checks for the color of the W3Champions match button and sends a Discord, Telegram, or custom webhook notification when it detects a match has been found.

Supports Windows and Linux (KDE/Wayland via Wine/XWayland).


Installation

pip install git+https://github.com/Cubiss/w3cwatcher.git

Usage

GUI / Tray Mode

Run normally to start the tray watcher:

w3cwatcher --tray

Monitoring starts automatically when the tray app launches. Right-click the tray icon to configure:

  • Start - starts monitoring
  • Stop - stops monitoring
  • Tools/Check capture area - opens image showing what W3CWatcher sees
  • Tools/Test game start - simulates state transitions (for testing notifications)
  • Tools/Log - opens the log file
  • Tools/Settings - opens the config file

Icon color:

  • Green - Waiting (ready to queue)
  • Red - In Queue
  • Blue - In Game
  • Grey - Disabled

CLI flags

Flag Description
--tray Run as system tray app
--check Show debug image of the currently watched area
--settings Open the config file (creates it with defaults if missing)
--config <path> Use a specific config file
--x <float> Override horizontal pixel offset (0.01.0, default 0.755)
--y <float> Override vertical pixel offset (0.01.0, default 0.955)
--poll <int> Override polling interval in seconds (default 1)

Setup a Discord webhook

  1. Open Discord
  2. Go to the server and select the channel
  3. Click the channel name → Integrations
    • (Alternate) Rightclick channel → Edit ChannelIntegrations
  4. Click Webhooks
  5. Click New Webhook
  6. Name it and pick the channel
  7. Click Copy Webhook URL. This is your webhook_url.
  8. Run w3cwatcher --settings or click Tools/Settings in Tray context menu to open the config file
  9. Add or update the Discord section:
[notifications.discord]
enabled = true
webhook_url = "https://discord.com/api/webhooks/.../..."

Setup a generic webhook

The generic webhook notifier sends an HTTP request to any URL when a game event occurs.

  1. Run w3cwatcher --settings or click Tools/Settings in Tray context menu to open the config file
  2. Add or update the webhook section:
[notifications.webhook]
enabled = true
url = "https://example.com/my-webhook"
on_events = ["in-game"]        # events that trigger the webhook
payload = '{"event": "{state}", "duration": "{duration}"}'
method = "POST"
debounce = 0

on_events controls which game events fire the webhook. Valid values:

  • in-game — match found (game started)
  • waiting — back to waiting (game ended or left queue)
  • in-queue — entered queue
  • disabled — monitor stopped

payload is a string template sent as the request body. Two placeholders are available:

  • {state} — the event name (e.g. in-game)
  • {duration} — time spent in the previous state, formatted as HH:MM:SS

Setup a Telegram Bot

  1. Open Telegram
  2. Search for @BotFather and start a chat
  3. Create a new bot by sending: /newbot
  4. Choose a name and a username (the username must end with bot, e.g. w3cwatcher_notifier_bot)
  5. BotFather will reply with your Bot Token (123456789:ABCdefGhIjkLmNoPQRstuVWxyZ, your bot_token) and a link to the bot (open it and tap start).
  6. In Telegram, search for @userinfobot
  7. Start it, and it will immediately display your Telegram user ID. This is your chat_id
  8. Run w3cwatcher --settings or click Tools/Settings in Tray context menu to open the config file
  9. Add or update the Telegram section:
[notifications.telegram]
enabled = true
bot_token = "123456789:ABCdefGhIjkLmNoPQRstuVWxyZ"
chat_id = "123456789"