Замены и другие модификации
Вы можете гибко настраивать сообщения, публикуемые ботом. Для этого есть несколько основных команд: /setting, /settingchannel и /replace.
Команда /setting применяет изменения ко всем имеющимся исходным каналам. Команда /settingchannel применяет изменения только к одному источнику. Команда /replace создает правило замены для одного источника.
Как правило, с помощью этих команд вы можете изменить сообщение по своему усмотрению, регулируя заголовок, текст, нижний колонтитул и ссылку на источник.
Изменение заголовка
С помощью команды /setting header можно настраивать отображение заголовка (названия канала) в подписках и перенаправлениях.
/setting header + одна из следующих опций none - не показывать заголовок Пример:/setting header none
bold - показывать название источника (из которого сообщение пересылается) Пример:/setting header bold
from_only - показывать название изначального источника (если таковой есть) Пример:/setting header from_only
Чтобы применить эту настройку только к одному каналу, замените команду /setting
на /settingchannel @имя_канала
(подробнее).
Изменение ссылки на оригинал
С помощью команды /setting link можно настроить отображение подписи в конце сообщения, добавляемой ботом, со ссылкой на оригинальное сообщение.
Здесь имеется в виду только ссылка, которая по умолчанию отображается внизу перенаправленного сообщения как символ @. Если вы хотите изменять другие ссылки в сообщении, см. здесь.
/setting link + одна из следующих опций none - не добавлять ссылку Пример:/setting link none
full - добавить полную ссылку Пример:/setting link full
любой текст - поместить ссылку под этот текст Пример:/setting link Канал о котиках
Чтобы применить эту настройку только к одному каналу, замените команду /setting
на /settingchannel @имя_канала
(подробнее).
Изменения тела сообщения c Before & After
С помощью настроек /setting before и /setting after можно добавить текст до или после текста сообщения.
Чтобы добавить текст из нескольких строк, в конце каждой строки ставьте тег <br>
.
/setting before - добавить текст перед текстом сообщения. Формат:/setting before мой текст
Пример:/setting before Вот что я слышал:<br>
Обратите внимание, что если не поставить тег<br>
, текст оригинального сообщения будет начинаться на той же строке, что и ваш текст. /setting before none - убрать текст перед сообщением. /setting after - добавить текст после текста сообщения. Формат:/setting after мой текст
Пример:/setting after <br>Все вопросы пишите на support@mail.com
Обратите внимание, что если не поставить тег<br>
в начале, ваш текст будет начинаться на той же строке, что и оригинальный текст. /setting after none - убрать текст после сообщения.
Чтобы применить эту настройку только к одному каналу, замените команду /setting
на /settingchannel @имя_канала
(подробнее).
Этой настройкой вы можете, например, добавить к каждому сообщению ссылку на свой сайт:/settingchannel @имя_канала_источника after <br><a href="https://docs.junction.space/">Мой сайт</a>
Изменения тела сообщения c Replace
Вы можете установить правило автозамены, которое заменит текст A во входящих сообщениях текстом Б (или пустой строкой, если не указывать текст Б). Используйте команду /replace.
Важно учитывать следующие замены:
- вместо пробелов между словами ставьте
- в местах переноса строки ставьте
<br>
Это можно легко сделать с помощью функции «Найти и заменить» в большинстве текстовых редакторов.
Команды
/replace - заменить текст А на текст Б, а также удалить это правило, если ввести команду повторно. Формат:/replace @source_channel текст который надо заменить новый текст
Пример:/replace @имя_канала Быть или не быть (цитата)
- заменит все тексты из указанного канала, совпадающие с "Быть или не быть" на фразу "(цитата)" Пример:/replace @имя_канала Это реклама
- удалит все фразы "Это реклама" в сообщениях, приходящих из указанного канала. /replacerx - создать правило замены с помощью регулярных выражений. Формат аналогичен формату команды /replace. /replace @имя_канала - посмотреть все правила замены в @канале /replacerx @имя_канала - посмотреть все правила замены с помощью регулярных выражений для @канала.
Что можно использовать в качестве @имени_канала? Читайте тут!
Обратите внимание, что команды /replace и /replacerx работают только с телом сообщения, не меняя заголовок (название канала) или ссылку на исходное сообщение.
Чтобы удалить правило замены, используйте ту же команду с теми же аргументами во второй раз.
Замена с использованием регулярных выражений
Кроме того, вы можете использовать регулярные выражения для замены. Для этого используйте команду /replacerx. У нее такой же формат, как и у /replace.
Есть удобный инструмент для проверки регулярных выражений: https://regex101.com. Установите Flavor на «golang» и отметьте флаги «Single line: Dot matches the new line» и «Global: Don’t return after first match». Это заставит его работать так же, как у Junction Bot.
Полезные примеры замен

