Telegram

إرسال تقرير حالة الراوتر إلى تيليجرام — 6

يرسل رسالة حالة إلى تيليجرام: الـ IP العام، الوقت، مدة التشغيل، نوع البورد، الحرارة، جلسات PPP النشطة، الجيران، وسرعة واستهلاك كل واجهة. شغّله من الـ Scheduler أو عند الإقلاع.

إصدار ⁨MikroTik⁩

RouterOS 6

# EN: Telegram chat ID that receives the report | AR: رقم الشات (Chat ID) الذي سيستقبل التقرير
:local chatId "change here";
# EN: Bot token from @BotFather | AR: توكن البوت من @BotFather
:local botToken "change here";

# EN: Safety check | AR: حماية من عدم تعديل المتغيرات
:if ($chatId = "change here" || $botToken = "change here") do={ :error "Edit the variables first" }

# EN: "%0A" = new line, "+" = space inside the Telegram URL | AR: %0A سطر جديد و + مسافة داخل رابط تيليجرام
:local nl "%0A";

# EN: Public IP (the file is read then deleted) | AR: الـ IP العام (يُقرأ الملف ثم يُحذف)
:local ip "unknown";
:do {
    /tool fetch url="<http://api.ipify.org>" mode=http dst-path=publicip.txt;
    :delay 1s;
    :set ip [/file get publicip.txt contents];
    /file remove publicip.txt;
} on-error={ :log warning "telegram report: cannot get public IP" }

# EN: CPU temperature (not available on every board) | AR: حرارة الجهاز (غير متوفرة في كل الأجهزة)
:local temp "n/a";
:do { :set temp [/system health get temperature] } on-error={}

# EN: Live rate (kbps) and total traffic (MB) of running ether/bridge/vlan interfaces
# AR: السرعة اللحظية (كيلوبت) وإجمالي الترافيك (ميجا) للواجهات الشغالة
:local traffic "";
:do {
    :foreach i in=[/interface find where running=yes] do={
        :local t [/interface get $i type];
        :if ($t = "ether" || $t = "bridge" || $t = "vlan") do={
            :local n [/interface get $i name];
            :local rate [/interface monitor-traffic $n once as-value];
            :local rx (($rate->"rx-bits-per-second") / 1024);
            :local tx (($rate->"tx-bits-per-second") / 1024);
            :local mb ((([/interface get $i rx-byte] + [/interface get $i tx-byte]) / 1024) / 1024);
            :set traffic ($traffic . $n . ":+RX+" . $rx . "+/+TX+" . $tx . "+kbps+/+" . $mb . "+MB" . $nl);
        }
    }
} on-error={ :log warning "telegram report: cannot read interface traffic" }

# EN: Build the message | AR: تجهيز الرسالة
:local text ("MikroTik+Report" . $nl . "Public+IP:+" . $ip . $nl . "Time:+" . [/system clock get date] . "+" . [/system clock get time] . $nl . "Uptime:+" . [/system resource get uptime] . $nl . "Board:+" . [/system resource get board-name] . $nl . "Temperature:+" . $temp . "+C" . $nl . "Active+PPP:+" . [:len [/ppp active find]] . $nl . "Neighbors:+" . [:len [/ip neighbor find]] . $nl . $traffic);

# EN: Send it | AR: إرسال الرسالة
/tool fetch url=("<https://api.telegram.org/bot>" . $botToken . "/sendMessage?chat_id=" . $chatId . "&text=" . $text) mode=https keep-result=no;