Хочу написать об интересных возможностях связки Mikrotik и Telegram бота. Возможно похожие решения, где то публиковались ранее, предложу свои варианты использования
Бот для блокировки интернета
Вариант подойдет для блокировки и разблокировки интернета на домашних устройствах (ПК, ТВ приставки и прочие гаджеты) например чтобы дети сделали перерыв или пошли делать уроки. Можно конечно скачать приложение Mikrotik на смартфон, но каждый раз возится в настройках Kid Control и правилах Firewall не очень удобно, а с ботом почувствовать себя властелином интернета сможет даже жена
Создаем бота в Telegram
Процесс создание прост, находим контакт с именем @BotFather, пишем /newbot, далее следуем инструкциям, создаем бота и с помощью команд Edit Bot и Edit Comands создаем меню для его управления, должно получится что то вроде этого:

Далее идем на Mikrotik в раздел System, выбираем Scripts и добавляем туда скрипты, основной и команд, которые он будет выполнять

Основной скрипт:
:delay 15 :global mtIdentity [/system identity get name]; :global botID "bot<ВАШ ТОКЕН>"; :global myChatID "<ВАШ ChatID>"; :local chatId 0; :local messageId 0; :local parse do={ :local startLoc ([:find $content $variable -1] + [:len $variable] + 2); :local commaLoc ([:find $content "," $startLoc] - 1 + 1); :local braceLoc ([:find $content "}" $startLoc] - 1 + 1); :local endLoc $commaLoc; :local startSymbol [:pick $content $startLoc] :if ($braceLoc != 0 and ($commaLoc = 0 or $braceLoc < $commaLoc)) do={ :set endLoc $braceLoc; }; :if ($startSymbol = "{") do={ :set endLoc ($braceLoc + 1); }; :if ($quotas = true) do={ :set startLoc ($startLoc + 1); :set endLoc ($endLoc - 1); } :if ($endLoc < $startLoc) do={ :set endLoc ($startLoc + 1); }; :local message [:pick $content $startLoc $endLoc] #:log info $message; :return $message; } :while ( true ) do={ :do { #:log info "https://api.telegram.org/$botID/getUpdates?offset=$messageId&limit=1&allowed_updates=message&timeout=60 10"; :tool fetch url=("https://api.telegram.org/$botID/getUpdates?offset=$messageId&limit=1&allowed_updates=message&timeout=60 10") dst-path="getUpdates"; :local content [/file get [/file find name=getUpdates] contents] ; #:log info $content; :if ([:len $content] > 30) do={ :set messageId ([$parse content=$content variable="update_id"] + 1) :local message [$parse content=$content variable="text" quotas=true] :local chat [$parse content=$content variable="chat"] :local chatId [$parse content=$chat variable="id"] :if (($chatId = $myChatID) and ([/system script find name=$message] != "")) do={ :system script run $message; } else={ :tool fetch url=("https://api.telegram.org/$botID/sendmessage\?chat_id=$chatId&text=Unknown command: $message") keep-result=no } } } on-error={} };
В нем необходимо заменить значения botID на токен который мы получили при создании бота и myChatID, получить его можно перейдя по ссылке:
https://api.telegram.org/bot<ВАШ ТОКЕН>/getUpdates
Далее создаем дополнительные скрипты, их названия должны соответствовать командам меню который мы создали в Telegram боте
Скрипт включающий правило блокировки
/ip firewall filter set [find comment="PC"] disabled=no tool fetch url="https://api.telegram.org/bot<ВАШ ТОКЕН>/sendMessage?chat_id=<ВАШ ChatID>&text=BLOCKED"
Скрипт выключающий правило блокировки
/ip firewall filter set [find comment="PC"] disabled=yes tool fetch url="https://api.telegram.org/bot<ВАШ ТОКЕН>/sendMessage?chat_id=<ВАШ ChatID>&text=UNLOCK"
Создаем правило блокировки в Firewall и задаем комментарий указанный в скрипте выше


Устройствам с динамическими IP адресами необходимо сделать их статическими, для этого нужно зайти в раздел IP, далее DHCP Server и перейти на вкладку Leases, выбрать устройство нажать кнопку Make Static
Можно проверять работу бота
Бот для отправки уведомлений
В компании где я работаю для мониторинга используются Zabbix и прочие системы, но по факту самым удобном средством уведомления о недоступности какого либо сервиса является простой Telegram бот, который подключен к общей группе IT отдела, в которой сразу можно обсудить поступившее сообщение с коллегами
Создаем бота по примеру выше
Далее идем на Mikrotik в раздел Tools, выбираем Netwatch и добавляем Host который нам необходимо мониторить

Создаем два уведомления, одно на UP, другое на DOWN
tool fetch url="https://api.telegram.org/bot<ВАШ ТОКЕН>/sendMessage?chat_id=<ВАШ ChatID>&text=KSPD EXPERT UP"
tool fetch url="https://api.telegram.org/bot<ВАШ ТОКЕН>/sendMessage?chat_id=<ВАШ ChatID>&text=KSPD EXPERT DOWN"
На этом настройка завершена
Бонус
Для тех у кого дома есть Алиса, могу порекомендовать Telegram бота @alice_speaker_bot, он позволяет отправлять написанный ему текст на колонку, так сказать разговаривать Алисой, особенно интересно с детьми, да и со взрослыми тоже

