Files
2026-08-15 00:28:08 +07:00
..
2026-08-15 00:28:08 +07:00
2026-08-15 00:28:08 +07:00
2026-08-15 00:28:08 +07:00
2026-08-15 00:28:08 +07:00

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

# 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:

# 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

/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:

tail -f /tmp/telegram-notif.log

Test notifikasi:

curl "http://localhost:8080/notify-expire.php?key=msr-2026-reset&name=test_user"

Test reset langsung:

curl "http://localhost:8080/telegram-cb.php?key=msr-2026-reset&test=test_user"

PHP curl extension:

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)