
Про разработку ботов в Telegram написано много текстов, а про «тестовый дата-центр» практически ничего. Ранее Pavelgram освещал этот вопрос: он кратко рассказал, что такое тестовые серверы и как с ними работать. Я продолжу это начинание.
Эта статья — сборник разбросанной документации и результатов экспериментов. Под катом расскажу о технических особенностях тестового окружения для разработки, покажу примеры ботов и юзерботов. В качестве бонуса — история «о жизни в тестовом контуре».
Используйте навигацию, чтобы выбрать интересующий блок:
→ Тестовые дата-центры
→ Свои, откройте!
→ Прятки с официальными аккаунтами
→ Чего нельзя сделать
→ Инструменты разработчика
→ Жизнь в тесте
→ Заключение
Тестовые дата-центры
Серверы мессенджера распределены по всему миру. Набор серверов в одном регионе в терминах Telegram называется дата-центром (ДЦ). Для оптимизации запросов к API клиент должен подключиться к ближайшему из доступных дата-центров. Запись о пользователе и все его данные хранятся в одном ДЦ, который определяется при первом входе.
При авторизации клиент не знает, в каком дата-центре располагается учетная запись пользователя, и отправляет запрос в случайный ДЦ, который возвращает ошибку и перенаправляет на нужные серверы. Если пользователь переезжает в другой регион и задерживается там надолго, то бэкенд может мигрировать пользователя в другой дата-центр — и клиенту придется обработать перенаправление.
Без корректной обработки перенаправлений клиент Telegram будет практически бесполезен: «недомашние серверы» пользователя откажутся сотрудничать. Поэтому разработчикам необходимо отладить функциональность переходов между ДЦ. Однако Telegram не любит отладку на проде: для всех аккаунтов в «боевом» окружении установлено ограничение по количеству успешных попыток входа. Превышение этого лимита приведет к ошибке 420 FLOOD_WAIT_X до следующего дня.
Здесь в игру вступает тестовое окружение — три дата-центра, полностью изолированные от основного Telegram. Это значит, что вы можете зарегистрироваться в тестовом окружении со своего номера телефона, и это будет новый аккаунт, который ничего не знает о вашем «настоящем» аккаунте.

40 000 аккаунтов уже готовы, еще миллион на подходе.
Для тестирования процессов авторизации, регистрации и переключений между дата-центрами в «тесте» существует 40 тыс аккаунтов с номером +999 66 X YYYY, где X — это цифра от 0 до 3, а YYYY — любое четырехзначное число. Число X задает принадлежность к дата-центру: 1-3 — пользователи явно «прибитые» к соответствующему ДЦ, а 0 — автоматически определяется как ближайший к клиенту.
Аккаунты +999 имеют фиксированный OTP (One-Time Password) для входа: это пять цифр X из номера телефона. Например, если номер телефона — +999 66 2 4227, то код для входа — 22222. Если у вас появилось желание воспользоваться таким публичным номером, не пренебрегайте информационной безопасностью.
- «Секрет» входа в публичные аккаунты — не секрет. Особенно после публикации очередной статьи на эту тему.
- Если вы хотите сохранить действия на аккаунте в тайне от других любопытствующих, стоит поставить облачный пароль (2FA).
- Фиксированный OTP на публичных номерах значит, что любой желающий может удалить ваш защищенный облачным паролем аккаунт.
- Публичные аккаунты периодически очищаются.
- При входе с мобильных устройств по умолчанию выбран пункт «Синхронизировать контакты». Обязательно выключайте!

Слева — аккаунт на личный номер, справа — «публичный» аккаунт.
Еще одна особенность публичных аккаунтов: Telegram скрывает IP-адрес и локацию входа.
Тестовые дата-центры — это полноценный Telegram, где, кажется, платные функции можно купить за «фантики». От этой мысли резко захотелось войти в тестовое окружение.

Свои, откройте!
Пробраться в тестовое окружение не так сложно. Официальные клиенты могут по-разному подключаться к тестовым дата-центрам.
Telegram Desktop (Windows, Linux): зайдите в настройки → нажмите Shift+Alt и ПКМ по кнопке Add Account → выберите Test Server.
Telegram Desktop (macOS): десять раз кликните на кнопку Settings → нажмите cmd и кликните по кнопке Add Account.
Android: скачайте приложение Telegram Beta с AppCenter → при первом входе выберите пункт Test Backend.
iOS: десять раз кликните по кнопке Settings → перейдите в Accounts → нажмите Add Account → выберите Test Server.
Напоминание: не синхронизируйте контакты своего телефона при входе в публичные аккаунты!
Ну вот и все, дойти до тестового окружения Telegram было не сложно. Теперь можно заниматься обычными «телеграмными» делами.
Прятки с официальными аккаунтами
В Telegram многие вопросы — а может и все — решаются через ботам. Их можно распознать по имени и галочке верификации. Однако в тестовом окружении есть определенные проблемы и с тем, и с другим.
Сервисный аккаунт
Первым в Telegram встречает сервисный аккаунт с номером телефона +42777. Этот аккаунт уведомляет о попытках входа и рассказывает, что изменилось при обновлении приложения.
Еще существует сервисный аккаунт с номером +333. У него нет верификации, но он доступен как в тестовом окружении, так и в продовом. «Старички» могли видеть от него приглашение в Telegram Desktop. Сейчас аккаунт не отвечает на сообщения.
В тестовом окружении сервисный аккаунт совершенно внезапно откликается на одну команду:
# Шаблон
/react {t.me url} {limit} {emoji_count}
# Ограничения
1 <= limit <= 200
1 <= emoji_count <= 11
# Пример
/react https://t.me/***/131 40 2
Данная команда увеличивает число реакций на указанном сообщении на
limit. Параметр emoji_count указывает на количество реакций, доступных команде. Например, при emoji_count = 1 команда выбирает случайную реакцию из доступных и ставит ее limit раз. Если emoji_count = 4, то команда распределяет limit реакций между четырьмя случайными эмодзи. У этой команды есть несколько побочных эффектов:- Реакции ставятся от имени «публичных» аккаунтов. Эти пользователи не вступают в канал/группу и не увеличивают счетчик просмотров. Так что возможна ситуация, когда реакций больше просмотров.
- Хотя верхняя граница
limit— 200, более 38 реакций получить не удалось. - Реации ставятся от одного набора аккаунтов. Иными словами, многократный вызов этой команды на одно сообщение не будет увеличивать количество реакций.
- Нет возможности управлять какую реакцию необходимо поставить. При
emoji_count = 1будет поставлена случайная реакция: это может быть как
Поделиться ссылкой:
Интересные статьи
Интересные статьи
Как настроить коммуникацию с заказчиком, какие для этого использовать инструменты и приёмы, на что обратить внимание и чего точно нельзя делать, а самое главное – как сделать проект более успешным? Об...
Данная статья поможет молодым специалистам легко начать работу со сценариями использования. Сценарии использования- это сценарий взаимодействия пользователя (или пользователей) с программным продуктом...
Языков в мире программирования масса, но корону по праву носит Python. Многие полюбили его за гибкость, лаконичность, бесчисленное количество модулей и поддержку сообщества. Именно этот язык стал осно...
Привет, Хабр! Меня зовут Антон. Примерно год назад я начал работать с Serverless — и был покорён этим подходом к разработке приложений. Несмотря на определённые недостатк...
Продолжение статьи:
«Как взлететь на батарейках или немного теории электропарамотора. Часть 1»
habr.com/ru/post/475174
4. Описание электропарамотора SkyMax.
В предыдущей статье уже фигурир...
