Перенаправления

Копируйте или перенаправляйте Телеграмм сообщения из различных источников в ваш канал или группу с помощью Junction Bot. Мы называем это перенаправлением.

Поддерживаемые источники сообщений:

  • публичные и приватные каналы и группы,
  • закрытые приватные каналы и группы (без ссылки-приглашения),
  • другие боты,
  • приватные чаты с другими пользователями.

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

Создание нового перенаправления Telegram-сообщений

Чтобы создать новое перенаправление Телеграм сообщений используйте команду /new. Бот проведёт вас через весь процесс настройки копирования интерактивно с помощью подсказок. По созданному правилу перенаправления Junction Bot будет копировать

После того, как перенаправление создано, вы можете посмотреть список перенаправлений командой /forwards.

Ссылка-приглашение

Если вы используете Стандартный аккаунт, вам нужна работающая ссылка-приглашение в Telegram-канал для создания перенаправления. Также бот может гарантировать доставку сообщений только пока ссылка-приглашение для него работает. Это значит, что если бота забанят в источнике, то он не сможет больше получать оттуда сообщения, и вам понадобится прямое подключение.

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

Копирование сообщений из одного Telegram источника в несколько назначений

Junction Bot может копировать Telegram сообщения в несколько назначений. Когда вы меняете настройки копирования, вы указываете в качестве идентификатора ссылку на источник. Но что делать, если у вас есть несколько перенаправлений из одного и того же источника и вы хотите поменять настройки только одного из них?

Добавьте в идентификатору источника следующую конструкцию: ->-1001222333444
Где -1001222333444 — идентификатор канала-назначения в системе Телеграм плюс префикс «-100» (так Телеграм отличает каналы от обычных чатов).

Узнать этот идентификатор очень просто, используйте команду
/filter ссылка_на_источник
Она выведет все возможные идентификаторы направлений на основе ваших текущих правил перенаправления из данного источника.

Итак, например, у вас есть следующие перенаправления:

