Telegram
إرسال تقرير حالة الراوتر إلى تيليجرام — 6
يرسل رسالة حالة إلى تيليجرام: الـ IP العام، الوقت، مدة التشغيل، نوع البورد، الحرارة، جلسات PPP النشطة، الجيران، وسرعة واستهلاك كل واجهة. شغّله من الـ Scheduler أو عند الإقلاع.
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;