Да, мы знаем, регулярные выражения — это непросто. Ниже приведены выражения для популярных задач по замене. Некоторые можно решить без реуглярных выражений, но в большинстве без них не обойтись:
1. Заголовок с названием исходного канала, добавленный ботом, можно удалить командой/setting header none
2. Ссылку на исходный пост, добавленную ботом, можно удалить командой/setting link none
3. Конкретные ссылки из тела сообщения можно удалить командой/replace @source <a href="https://конкретная-ссылка">текст этой ссылки</a>
Во всех сообщениях из канала @source она заменит все именно такие ссылки на пустую строку.
4. Удалить вообще все ссылки в теле сообщения, если они передаются форматированием, можно командой/replacerx @source <a[^<]+</a>
5. Если ссылки в теле сообщения передаются просто текстом, их можно убрать командой/replacerx @source (http:\/\/|https:\/\/)([a-zA-Z0-9.\/\?=&_]+)
6. Убрать только ссылки, содержащие только t.me, можно командой/replacerx @source (http:\/\/|https:\/\/)(t.me)([a-zA-Z0-9.\/\?=&_]+)
Во всех сообщениях из канала @source она заменит все ссылки на пустую строку.
7. Убрать ссылки-юзернеймы вида @username/replacerx @source @([a-zA-Z0-9=&_]+)
8. Убрать весь кусок сообщения, начинающийся со слова «Postscriptum»/replacerx @source Postscriptum.*
9. Превратить кусок текста «кусок текста» в ссылку на https://docs.junction.space//replace @source кусок текста <a href="https://docs.junction.space/">кусок текста</a>
10. Убрать из сообщения все номера формата №12345/replacerx @source №([0-9]+)
11. Удалить текст из подписей ко всем картинкам (пересылать только картинки)/replacerx @source .*<photo>
12. Удалить все строки, содержащие слово keyword
/replacerx @source .*\bkeyword\b.*
Продвинутый пример
Предположим, что мы создали канал, аккумулирующий бесплатные торговые сигналы из других каналов, и хотим привести все сигналы к одному формату. Пример сообщения в канале-источнике:
Buy BTC/USD
Stop-Loss at 11000
Take-Profit 1 at 11500
Take-Profit 2 at 11700
Take-Profit 3 at 12000
Мы хотим привести такие сообщения к формату:
BUY
#BTC/USD
SL: 11000 points
TP: 12000 points
Trade at your own risk!
Предположим, что мы уже настроили перенаправление командой /new
. Также предположим, что мы используем прямое подключение и номер канала-источника: &1234567890#1122334455
. Узнать этот номер можно командой /forwards
. Если у вас Стандартный аккаунт, используйте во всех примерах вместо &1234567890#1122334455
ссылку на канал, например https://t.me/joinchat/AFjgGGiosdgJGgSDG
.
Итак, заменяем Buy
с пробелом на BUY
, перевод строки и #
:/replace &1234567890#1122334455 Buy BUY<br>#
Первый аргумент — наш источник &1234567890#1122334455
.
Второй — что нужно зменить. Обратите внимание, что для команд /replace
и /replacerx
пробелы указываются символами
Третий аргумент — на что заменять. Перевод строки указывается символами <br>
Далее похожая замена: Stop-Loss at
заменяем на SL:
/replace &1234567890#1122334455 Stop-Loss at SL:
Следующая команда будет сложнее. Нам нужно убрать две строки Take-Profit 1
и Take-Profit 2
и вместо них добавить к предыдущей строке SL
слово points
. Для этого воспользуемся командой /replacerx
, которая позволяет работать с регулярными выражениями./replacerx &1234567890#1122334455 \nTake-Profit 1.*\n points<br>
В регулярных выражениях \n
соответсвует переводу строки, а .*
соответствует любой комбинации символов. Таким образом \nTake-Profit 1.*\n
соответсвует Take-Profit 1
вместе с переводом строки до него, ценой после (какой бы она ни была) и переводом строки после цены. Посколку мы захватыаем здесь два перевода строки, мы должны компенисровать это, прибывив <br>
к слову points
.
Затем заменяем строку Take-Profit 2
с ценой и Take-Profit 3
на TP:
/replacerx &1234567890#1122334455 Take-Profit 2.*Take-Profit 3 TP:
И, наконец, прибавляем в конце слово points
и строчку Trade at your own risk!
Для этого воспользуемся настройкой after
, прибавляющей к каждому сообщению в конце заданный текст. /settingchannel &1234567890#1122334455 after points<br>Trade at your own risk!
FAQ
В первую очередь проверьте, какие у вас правила стоят на источнике командами/replace ссылка-на-источник
и/replacerx ссылка-на-источник
Если всё правильно, поставьте на источник настройку explain:/settingchannel ссылка-на-источник explain on
Вам будет приходить отчёт на каждое сообщение с полным текстом сообщения так, как его видит бот. Обычно это объясняет, почему не сработала замена.