Откуда: Канал-источник (&123456789#151617181)
Куда: Канал-назначение А (№1222333444)

Откуда: Канал-источник (&123456789#151617181)
Куда: Канал-назначение Б (№1777888999)

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

/filter &123456789#151617181

Она выведет

Фильтры для &123456789#151617181

Направление: -1001222333444 = Канал-назначение А (№1222333444)
Текущие фильтры mustHave:
пусто

Текущие фильтры mustNotHave:
пусто

Сообщения обрабатываются без пропусков.

Направление: -1001777888999 = Канал-назначение Б (№1777888999)
Текущие фильтры mustHave:
пусто

Текущие фильтры mustNotHave:
пусто

Следовательно, настройки двух разных фильтров из одного источника в разные назначения могут выглядеть так:

/filter &123456789#151617181->-1001222333444 mustHave красный
/filter &123456789#151617181->-1001777888999 mustHave зеленый

Использование промежуточных каналов

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

Например, если вы хотите добавить кнопку Открыть ко всем постам, пересылаемым из A в B и содержащим слово junction_bot, сделайте следующее:

  1. Командой /new создайте пересылку из канала A в промежуточный канал С.
  2. Командой /filter добавьте на эту пересылку фильтр mustHave на слово junction_bot.
  3. Командой /new создайте пересылку из канала A в промежуточный канал D.
  4. Командой /filter добавьте на эту пересылку фильтр mustNotHave на слово junction_bot. Про то, как добавить фильтр только на одно перенаправление, когда у вас есть несколько перенаправлений из одного и того же источника, см. здесь.
  5. Командой /new создайте пересылку из C в B.
  6. Командой /settingchannel добавьте на эту переылку настройку mybuttons с нужной кнопкой.
  7. Командой /new создайте пересылку из D в B.

Готово!

Группировка источников по папкам

Очень удобной функцией бота является возможность группировать источники и держать один набор настроек, применимый ко всем источникам в группе. Для этого используются папки Телеграм, соответственно, функция доступна только при использовании прямого подключения.

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

Для использования группировки создайте папку и добавьте туда нужные источники — каналы, чаты, боты. Далее, создайте новое перенаправление и в качестве источника выберите нужную папку (если папки ещё нет в списке, подождите пару минут и обновите список). Обратите внимание, что после названия папки указывается её состав — количество каналов, групп и личных чатов. Во ти всё, готово!

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

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

Состояние «подключение…»

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

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

Если к названию канала прибавлено (expired), значит, ссылка уже не работает. Может, она удалена администратором, а может бота заблокировали в этом канале.

Задержки

Командой /support вы можете запустить мастер, который поможет выяснить, почему сообщение не дошло или пришло с задержкой. Эта функция пока доступна только для прямого подключения.

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

Если у вас бесплатный или стандартный аккаунт

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

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

/express ссылка_на_медленный_источник

Чтобы сменить ускоряемый канал, сначала отключите ускорение той же самой командой и затем установите ускорение на новый канал. Список текущих ускорений можно узнать, отправив команду без аргументов.
Учтите, express — это дополнительный сервис, приобретаемый как отдельный пакет.

Учтите, гарантию моментальной доставки даёт только прямое подключение. Все сообщения из него приходят без задержек.

Если у вас прямое подключение

Тогда доставка сообщения осуществляется моментально. Если у вас постоянно есть заметная задержка на прямом подключении — значит подключению требуется дополнительная настройка. Используйте для этого команду /support.

Действительно ли «моментально» — моментально?

Моментально — это от милисекунд до нескольких секунд. Сам бот работает без задержек, но задержки могут быть при доставке сообщений Телеграмом.

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

Иногда мы проводим обновление системы. Это может разово вызвать заметную задержку, если обновление происходит именно в момент появления сообщения. Проверить, присходит ли в данный момент обновление системы, вы можете командой /status

Нюансы работы с защищенными Телеграм каналами

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

Про копирование из защищенных Телеграмм каналов и обход блокировки с помощью Junction Bot смотрите в соответсвующем разделе.

Копирование истории Телеграм канала

Для того, чтобы скопировать старые сообщения, испольтзуйте команду /history,

Если вы хотите скопировать историю Телеграмм канала, используя дополнительные настройки, то сначала вам нужно создать перенаправление из нужного источника в нужное назначение командой /new. Затем примените необходимые настройки на это правило перенаправления. После этого используйте команду /history и она автоматически будет использовать настройки, созданные вами.

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

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

Функции Телеграм-премиум

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

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

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

Webhooks или вызов вашего API

Иногда возникает необходимость получать Телеграм сообщения на свой API. Первая идея, которая приходит тогда разработчикам, это использовать HTTP-endpoint в стиле REST и принимать на него запросы от нашего бота в каком-нибудь формате типа JSON.

Мы настоятельно не рекомендуем этот подход и сознательно не добавляем эту функию в бота. Такие запросы имеют обыкновение не доходить или приходить несколько раз из-за различных сетевых проблем. С эволюцией вашей системы у вас возникнет необходимость «проигрывать» историю вызовов, смотреть логи вызовов на нашей стороне с целью отладки проблем на вашей и т.п. Такой фунционал потребует созднание отдельного продукта с нашей стороны.

Так что для таких задач мы вам рекомендуем использовать архитектуру message queue. А, поскольку перед нами уже есть готовый мессенджер, почему бы не использовать его? Просто создайте своего простейшего бота, это занимает 15 минут, и настройте пересылку из нужного источника прямо в этого бота. С помощью такого подхода вы получите черезвычайно надежную future-proof систему.

Как разобраться, почему приходят не все сообщения?

Используйте команду /support

Эта функция пока доступна только для прямого подключения. Командой /support вы можете запустить мастер, который поможет выяснить, почему сообщение не дошло или пришло с задержкой. Советуем попробовать этот способ до того, как пробовать остальные.

Включите explain-отчёт

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

/settingchannel ссылка_на_источник explain on

На каждое новое сообщение она будет присылать отчет, подробно объясняющий, почему сообщение не дошло. Если вы не понимаете, как прочитать отчёт или поправить фильтр, обращайтесь в чат поддержки.

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

Если на новое сообшение в источнике отчет не приходит, смотрите дальше.

Если у вас стандартный аккаунт

Скорее всего проблема в задержке или в слишком большом сообщении из защищенного канала.

Если у вас прямое подключение

Проверьте, подписан ли ваш подключенный аккаунт на источник.

Проверьте, может дело в слишком большом сообщении из защищенного канала.

Если проблема не в этом, пришлите нашему ассистенту номер телефона вашего подключённого аккаунта и номер источника. В очень редких случаях требуется дополнительная донастройка с нашей стороны.

Слишком большой поток сообщений в назначении

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

Попробуйте настроить отправку от имени своего аккаунта. В этом режиме ограничения должны быть мягче.

Также рассмотрите возможность разделить канал назначения на несколько.

Почему сообщения могут приходить не как в источнике?

Замены

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

Редактирования

Иногда сообщение в источнике редактируется уже после публикации. Тогда может получится, что бот скопирует сообщение до того, как админ отредактирует его. В этом случае в назначение попадёт первая версия сообщения. Мы иногда сталкиваемся с тем, что на отредактированных сообщениях даже нет пометки о редактировании. Если в источнике пост содержит текст с картинкой, а вам пришёл только текст — скорее всего проблема именно в этом.

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

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

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

Премиум-функционал

Бот не может один-в-один публиковать сообщения с премиум-функиями. Например, если автор канала опубликовал картинку с подписью длиннее 1024 символов, боту придется обрезать её, так как ботам разрешено публиковать подписи не длинее 1024.

Исправить проблему с длинными подписями можно, если у вас прямое подключение. Для этого на подключенном аккаунте приобретите Телеграм-премиум. Затем поставьте на перенаправление настройку delivery copy_client. Таким образом бот будет отправлять сообщения от имени вашего подключенного аккаунта и сможет использовать длинные подписи.

Почему могут приходить дубли?

Иногда сообщение в источнике публикуется по-ошибке дважды и затем один из дублей удаляется. Но бот к этому моменту уже может успеть передать оба сообщения. Самый «прямой» способ решить эту проблему — включить передачу удалений. Эта настройка доступка только для прямого подключения. Если у вас стаднатрный аккаунт, вы можете воспользоваться фильтром дублей.

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

/settingchannel ссылка_на_источник explain on

Таже, дубли могут приходить, если у вас ключена настройка edit new. Попробуйте ее удалить.