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

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

Откройте официальный BotFather

Войдите в Telegram и перейдите по ссылке t.me/BotFather. Через этого официального бота Telegram создают других ботов и правят их профили; ссылка на него есть в документации Telegram. Регистрацию получится пройти в приложении на телефоне или компьютере.

В чате нажмите «Начать» / Start. Команды отправляйте сюда же, в переписку с BotFather. У каждой команды в начале косая черта, например /newbot.

Я разберу вымышленный пример «Книжная полка», будущего бота для обмена книгами. Имя и тексты профиля подойдут как заготовки; адрес нужно подобрать свободный.

Зарегистрируйте имя и адрес бота

  1. Отправьте BotFather команду /newbot.
  2. На просьбу указать имя напишите Книжная полка. Это название люди увидят в чате и в профиле. Здесь допустима кириллица.
  3. Затем укажите username, уникальное имя пользователя, из которого получится адрес. Для примера возьмём knizhnaya_polka_demo_bot.
  4. Если адрес занят, выберите другой вариант и отправьте его в ответ. Например, добавьте название книжного клуба латиницей.
  5. После успешной регистрации сохраните ссылку на бота и выданный токен. Ссылку можно публиковать, токен хранится в секрете.

Для username Telegram принимает латинские буквы, цифры и подчёркивания. Длина составляет от 5 до 32 знаков, в конце обязательно bot. Регистр букв адреса значения не имеет. Указанное в примере имя даёт ссылку https://t.me/knizhnaya_polka_demo_bot, если Telegram разрешит его зарегистрировать. Правила имени и username.

Перед отправкой username прочитайте его целиком. Слишком длинный адрес придётся диктовать по буквам, а ведь ссылкой будут пользоваться люди. Для окончательного варианта лучше взять короткое понятное название.

Уже зарегистрированного бота можно найти через /mybots в BotFather. Там выберите нужный профиль, чтобы продолжить настройки.

Заполните профиль, чтобы человек узнал задачу бота

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

Что настраиваем Пример для «Книжной полки» Где это пригодится
Имя, команда /setname Книжная полка Название в профиле и переписке; его можно менять
Username, выбранный при /newbot knizhnaya_polka_demo_bot Публичный адрес бота; сохраните вместе со ссылкой
Описание, /setdescription «Здесь готовится бот для обмена книгами. Приём предложений откроем после настройки ответов.» Текст в начале чата; до 512 знаков
Короткое описание, /setabouttext «Будущий помощник для книжного обмена. Ответы пока настраиваются.» Текст профиля; до 120 знаков
Изображение, /setuserpic Простой значок открытой книги Помогает узнать контакт в списке чатов
Токен, полученный при регистрации Секретная запись в менеджере паролей Подключает программу к этому боту; хранится отдельно от публичного профиля

Чтобы записать описание, отправьте /setdescription, выберите бота и следующим сообщением пришлите подготовленный текст. По такому же порядку работают /setabouttext и /setuserpic; в последнем случае отправьте картинку по подсказке BotFather. Команды настройки профиля.

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

Сохраните токен отдельно от публичной ссылки

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

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

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

Проверьте токен через getMe

У Telegram есть метод getMe, который по токену возвращает сведения о боте. Запрос подтвердит, что Telegram принимает этот токен и что он относится к выбранному профилю. Справка getMe.

В официальном учебнике Telegram показана проверка через браузер. Её удобно выполнить на личном компьютере в приватном окне, чтобы адрес с токеном остался вне обычной истории браузера. В Chrome откройте меню с тремя точками и выберите «Новое окно в режиме инкогнито»; после проверки нужно закрыть все окна этого режима. Справка Chrome.

  1. В приватном окне откройте введение в официальный учебник Telegram.
  2. В разделе Introduction найдите строку с <YOUR_BOT_TOKEN> и окончанием /getMe. Она стоит сразу после предложения о проверке через браузер.
  3. Скопируйте строку целиком, от https до getMe, и вставьте в адресную строку приватного окна. Пока оставьте адрес без отправки.
  4. Замените только <YOUR_BOT_TOKEN>, включая угловые скобки, на токен, полученный от BotFather. Слово bot перед токеном и окончание /getMe сохраните. Проверьте, что в адресе отсутствуют пробелы и обратные кавычки.
  5. Нажмите Enter и прочитайте ответ Telegram по пояснению ниже. По завершении закройте все приватные окна.

Адрес с токеном отправляйте только как адрес страницы, не как поисковый запрос. Закладки и снимки экрана с этим адресом сохранят секрет. Инкогнито уменьшает следы на компьютере, но от доступа других людей к открытому окну токен защищает только внимательное обращение с ним.

При успехе в ответе будут "ok": true и раздел result со сведениями о боте. Вот сокращённый пример формата ответа для «Книжной полки», придуманный для пояснения полей.

{
  "ok": true,
  "result": {
    "is_bot": true,
    "first_name": "Книжная полка",
    "username": "knizhnaya_polka_demo_bot"
  }
}

Сверьте username с адресом зарегистрированного бота. В first_name должно стоять выбранное имя, а is_bot: true означает, что перед нами аккаунт бота. В полном ответе будут и другие поля, в том числе числовой id.

Если пришли сведения другого бота, введите токен нужного профиля. Если Telegram вернул "ok": false, проверьте правильность и актуальность токена, затем сверьте скопированный адрес с образцом в учебнике. Если страница вообще не загружается, проверьте подключение к интернету. Этот запрос получает только сведения о профиле; входящие сообщения и ответы бота проверяются на следующем этапе.

Вопросы и ответы

Почему бот молчит после нажатия Start?

Для ответов нужно подключить программу или конструктор и настроить действия бота. Через BotFather уже создан аккаунт, а в программе вы зададите, что отправлять на /start, как принимать название книги и куда сохранять предложение. Успешный getMe подтверждает токен и профиль. Чтобы проверить ответы, подключите программу и напишите боту. Как устроено создание бота.

Можно ли изменить username после регистрации?

По текущей документации Telegram изменить username бота позднее нельзя. Имя, описание и изображение профиля менять можно. Если нужен другой адрес, потребуется зарегистрировать нового бота и подключить его вместо прежнего. Правила BotFather.

Что делать, если токен попал в общий чат?

Сразу замените токен через BotFather. Отправьте /token, выберите нужного бота и следуйте подсказкам для получения нового токена. Затем обновите токен в подключённой программе или конструкторе и повторите getMe. Удаление сообщения из чата само по себе доступ к боту не меняет. Получение нового токена.

Хватит ли телефона для регистрации?

Да, имя, username и описания можно отправить BotFather в Telegram с телефона. Для показанной здесь проверки getMe используйте компьютер. Сохраните ссылку и токен, чтобы продолжить с того же профиля позже.

Начнёт ли бот отвечать, если добавить команды в меню?

Действия на эти команды нужно настроить в подключённой программе. Список через /setcommands помогает человеку выбрать команду в меню; например, /help для справки. Текст справки и сам ответ задаются отдельно. Меню команд.

Подготовьте первый ответ

Когда профиль заполнен и getMe вернул нужный username, можно переходить к переписке. Для «Книжной полки» я начал бы с приветствия и просьбы отправить название книги, автора и фотографию обложки. Дальше стоит решить, как сообщить, что предложение получено, и что делать, если человек забыл написать название. Это удобно записать заранее по инструкции о сценарии Telegram-бота.

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