Замены и другие модификации

Вы можете изменить сообщение по своему усмотрению, добавляя/меняя заголовок, текст, колонтитул и ссылку на источник.

Изменение заголовка

Где найти
Меню → Настройки перенаправлений → Выбрать источник и назначение → Заголовок

С помощью этой настройки можно добавить к сообщению название канала источника.

⏵Команды
/setting header + one of the following options:

none - без заголовка
Ex. /setting header none
Ex. /settingchannel source_channel_reference header none

simple - название канала-источника в качестве заголовка
Ex. /setting header simple
Ex. /settingchannel source_channel_reference header simple

bold - название канала-источника жирным в качестве заголовка
Ex. /setting header bold
Ex. /settingchannel source_channel_reference header bold

from_only - не показывать название источника, но показывать откуда переслано сообщение (если оно переслан
Ex. /setting header from_only
Ex. /settingchannel source_channel_reference header from_only

Эта настройка доступна через главное меню, но её можно изменить и с помощью команд. Чтобы применить эту настройку только к одному каналу, замените команду /setting на /settingchannel ссылка_на_источник (подробнее).

Изменение ссылки на оригинал

Где найти
Меню → Настройки перенаправлений → Выбрать источник и назначение → Ссылка на оригинальное сообщение

С помощью этой настройки можно можно задать в конце сообщения отображение ссылки на оригинальное сообщение.

Здесь имеется в виду только ссылка, которая по умолчанию отображается внизу перенаправленного сообщения как символ @. Если вы хотите изменять другие ссылки в сообщении, см. здесь.

⏵Команды
/setting link + одна из следующих опций

none - не добавлять ссылку
Пример: /setting link none

full - добавить полную ссылку
Пример: /setting link full

любой текст - поместить ссылку под этот текст
Пример: /setting link Канал о котиках

Эта настройка доступна через главное меню, но её можно изменить и с помощью команд. Чтобы применить эту настройку только к одному каналу, замените команду /setting на /settingchannel ссылка_на_источник (подробнее).

Изменения тела сообщения c Before & After

Где найти
Меню → Настройки перенаправлений → Выбрать источник и назначение → Добавить в начале/конце

С помощью этих настроек можно добавить текст до или после текста сообщения.

⏵Команды
/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 - убрать текст после сообщения.

Чтобы добавить текст из нескольких строк, в конце каждой строки ставьте тег <br>.

Этой настройкой вы можете, например, добавить к каждому сообщению ссылку на свой сайт:
/settingchannel ссылка_на_источник after <br><a href="https://junctionbot.io/">Мой сайт</a>

Эта настройка доступна через главное меню, но её можно изменить и с помощью команд. Чтобы применить эту настройку только к одному каналу, замените команду /setting на /settingchannel ссылка_на_источник (подробнее).

Изменения тела сообщения и кнопок c Replace

Где найти
Меню → Настройки перенаправлений → Выбрать источник и назначение → Замены

Вы можете установить правило автозамены, которое заменит текст A во входящих сообщениях текстом Б (или пустой строкой, если не указывать текст Б).

Обратите внимание, что эта настройка работает только с телом сообщения и кнопками, не меняя заголовок (название канала) или ссылку на исходное сообщение.

Если у вас существует несколько перенаправлений из одного источника в разные направления, вы можете устанавливать разные настройки, фильтры и замены для разных направлений. См. подробнее здесь.

⏵Команды
/replace - заменить текст А на текст Б, а также удалить это правило, если ввести команду повторно.
Формат: /replace ссылка_на_источник текст&nbsp;который&nbsp;надо&nbsp;заменить новый&nbsp;текст
Пример: /replace ссылка_на_источник Быть&nbsp;или&nbsp;не&nbsp;быть (цитата) - заменит все тексты из указанного канала, совпадающие с "Быть или не быть" на фразу "(цитата)"
Пример: /replace ссылка_на_источник Это&nbsp;реклама - удалит все фразы "Это реклама" в сообщениях, приходящих из указанного канала.

/replacerx - создать правило замены с помощью регулярных выражений. Формат аналогичен формату команды /replace.

/replace ссылка_на_источник - посмотреть все правила замены для источника

/replacerx ссылка_на_источник - посмотреть все правила замены с помощью регулярных выражений для источника.

Чтобы удалить правило замены, используйте ту же команду с теми же аргументами во второй раз. 

При использовании команд важно учитывать следующие замены:
- вместо пробелов между словами ставьте &nbsp;
- в местах переноса строки ставьте <br>
Это можно легко сделать с помощью функции "Найти и заменить" в большинстве текстовых редакторов.

Замена с использованием регулярных выражений

Кроме того, вы можете использовать регулярные выражения для замены. Для этого на панели замены поставьте галочку RE.

Есть удобный инструмент для проверки регулярных выражений: https://regex101.com. Установите Flavor на «Java 8» и отметьте флаги «Single line: Dot matches the new line» и «Global: Don’t return after first match». Это заставит его работать так же, как у Junction Bot.

⏵Команды
Для создания правил замены с регулярными выражениям используйте команду /replacerx. У нее такой же формат, как и у /replace. 

Помощь по регулярным выражениям

Реглярные выражения — это общирная тема. Помощь в этой области выходит за рамки возможностей администрации бота. Пожалуйста, не пишите админам в личку с просьбой составить вам правило замены или фильтр. Также, администрация бота не предоставляет соответствующую помощь в чате поддержки.

Самый простой способ заполучить интересующее вас регулярное выражение — попросить ChatGPT. Он просто эксперт!

Также можно обратиться на соответствующие форумы. Например StackOverflow, CyberForum или RuBoard.

Полезные примеры замен

Когда отлаживаешь регулярное выражение

Да, мы знаем, регулярные выражения — это непросто. Ниже приведены выражения для популярных задач по замене. Некоторые можно решить без регулярных выражений, но в большинстве без них не обойтись.

Если для создания замен вы используете основное меню, то второй аргумент команды /replace указывайте в поле Источник, а третий в поле Новое значение. Например, в примере №4 в поле Источник будет стоять <a[^<]+</a>, а поле Новое значение будет пустым. Также, поскольку используется команда /replacerx, то должна стоять галочка RE.

1. Заголовок с названием исходного канала, добавленный ботом, можно удалить командой
/setting header none
2. Ссылку на исходный пост, добавленную ботом, можно удалить командой
/setting link none
3. Конкретные ссылки из тела сообщения можно удалить командой
/replace источник <a&nbsp;href="https://конкретная-ссылка">текст&nbsp;этой&nbsp;ссылки</a>
Во всех сообщениях из канала @source она заменит все именно такие ссылки на пустую строку.
4. Удалить вообще все ссылки в теле сообщения, если они передаются форматированием, можно командой
/replacerx источник <a[^<]+</a>
5. Если ссылки в теле сообщения передаются просто текстом, их можно убрать командой
/replacerx источник (http:\/\/|https:\/\/)([a-zA-Z0-9.\/\?=&_]+)
6. Убрать только ссылки, содержащие только t.me, можно командой
/replacerx источник (http:\/\/|https:\/\/)(t.me)([a-zA-Z0-9.\/\?=&_]+)
Во всех сообщениях из канала @source она заменит все ссылки на пустую строку.
7. Убрать ссылки-юзернеймы вида @username
/replacerx источник @([a-zA-Z0-9=&_\-]+)
8. Убрать весь кусок сообщения, начинающийся со слова «Postscriptum»
/replacerx источник Postscriptum.*
9. Превратить кусок текста «кусок текста» в ссылку на https://junctionbot.io/
/replace источник кусок&nbsp;текста <a&nbsp;href="https://junctionbot.io/">кусок&nbsp;текста</a>
10. Убрать из сообщения все номера формата №12345
/replacerx источник №([0-9]+)
11. Удалить текст из подписей ко всем картинкам (пересылать только картинки). Все другие текстовые сообщения (без картинок) пересылаться не будут.
/replacerx источник .*
12. Удалить все строки, содержащие слово keyword
/replacerx источник .*\bkeyword\b.*
13. Удалить все пустые строки
/replace источник <br><br> <br>
14. Выделить слово keyword жирным шрифтом
/replace источник keyword <b>keyword</b>
15. Выделить все числа жирным шрифтом. Обратите внимание, что в последнем аргументе мы подставляем текст, заматченный RegEx выражением, с помощью так называемой пронумерованной обратной ссылки $1. Подробнее про этот мощный инструмент можно почитать здесь.
/replacerx источник ([0-9]+) <b>$1</b>
Выделить полностью всё сообщение жирным шрифтом можно так:
/replacerx источник (.*) <b>$1</b>
16. Убрать весть текст, оставив только строчку формата «Token: 0xdAC17F958D2ee523a2206206994597C13D831ec7», где значение токена может быть любым адресом формата ETH20.
/replacerx источник (?s).*(Token:&nbsp;0x[a-zA-Z0-9]+).* $1
Что тут происходит?
&nbsp; — это просто пробел, его можно писать пробелом, если вы работаете через меню, а не командами. То есть на самом деле наше выражение, это (?s).*(Token: 0x[a-zA-Z0-9]+).*
Мы говорим, что мы хотим заменить весь текст, подходящий под выражение, на значение первой группы ($1). Первая группа в нашем случае это (Token: 0x[a-zA-Z0-9]+).
Обвес в виде (?s).* и .* делает так, что под замену попадает весь текст вокруг нужной нам строки. Так как .* распространяется максимум на одну строку, мы добавляем модификатор (?s). Благодаря ему .* будет покрывать все строки до и после нужной нам строки с токеном.

Замена ссылок

Ссылки в сообщении бывают разного типа, поэтому одной универсальной команды не существует. Сначала, нам нужно определить тип ссылки, и только после этого мы сможем создать нужное правило замены. Чтобы определить тип ссылки, включите explain-отчет в Меню → Настройки перенаправлений → Выбрать источник и назначение → Explain-отчёт или командой

/settingchannel источник explain on

Теперь на каждое новое сообщение бот будет присылать отчет, включающий в себя исходный, не отформатированный текст сообщения. Именно так бот видит это сообщение, когда применяет правила замены. После включения отчёта, нам нужно дождаться нового сообщения в источнике, содержащего ссылку, которую мы хотим заменить.

Вариант 1. В пришедшем отчёте мы видим, что ссылка задана форматированием с помощью тега <a>. Например:
Свежие новости!
Мы выйграли премию "Самый быстрый бот в Телеграм!"
<a href="https://junctionbot.io">Добро пожаловать на наш сайт!</a>

Тогда в правиле замены нам нужно использовать всю эту конструкцию, не забыв заменить все пробелы на &nbsp;

Следующая замена удалит эту ссылку из сообщения:
/replace источник <a&nbsp;href="https://junctionbot.io">Добро&nbsp;пожаловать&nbsp;на&nbsp;наш&nbsp;сайт!</a>

Эта замена поменяет такую ссылку на https://lectumbot.com:
/replace источник <a&nbsp;href="https://junctionbot.io">Добро&nbsp;пожаловать&nbsp;на&nbsp;наш&nbsp;сайт!</a> <a&nbsp;href="https://lectumbot.com">Добро&nbsp;пожаловать&nbsp;на&nbsp;наш&nbsp;сайт!</a>

Будьте аккуратны, в поледней команде есть только 3 пробела, между аргументами: источником, что менять и на что менять.

Если вы хотите заменять не конкретную ссылку, а все возможные ссылки, заданные с помощью <a>, то используйте следующую команду:
/replacerx источник <a[^<]+</a>

Вариант 2. В пришедшем отчёте мы видим, что ссылка задана без форматирования, просто текстом. Тогда вокруг ссылки не будет тега <a>.
Например:
Свежие новости!
Мы выйграли премию "Самый быстрый бот в Телаграм!"
Добро пожаловать на наш сайт!
https://junctionbot.io

Тогда, не мудрствуя лукаво, в правиле замены мы просто указываем ссылку. Чтобы убрать её, используем команду:
/replace источник https://junctionbot.io

Чтобы заменить на другую:
/replace источник https://junctionbot.io https://lectumbot.com

Если мы хотим убрать любые подобные ссылки, то используем команду:
/replacerx источник https:\/\/\S+

Другие варианты

Ссылку на исходный пост, добавленную самим ботом, можно удалить командой
/setting link none

Любые ссылку в формате @username, не добавленные самим ботом, можно удалить командой
/replacerx источник @([a-zA-Z0-9=&_\-]+)

Изменение форматирования

Форматирование текста происходит через HTML-теги. Подробнее от тегах, используемых в Телеграме, можете прочитать здесь.

То есть, чтобы добавить форматирование, вам нужно окружить нужный кусок текста соответсвующими тегами. Например, чтобы сделать нужный кусок текста жирным:

/replace источник нужный&nbsp;кусок&nbsp;текста <b>нужный&nbsp;кусок&nbsp;текста</b>

Более продвинутый способ смотрите в п.15 здесь.

Чтобы убрать форматирование, сначала вам нужно понять, как выглядит исходный текст сообщения, включающий в себя теги. Для этого используйте настройку explain:

/settingchannel источник explain on

Затем вы можете добавить соответсвующие правила замен, удаляющие ненужные теги. Например, чтобы удалить удалить жирное выделение с нужный кусок текста:

/replace источник <b>нужный&nbsp;кусок&nbsp;текста</b> нужный&nbsp;кусок&nbsp;текста

Продвинутый пример

Предположим, что мы создали канал, аккумулирующий бесплатные торговые сигналы из других каналов, и хотим привести все сигналы к одному формату. Пример сообщения в канале-источнике:

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&nbsp; BUY<br>#
Первый аргумент — наш источник &1234567890#1122334455.
Второй — что нужно зменить. Обратите внимание, что для команд /replace и /replacerx пробелы указываются символами &nbsp;
Третий аргумент — на что заменять. Перевод строки указывается символами <br>

Далее похожая замена: Stop-Loss at заменяем на SL:
/replace &1234567890#1122334455 Stop-Loss&nbsp;at SL:

Следующая команда будет сложнее. Нам нужно убрать две строки Take-Profit 1 и Take-Profit 2 и вместо них добавить к предыдущей строке SL слово points. Для этого воспользуемся командой /replacerx, которая позволяет работать с регулярными выражениями.
/replacerx &1234567890#1122334455 \nTake-Profit&nbsp;1.*\n points<br>
В регулярных выражениях \n соответсвует переводу строки, а .* соответствует любой комбинации символов. Таким образом \nTake-Profit&nbsp;1.*\n соответсвует Take-Profit 1 вместе с переводом строки до него, ценой после (какой бы она ни была) и переводом строки после цены. Посколку мы захватыаем здесь два перевода строки, мы должны компенисровать это, прибывив <br> к слову points.

Затем заменяем строку Take-Profit 2 с ценой и Take-Profit 3 на TP:
/replacerx &1234567890#1122334455 Take-Profit&nbsp;2.*Take-Profit&nbsp;3 TP:

И, наконец, прибавляем в конце слово points и строчку Trade at your own risk! Для этого воспользуемся настройкой after, прибавляющей к каждому сообщению в конце заданный текст.
/settingchannel &1234567890#1122334455 after points<br>Trade at your own risk!

Замена премиум emoji

Премиум emoji передаются с помощью тега <strong>, например:

<strong documentid="123456789">😁</strong>

Узнать точный код можно включив в канале explain-отчёт (Меню → Настройки перенаправлений → Выбрать источник и назначение → Explain-отчёт) и отправив туда нужный emoji.

Зная точный код, вы можете использовать его в заменах или добавлять этот emoji к своему сообщению настройками before/after. Учтите, что для публикации премиум emoji должны быть соблюдены соответствующие условия.

Редактирование и перевод с помощью ИИ

Вы можете описать в свободной форме изменения, которые нужно совешать с текстом сообщений, и позволить ИИ сделать всю остальную работу. Таким образом можно как менять какие-либо элементы текста или числа, так и переписывать текст полностью заново (например, на другом языке, в другом стиле, изменив размер, но сохранив смысл, проанализировав и сделоав выводы и пр.).

Как это настроить, смотрите здесь.

Ручное редактирование

Если вы хотите вручную редактировать пересылаемое сообщение, используйте режим ревью.

Замена изображений, видео, документов и.т.п

Обычные замены работают только с текстом сообщения и кнопками. Если вы хотите заменять одну картинку на другую, используйте режим ревью.

Как разобраться, почему замены не работают, как я хочу?

Если вам трудно понять, почему ваши правила замены не работают, вы можете попробовать следующую процедуру.

Проверьте, каковы текущие правила замены и являются ли они правильными в Меню → Настройки перенаправлений → Выбрать источник и назначение → Замены или командами

/replace источник
/replacerx источник

Если вы не видите ничего подозрительного, включите режим объяснения (explain-отчет) для вашего источника в Меню → Настройки перенаправлений → Выбрать источник и назначение → Explain-отчёт или командой

/settingchannel источник explain on

Если этот режим включен, вы будете получать отчет о каждом новом сообщении, приходящем из этого источника. Отчет будет содержать необработанное тело сообщения, без форматирования. Именно так бот видит это сообщение до применения правил замены. Обычно это позволяет понять, почему ваше правило не применяется.

Если это не помогло и вы все еще испытываете трудности, не стесняйтесь попросить помощи в чате поддержки. Ваш запрос должен содержать:

  1. Пересланное (отфорварденное) сообщение из источника
  2. Explain-отчет к этому сообщению
  3. Ссылка на проект regex101.com, содержащий тело сообщения и регулярное выражение (RegEx), которое вы пытаетесь исправить.
  4. Пересланное (отфорварденное) сообщение из назначения

В regex101.com установите Flavor на «golang» и установите флаги «Single line: Точка совпадает с новой строкой» и «Глобальный: Не возвращаться после первого совпадения». Это заставит его работать так же, как мачер @junction_bot.

Вопросы о неработающих заменах с RegEx не будут рассмотрены службой поддержки без этой информации.