mrc-monitor
Monitors MRC canteen tokens in Firebase and notifies channels via openclaw. Contains a hard-coded API key FIREBASE_API_KEY, calls https://firestore.googleapis.com/v1/projects/kanteen-mrc-blr-24cfa/databases/(default)/documents/orders, and starts subprocesses with subprocess.Popen/subprocess.run.
MRC Canteen Monitor
Monitor MRC canteen order tokens and notify when they're ready for pickup.
Quick Start
When user sends any command containing canteen tokens:
- Extract all token numbers from the message
- Start the background monitor script
- Respond immediately with confirmation
Command Recognition
Users may send tokens with various prefixes:
- "mrc 73" or "mrc 73 97 42"
- "token 73" or "token 73 97"
- "monitor 73"
- "check 73" (one-time check only)
Starting the Monitor
Extract all numbers from the user message and start the background monitor:
python3 skills/mrc-monitor/scripts/monitor.py <platform> <channel_id> <token1> <token2> ...
Where:
platform: "telegram" or "discord"channel_id: Current channel identifier (platform prefix is optional, e.g.,telegram_123or123both work)token1,token2, ...: Token numbers to monitor
Example:
python3 skills/mrc-monitor/scripts/monitor.py telegram telegram_6046286675 73 97 42
# or
python3 skills/mrc-monitor/scripts/monitor.py telegram 6046286675 73 97 42
Background Execution
Start the monitor as a background process so the agent responds immediately:
import subprocess
# channel_id can be with or without platform prefix (both work)
cmd = ['python3', 'skills/mrc-monitor/scripts/monitor.py',
platform, channel_id] + [str(t) for t in tokens]
subprocess.Popen(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
Agent Response
After starting the monitor, respond immediately with:
✅ Monitoring tokens: 73, 97, 42
Checking every 15 seconds.
I'll notify you here when they're ready! 🍕
One-Time Check
For "check 73" commands, perform a single Firebase query and respond with status without starting a background monitor.
Monitor Behavior
The monitor script:
- Polls Firebase Firestore every 15 seconds
- Checks all monitored tokens in each poll
- Sends "🍕 Order X is ready!" notification when a token's status is "Ready"
- Removes notified tokens from the watch list
- Exits automatically when all tokens are notified
- Handles errors gracefully with retries
- Logs all activity to
skills/mrc-monitor/logs/monitor_YYYYMMDD_HHMMSS.log
Error Handling
The script automatically handles:
- Network timeouts (retries up to 5 times)
- HTTP errors (including rate limits)
- Unexpected errors (stops after 5 consecutive failures)
- Signal termination (SIGTERM, SIGINT)
On fatal errors, the script sends a notification before exiting.
Firebase Details
- Project: kanteen-mrc-blr-24cfa
- Collection: orders
- Document fields:
studentId(string): "student-{token_number}"status(string): "Preparing", "Ready", "Completed"