# Telegram Expiry Notifier + Reset Button — Deploy ke Server ## Overview Mengganti direct call Telegram API dari RouterOS dengan PHP intermediary agar bisa kirim inline button "Reset" untuk user hotspot yang expired. ### Arsitektur ``` RouterOS scheduler (Family) ↓ call HTTP GET ↓ notify-expire.php (server) ↓ POST ke Telegram API ↓ ⚠️ User X expired [🔄 Reset] (ke topik Notif Expire) ↓ admin klik "Reset" ↓ callback_query = "reset_X" ke Bot API ↓ tg-cb-poll scheduler (router, tiap 60s) ↓ call HTTP GET ↓ telegram-cb.php (server) ↓ polling getUpdates → proses callback ↓ RouterOS API: set limit-uptime=0, comment="", reset-counters ↓ ✅ User X has been reset (ke topik Notif Expire) ``` ### Files | File | Fungsi | |------|--------| | `notify-expire.php` | Kirim notif + inline button ke Telegram | | `telegram-cb.php` | Polling callback query + eksekusi reset | | `setup.sh` | Setup script untuk server (install PHP + deploy) | ### Prerequisites (Server) - Linux server (tested on Ubuntu/Debian) - PHP 7.4+ dengan `curl` extension - Akses keluar ke `api.telegram.org` (port 443) - Akses ke RouterOS API (`192.168.100.2:8728`) - `curl` binary di PATH (untuk internal call dari PHP ke Telegram) ### Setup Cepat ```bash # 1. Copy files ke server scp notify-expire.php player@somewhere:/home/player/telegram-notif/ scp telegram-cb.php player@somewhere:/home/player/telegram-notif/ scp setup.sh player@somewhere:/home/player/telegram-notif/ # 2. SSH ke server ssh player@somewhere # 3. Run setup cd ~/telegram-notif chmod +x setup.sh ./setup.sh # 4. Start PHP built-in server (background) nohup php -S 0.0.0.0:8080 -t /home/player/telegram-notif > /tmp/telegram-notif.log 2>&1 & ``` ### Update RouterOS Scheduler #### A. Family scheduler — notifikasi Ganti on-event: ```bash # OLD /tool fetch url=("https://api.telegram.org/bot" . $bot . "/sendMessage?chat_id=" . $chat . "&text=" . $msg) http-method=get keep-result=no # NEW — arahkan ke IP Tailscale server /tool fetch url=("http://100.100.31.46:8080/notify-expire.php?key=msr-2026-reset&name=" . $name) http-method=get keep-result=no ``` #### B. Tambah scheduler polling callback ```bash /system scheduler add name=tg-cb-poll interval=00:01:00 start-time=startup on-event=":delay 10s;/tool fetch url=\"http://100.100.31.46:8080/telegram-cb.php?key=msr-2026-reset\" http-method=get keep-result=no" disabled=no ``` ### Secret Key `msr-2026-reset` — shared secret di URL parameter `key`. Diganti sesuai kebutuhan. ### Bot Config - Token: `5115036608:AAGeyXVq5eNvdAkaCQHU9NfH16uAAiSKiuk` - Group: `-1002554941429` (laporkan) - Topic ID: `42` (Notif Expire) ### RouterOS Credentials (untuk callback reset) - IP: `192.168.100.2` - User: `mi4` - Password: `m14` ### Troubleshooting **Logs**: ```bash tail -f /tmp/telegram-notif.log ``` **Test notifikasi**: ```bash curl "http://localhost:8080/notify-expire.php?key=msr-2026-reset&name=test_user" ``` **Test reset langsung**: ```bash curl "http://localhost:8080/telegram-cb.php?key=msr-2026-reset&test=test_user" ``` **PHP curl extension**: ```bash sudo apt install php-curl ``` ### File Reference Source files di `C:\Users\Admin\dev\Mikhmon Server\mikhmon\`: - `notify-expire.php` - `process/telegram-cb.php` - `lib/routeros_api.class.php` (dependency untuk koneksi ke RouterOS)