<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Mikrotik.moscow [тема: Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта]</title>
		<link>http://mikrotik.moscow</link>
		<description>Новое в теме Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта форума RouterOS на сайте Mikrotik.moscow [mikrotik.moscow]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Fri, 31 Jul 2026 06:12:18 -0400</pubDate>
		<item>
			<title>Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409218">Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Что касается бесполезного заполнителя return, я просто хотел подчеркнуть, что он никак не влияет на возникновение «багов», даже если по какой-то причине существует, когда функция вызывается без квадратных скобок. Это не относится к твоему примеру. <br />
			<i>29.04.2025 17:03:00, optio.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409218</link>
			<guid>http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409218</guid>
			<pubDate>Tue, 29 Apr 2025 17:03:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409217">Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Окей, понял, в целом скрипт OP плохой… Что касается названия темы, «баг» решается правильным вызовом функций. <br />
			<i>29.04.2025 16:59:00, optio.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409217</link>
			<guid>http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409217</guid>
			<pubDate>Tue, 29 Apr 2025 16:59:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409216">Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Честно говоря, надоело сто раз везде на форуме одно и то же повторять. Смиритесь. Мне надоело постоянно всё доказывать, а люди всё время пытаются опровергнуть (даже пишут неправду, не проверив, как в посте перед вашим). Если вам так хорошо получается бесконечно доказывать обратное очевидному, то вы же умеете делать свои скрипты. Если вам не нравится то, что я пишу, просто не читайте. <br />
			<i>29.04.2025 16:58:00, rextended.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409216</link>
			<guid>http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409216</guid>
			<pubDate>Tue, 29 Apr 2025 16:58:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409215">Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Кажется, вы пропустили предыдущие сообщения, всё началось с этого поста: <noindex><a href="http://forum.mikrotik.com/t/bug-phantom-empty-message-in-telegram-when-sending-from-a-third-party-script/182925/1" target="_blank" rel="nofollow" >http://forum.mikrotik.com/t/bug-phantom-empty-message-in-telegram-when-sending-from-a-third-party-script/182925/1</a></noindex>, и мы обсуждаем, как был написан этот скрипт и почему при таком способе написания возникают ошибки. <br />
			<i>29.04.2025 16:54:00, rextended.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409215</link>
			<guid>http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409215</guid>
			<pubDate>Tue, 29 Apr 2025 16:54:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409214">Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Я что-то пропускаю или почему просто не вызвать функцию без квадратных скобок [$echo “”], и тогда нет проблем с возвращаемым значением, даже если вызывать её несколько раз?  <br />:local echo do={ &nbsp;<br /> &nbsp;:put "Called with: $1" &nbsp;<br /> &nbsp;&lt;здесь тоже может быть бессмысленный return&gt; &nbsp;<br />} &nbsp;<br />$echo "A" &nbsp;<br />$echo "B" &nbsp;<br />$echo "C" &nbsp;<br />$echo "D" &nbsp;<br />$echo "E" &nbsp;<br />$echo "F" &nbsp;<br /><br />&gt; /system/script/run script1 &nbsp;<br />Called with: A &nbsp;<br />Called with: B &nbsp;<br />Called with: C &nbsp;<br />Called with: D &nbsp;<br />Called with: E &nbsp;<br />Called with: F &nbsp;<br /><br />или что-то в таком духе: &nbsp;<br />:local echo do={ &nbsp;<br /> &nbsp;:return "Called with: $1" &nbsp;<br />} &nbsp;<br />:put [$echo "A"]  <br />$echo &nbsp;<br />:put [$echo "B"]  <br />$echo 1 &nbsp;<br />:put [$echo "C"]  <br />$echo "something" &nbsp;<br />:put [$echo "D"]  <br />$echo nil &nbsp;<br />:put [$echo "E"]  <br />$echo [:nothing]  <br />:put [$echo "F"]  <br /><br />&gt; /system/script/run script1 &nbsp;<br />Called with: A &nbsp;<br />Called with: B &nbsp;<br />Called with: C &nbsp;<br />Called with: D &nbsp;<br />Called with: E &nbsp;<br />Called with: F &nbsp;<br /><br />В любом случае, вызов функции в квадратных скобках стоит использовать только тогда, когда нужно обработать возвращаемое значение… <br />
			<i>29.04.2025 15:30:00, optio.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409214</link>
			<guid>http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409214</guid>
			<pubDate>Tue, 29 Apr 2025 15:30:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409213">Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Приходить сюда и писать «есть альтернативное решение твоей задачи, но оно сложнее» (к тому же не работает) — это не лучшее решение... а раз уж там что-то нужно добавить, почему бы просто не сделать :return "" в конце, вместо :if ([$len $0]!=0) do={} в начале??? К тому же $len — НЕПРАВИЛЬНО (правильно :len), так какой вообще тест он делал?  <br />:if ([$len [:nothing]]!=0) do={:put true} else={:put false}<br /><br />:if ([$len ""]!=0) do={:put true} else={:put false}<br /><br />:if ([$len "xxx"]!=0) do={:put true} else={:put false} — всегда true. <br />
			<i>29.04.2025 07:57:00, rextended.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409213</link>
			<guid>http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409213</guid>
			<pubDate>Tue, 29 Apr 2025 07:57:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409212">Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Rex ответил тебе. Это давно известная ошибка в RouterOS, о которой я, например, писал здесь <noindex><a href="https://habr.com/ru/articles/646663/" target="_blank" rel="nofollow" >https://habr.com/ru/articles/646663/</a></noindex>. Она касается не только твоей функции для Telegram, а вообще всех функций. Если вызвать любую функцию подряд два раза (без присвоения результата), она выполнится три раза! Можешь проверить на любой своей функции. Простая проверка в теле функции решает проблему: :if ([$len $0]!=0) do={ }. <br />
			<i>29.04.2025 06:47:00, Sertik.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409212</link>
			<guid>http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409212</guid>
			<pubDate>Tue, 29 Apr 2025 06:47:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409211">Ошибка: Призрачное пустое сообщение в Telegram при отправке из стороннего скрипта</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			У меня есть скрипт/функция для отправки сообщений в Telegram. В целом всё работает нормально, но если попытаться отправить более двух сообщений подряд из стороннего скрипта, появляется фантомное пустое сообщение. Это происходит только между вторым и третьим сообщением. После третьего можно отправить ещё пару десятков сообщений, и фантомных сообщений больше не возникает. Проблема появляется исключительно при отправке из одного стороннего скрипта. Если же логика отправки находится внутри скрипта с самой функцией, то проблема не проявляется. Пока что я придумал пару способов обойти этот фантом:<br /><br />1. Добавить проверку на пустое сообщение в самой функции.<br />2. Сделать некий обёртку при отправке сообщений из стороннего скрипта.<br /><br />Вот текст моего скрипта с функцией отправки сообщений:<br /><br /># Конфигурация бота<br />:global botConfig<br />:if ([:typeof $botConfig] != "array") do={ :set botConfig [:toarray ""] }<br />:set ($botConfig-&gt;"Telegram") {<br /> &nbsp; &nbsp;"botToken"="XXXXXXXXXXXXXXXXXXXXX";<br /> &nbsp; &nbsp;"mainID"="XXXXXXXXXXXX"<br />}<br /><br /># Функция для формирования URL<br />:global botUrl do={<br /> &nbsp; &nbsp;:global botConfig<br /> &nbsp; &nbsp;:return ("https://api.telegram.org/bot" . ($botConfig-&gt;"Telegram"-&gt;"botToken"))<br />}<br /><br /># Функция сериализации массива в JSON<br />:global arrayToJson do={<br /> &nbsp; &nbsp;:local array $1<br /> &nbsp; &nbsp;:local result "{"<br /> &nbsp; &nbsp;:local first true<br /> &nbsp; &nbsp;:foreach key,value in=$array do={<br /> &nbsp; &nbsp; &nbsp; &nbsp;:if ($first) do={:set first false} else={:set result ($result . ",")}<br /> &nbsp; &nbsp; &nbsp; &nbsp;:set result ($result . "\"" . $key . "\": \"" . $value . "\"")<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;:set result ($result . "}")<br /> &nbsp; &nbsp;:return $result<br />}<br /><br /># Функция отправки сообщения<br />:global sendTelegramMessage<br />:set sendTelegramMessage do={<br /> &nbsp; &nbsp;:global botUrl<br /> &nbsp; &nbsp;:global botConfig<br /> &nbsp; &nbsp;:global arrayToJson<br /> &nbsp; &nbsp;<br /> &nbsp; &nbsp;:local message $1<br /> &nbsp; &nbsp;:local chatId $2<br /> &nbsp; &nbsp;<br /> &nbsp; &nbsp;:if ([:typeof $chatId] = "nothing" || $chatId = "") do={<br /> &nbsp; &nbsp; &nbsp; &nbsp;:set chatId ($botConfig-&gt;"Telegram"-&gt;"mainID")<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;<br /> &nbsp; &nbsp;# Защита от пустых сообщений<br /> &nbsp; &nbsp;:if ([:len $message] = 0) do={<br /> &nbsp; &nbsp; &nbsp; &nbsp;:put "Пропускаем пустое сообщение"<br /> &nbsp; &nbsp; &nbsp; &nbsp;:return false<br /> &nbsp; &nbsp;}<br /> &nbsp; &nbsp;<br /> &nbsp; &nbsp;:local data {"chat_id"=$chatId; "text"=$message}<br /> &nbsp; &nbsp;:local jsonString [$arrayToJson $data]<br /> &nbsp; &nbsp;:put "Отправка: $jsonString"<br /> &nbsp; &nbsp;<br /> &nbsp; &nbsp;:local url ([$botUrl] . "/sendMessage")<br /> &nbsp; &nbsp;:local result [/tool fetch mode=https \<br /> &nbsp; &nbsp; &nbsp; &nbsp;url=$url \<br /> &nbsp; &nbsp; &nbsp; &nbsp;http-method=post \<br /> &nbsp; &nbsp; &nbsp; &nbsp;http-header-field="Content-Type: application/json" \<br /> &nbsp; &nbsp; &nbsp; &nbsp;http-data=$jsonString \<br /> &nbsp; &nbsp; &nbsp; &nbsp;output=user \<br /> &nbsp; &nbsp; &nbsp; &nbsp;as-value]<br /> &nbsp; &nbsp;:put "Результат: $result"<br /> &nbsp; &nbsp;<br /> &nbsp; &nbsp;# Исправление: записываем данные в переменную<br /> &nbsp; &nbsp;:local response ($result-&gt;"data")<br /> &nbsp; &nbsp;:put "Ответ: $response"<br /> &nbsp; &nbsp;<br /> &nbsp; &nbsp;:return ($result-&gt;"status" = "finished")<br />}<br /><br /># Тест отправки<br />[$sendTelegramMessage "Test message 1"]<br />[$sendTelegramMessage "Another test message 2" "XXXXXXXXX"]<br />[$sendTelegramMessage "Test message 3"]<br />[$sendTelegramMessage "Test message 4"]<br /><br />Если отправлять из другого скрипта вот так:<br /><br />:global sendTelegramMessage<br /> &nbsp;[$sendTelegramMessage "Test message 1"]<br /> &nbsp;[$sendTelegramMessage "Another test message 2" "XXXXXXXXXX"]<br /> &nbsp;[$sendTelegramMessage "Test message 3"]<br /> &nbsp;[$sendTelegramMessage "Test message 4"]<br /><br />То появляется глупое сообщение. Но если обернуть так:<br /><br />:global sendTelegramMessage<br /> &nbsp; &nbsp;:put [$sendTelegramMessage "Test message 1"]<br /> &nbsp; &nbsp;:put [$sendTelegramMessage "Another test message 2" "XXXXXXXXXXXX"]<br /> &nbsp; &nbsp;:put [$sendTelegramMessage "Test message 3"]<br /> &nbsp; &nbsp;:put [$sendTelegramMessage "Test message 4"]<br /><br />Или так:<br /><br />:global sendTelegramMessage<br /> &nbsp; &nbsp;:local result1 [$sendTelegramMessage "Test message 1"]<br /> &nbsp; &nbsp;:put "Результат 1: $result1"<br /> &nbsp; &nbsp;:local result2 [$sendTelegramMessage "Another test message 2" "XXXXXXXXXXXX"]<br /> &nbsp; &nbsp;:put "Результат 2: $result2"<br /> &nbsp; &nbsp;:local result3 [$sendTelegramMessage "Test message 3"]<br /> &nbsp; &nbsp;:put "Результат 3: $result3"<br /> &nbsp; &nbsp;:local result4 [$sendTelegramMessage "Test message 4"]<br /> &nbsp; &nbsp;:put "Результат 4: $result4"<br /><br />То фантомное сообщение не появляется. Кто-нибудь может подсказать, откуда берётся этот фантом и как с ним бороться? У меня RouterOS 7.10.2. <br />
			<i>29.03.2025 11:02:00, DyadyaGenya.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409211</link>
			<guid>http://mikrotik.moscow/forum/forum57/86673-oshibka_-prizrachnoe-pustoe-soobshchenie-v-telegram-pri-otpravke-iz-storonnego-skripta/message409211</guid>
			<pubDate>Sat, 29 Mar 2025 11:02:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
	</channel>
</rss>
