Собственный бот и его сценарий
Регистрация Telegram-бота через BotFather
Для обмена книгами хочется завести отдельный чат, чтобы люди отправляли названия и фотографии, а организатор собирал предложения в одном месте. Будущему боту сначала нужен собственный профиль в Telegram, с узнаваемым именем и адресом, который потом получится разместить в объявлении.
Через BotFather зарегистрируем такой профиль, заполним описание и получим токен для подключения программы. Затем проверим, какому боту принадлежит токен. Отвечать на сообщения бот начнёт после подключения программы или конструктора, где будут настроены его действия.
Откройте официальный BotFather
Войдите в Telegram и перейдите по ссылке t.me/BotFather. Через этого официального бота Telegram создают других ботов и правят их профили; ссылка на него есть в документации Telegram. Регистрацию получится пройти в приложении на телефоне или компьютере.
В чате нажмите «Начать» / Start. Команды отправляйте сюда же, в переписку с BotFather. У каждой команды в начале косая черта, например /newbot.
Я разберу вымышленный пример «Книжная полка», будущего бота для обмена книгами. Имя и тексты профиля подойдут как заготовки; адрес нужно подобрать свободный.
Зарегистрируйте имя и адрес бота
- Отправьте BotFather команду
/newbot. - На просьбу указать имя напишите
Книжная полка. Это название люди увидят в чате и в профиле. Здесь допустима кириллица. - Затем укажите username, уникальное имя пользователя, из которого получится адрес. Для примера возьмём
knizhnaya_polka_demo_bot. - Если адрес занят, выберите другой вариант и отправьте его в ответ. Например, добавьте название книжного клуба латиницей.
- После успешной регистрации сохраните ссылку на бота и выданный токен. Ссылку можно публиковать, токен хранится в секрете.
Для 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.
- В приватном окне откройте введение в официальный учебник Telegram.
- В разделе Introduction найдите строку с
<YOUR_BOT_TOKEN>и окончанием/getMe. Она стоит сразу после предложения о проверке через браузер. - Скопируйте строку целиком, от
httpsдоgetMe, и вставьте в адресную строку приватного окна. Пока оставьте адрес без отправки. - Замените только
<YOUR_BOT_TOKEN>, включая угловые скобки, на токен, полученный от BotFather. Словоbotперед токеном и окончание/getMeсохраните. Проверьте, что в адресе отсутствуют пробелы и обратные кавычки. - Нажмите 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-бота.
В «Первопроходцах» работу над собственными ботами продолжают в практике ботов и автоматизации, с вопросами и ручной проверкой проектных работ. Уроки открываются постепенно, создание ботов относится к позднему этапу программы. После регистрации у вас уже есть профиль, к которому можно подключать выбранный сценарий и проверять первый ответ в настоящей переписке.