Файл: Телеграммбот построения маршрута с использованием общественного транспорта города Киева.pdf
Добавлен: 12.01.2024
Просмотров: 201
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Для получения токена необходимо написать специальному боту
@BotFather.
Ниже описаны примеры доступных методов для API:
а) getUpdates – это метод, используемый для получения обновлений по технологии long polling;
б) setWebhook – этот способ привязывает к роботу url домена, где содержится текущий запущенный бот;
в) sendMessage – метод, отправляющий текстовое сообщение в клиентской части Telegram;
г) sendLocation – метод, отправляющий сообщения с координатами местоположения устройства;
д) getFile – метод, возвращающий вложенные файлы по их имени.
Допускаются POST и GET запросы.
Есть 4 метода передачи характеристик в Bot API: а) запрос в URL;
б) application/x-www-form-urlencoded; в) application/json;
г) multipart/form-data (подходит для загрузки файлов).
Для работы с Telegram Bot API была исследована документация, в которой описаны все способы и характеристики, было установлено, что все ответы приходят в
JSON-формате. В ходе написания чат-бота были протестированы и использованы следующие методы и типы:
Метод getUpdates используется для получения обновлений через long polling.
Ответ возвращается посредством массива объектов Update. Параметры метода приведены в таблице 5.6.1.
Письмо
ИТ51.320БАК.002 ПО
31
Изм.
Письмо
№ докум.
Подпись
Дата
Таблица 5.6.1 – Параметры getUpdates
Параметры
Offset
Тип
Integer обязательный
Нет
Описание
Смещение относительно начала массива Update, разрешающее просматривать новые сообщения, игнорируя старые.
Ограничивает количество элементов массива
Update. Принимает значение от 1 до 100.
Таймаут в секундах для продолжительного опроса. По умолчанию 0, то есть так называемый краткий запрос.
Limit
Integer
Нет
Timeout
Integer
Нет
Метод setWebhook необходим для задания URL веб-хука, на который бот будет отправлять обновления. Каждый раз при получении обновления по этому адресу будет отправлен HTTPS POST с сериализированным в JSON объектом
Update.
При ошибке запроса на сервер попытка будет повторена несколько раз.
Для большей безопасности рекомендуется включить токен в URL веб-хука, например: https://yourwebhookserver.com/
Таблица 5.6.2 – Параметры setWebhook
Параметры url
Тип
String обязательный
Нет
Описание
HTTPS url для отправки запросов.
Sertificate
InputFile Нет
Загрузка общественного ключа для проверки корневого сертификата.
Письмо
ИТ51.320БАК.002 ПО
32
Изм.
Письмо
№ докум.
Подпись
Дата
Метод getWebhookInfo включает в себя информацию о текущем состоянии веб- хука. Параметры данного метода приведены в таблице 5.6.3.
Таблица 5.6.3 – Настройки возвращаемые getWebhookIn
Параметры url has_custom_cer tificate pending_update
_count last_error_date
Тип
String
Boolean
Описание url веб-хука, может быть пустым.
Да, только если веб-хук использует свой самозаверенный сертификат.
Количество обновлений, ожидающих своей очереди.
Integer
Integer
Не обязательно. Unix – время последней ошибки доставки обновления на указанный веб-хук.
Не обязательно. Описание последней ошибки доставки обновления на указанный веб-хук.
last_error_mess String age
Метод sendMessage используется для отправки сообщений.
Параметры метода приведены в таблице 5.6.5.
Таблица 5.6.4 – Параметры sendMessage
Параметры chat_id
Тип
Integer
String
Обязательный
Да
Описание
Уникальный целевого чата или имени целевого канала.
Текст сообщения,
необходимо отправить.
или идентификатор
Text
String
Да какое
Письмо
ИТ51.320БАК.002 ПО
33
Изм.
Письмо
№ докум.
Подпись
Дата
Продолжение таблицы 5.6.4.
Параметры
Тип
Обязательный
Описание
Нужно
Markdown или HTML, чтобы приложения Telegram отражали курсивный,
фиксированной встроенные сообщении бота.
Отключает просмотр сообщении.
Отправляет тихо. Пользователи iOS не получат пользователи получат сообщение без звука
Идентификатор сообщения.
отправить parse_mode
String
Нет полужирный,
текст шириной
URL-адреса в с
или disable_web_pag e_
preview
Boolean
Нет предварительный ссылок в сообщение disable_notificati Boolean on
Нет сообщение,
Android replay_to message_id
Integer
Нет выходного
InlineKeybo ard Markup или
ReplyKeybo ard Markup или ReplyKe yboard Hide
Расширенные поиска собой объект клавиатуры,
пользовательская.
возможности интерфейс. Представляет
JSON-сериализированный для replay_markup
Нет встроенной какая
Письмо
ИТ51.320БАК.002 ПО
34
Изм. Письмо
№ докум.
Подпись
Дата
Метод sendPhoto используется для отправки фотографий. Параметры метода приведены в таблице 5.6.5.
Таблица 5.6.5 – Настройки sendPhoto
Параметры chat_id
Тип
Integer
String
Обязательный
Да
Описание
Уникальный идентификатор целевого чата или имя целевого канала.
Фото для отправки.
Можно передать file_id как строку, чтобы фотографию находится
Telegram,
скачать фотографию.
Описание или
InputFile
String или
Photo
Да отправить какая уже на серверах или новую
Параметры
Тип
Обязательный
Caption
String
Нет
Тема фотографии от 0 до
200 символов.
Идентификатор исходящего сообщения.
replay_to message_id
Integer
Нет
Метод editMessageText используется для редактирования текстовых сообщений, отправленных ботом или через бота. Параметры метода приведены в таблице 5.6.6.
Письмо
ИТ51.320БАК.002 ПО
35
Изм.
Письмо
№ докум.
Подпись
Дата
Продолжение таблицы 5.6.5.
Параметры
Тип
InlineKeyboard
Markup or
ReplyKeyboard
Markup or
ReplyKeyboard
Hide or
ForceкReply
Обязательный
Описание
Расширенные поиск интерфейса. Представляет из себя
JSON- сериализированный объект для встроенной клавиатуры, предназначенной пользователя,
инструкции используются,
сокрытие пользователя принудительного ответа пользователя.
возможности
Replay_markup
Нет для определенные какие для клавиатуры или от
Таблица 5.6.6 – Настройки метода editMessageText
Параметры
Тип
Integer
String
Обязательный
Описание
Необходим если inline_message_id не указан.
идентификатор чата или имени канала.
Описание или параметр,
chat_id
Нет
Уникальный целевого
Параметры
Тип
Обязательный
Обязательно если chat_id и message_id не указаны.
Идентификатор встроенного сообщения inline_message_id
String
Нет
Письмо
ИТ51.320БАК.002 ПО
36
Изм.
Письмо
№ докум.
Подпись
Дата
Продолжение таблицы 5.6.6.
Параметры
Text
Тип
String
Обязательный
Да
Описание
Новый сообщения.
Нужно
Markdown или чтобы приложения отражали полужирный,
текст из шириной
URL-адреса сообщении сапога.
Отключает просмотр ссылок сообщении.
текст отправить
HTML,
Telegram parse_mode
1 2 3 4 5
String
Нет курсивный,
фиксированной или встроенные в
нашего disable_web_page_
preview
Boolean
Нет предварительный для ссылок в
этом
InlineKeyboard
Markup или
ReplyKeyboard
Markup или
ReplyKeyboard
Hide replay_markup
Нет
Расширенные поиск интерфейса.
возможности
Объект типа User предоставляет информацию о пользователе Telegram. Поля типа приведены в таблице 5.6.7
Письмо
ИТ51.320БАК.002 ПО
37
Изм. Письмо
№ докум.
Подпись
Дата
Таблица 5.6.7 – Поля объекта User
Поле
Id first_name last_name
Username
Тип
Integer
String
String
String
Описание
Уникальный идентификатор бота или пользователя
Имя бота или пользователя
Не обязательно. Фамилия бота или пользователя
Не обязательно. Username бота или пользователя
Объект типа Chat представляет собой информацию о чате. Поля типа приведены в таблице 5.6.8
Таблица 5.6.8 – Поля объекта Chat
Поле
Id
Тип
Integer
Описание
Уникальный
Абсолютное значение не превышает 1e13
Тип чата:
а) private;
б) group;
в) supergroup;
г) channel;
Не обязательно. Название для каналов или групп
Не обязательно. Username, для чатов и некоторых каналов
Не обязательно. Имя собеседника в чате
Нет собеседника в чате
Не обязательно. True, если все чат-участники являются администраторами.
идентификатор чата.
Type
Enum
Title
String
Username
String first_name
String last_name
String
Обязательно.
Фамилия all_members_are_adminis trators
Boolean
Письмо
ИТ51.320БАК.002 ПО
38
Изм. Письмо
№ докум.
Подпись
Дата
Объект типа Message представляет собой информацию о сообщениях. Поля типа приведены в таблице 5.6.9.
Таблица 5.6.9 – Поля объекта Message
Поле message_id
Тип
Integer
Описание
Уникальный сообщение
Не обязательно. Отправитель. Может быть пустым в каналах.
Дата отправки сообщения (Unix time)
Диалог, в котором было отправлено сообщение
Не обязательно. Для пересланных сообщений:
отправитель оригинального сообщения
Не обязательно. Для отправки сообщений: дата отправки сообщения.
Не обязательно. Ответ: оригинальное сообщение. Следует обратить внимание, что объект Message в этом поле не будет содержать дополнительных полей reply_to_message, даже если он сам является ответом.
Не обязательно. Для текстовых сообщений: текст сообщения,
0-4096 символов.
идентификатор
From
User
Date
Integer
Chat
Chat forward_from
User forward_date
Integer reply_to_message
Message
Text
String
Письмо
ИТ51.320БАК.002 ПО
39
Изм.
Письмо
№ докум.
Подпись
Дата
Продолжение таблицы 5.6.9.
Поле
Entities
Тип
Массив с
MessageEntity
Тип
Document
Описание
Не обязательно. Для текстовых сообщений: особое существо в тексте сообщения.
Описание
Не обязательно. Информация о фото с Не обязательно. Доступные размеры фото
Не обязательно. Информация о стикерах
Не обязательно. Информация о видеозаписи
Не обязательно. Информация о голосовом сообщении
Не обязательно. Подпись к файлу, фото или видео, 0-200 символов
Не обязательно. Информация об отправленном контакте.
Не обязательно. Информация о местонахождении.
Не обязательно. Информация о местоположении на карте.
Не обязательно. Информация о пользователе, добавленном в группу.
Не обязательно. Информация о пользователе, которого удалили.
Поле
Document
Photo массив
PhotoSize
Sticker
Sticker
Video
Video
Voice
Voice
Caption
String
Contact
Contact
Место
Место
Venue
Venue new_chat_member
User left_chat_member
User
Письмо
ИТ51.320БАК.002 ПО
40
Изм.
Письмо
№ докум.
Подпись
Дата
Продолжение таблицы 5.6.9.
Поле new_chat_title
Тип
String
Описание
Не обязательно. Название группы было изменено на поле.
с Не обязательно. Фото группы было изменено на это поле.
Описание
Нет сообщение: группа создана
Нет
Обязательно.
Сервисное сообщение: супергруппа создана.
Нет
Обязательно.
Сервисное сообщение: канал создан.
Не обязательно. группа превращена в супергруппу указанным идентификатором. Не превышает 1e13
Не обязательно. Cупергруппа была создана из группы с указанным идентификатором. Нет
1e13.
Нет сообщение было
Следует обратить внимание, что объект Message в этом поле не будет содержать дополнительные поля reply_to_message, даже если он сам является ответом new_chat_photo массив
PhotoSize
Тип
Поле group_chat_created
True
Обязательно.
Сервисное supergroup_chat_created
True channel_chat_created
True была с
migrate_to_chat_id
Integer migrate_from_chat_id
Integer превышает
Обязательно.
Указанное прикреплен.
pinned_message
Message
Письмо
ИТ51.320БАК.002 ПО
41
Изм.
Письмо
№ докум.
Подпись
Дата
Объект типа ReplyKeyboardMarkup представляет собой клавиатуру с опциями ответа. Поля типа приведены в таблице 5.6.10.
Таблица 5.6.10 – Поля объекта ReplyKeyboardMarkup
Поле
Тип массив массивов с
KeyboardButton
Описание
Массив рядов кнопок, каждый из которых является массивом объектов KeyboardButton
Keyboard
Нет подогнать количество кнопок (сделать его меньше, если кнопок мало). По умолчанию False, то есть клавиатура всегда такого же размера, как стандартная клавиатура устройства.
Не обязательно.
скрыть клавиатуру использование (по нажатию на кнопку). Ее по-прежнему можно будет открыть через иконку в поле ввода сообщения. По умолчанию False.
Не обязательно. Этот параметр требуется для показа клавиатуры только некоторым пользователям.
Пример: пользователь отправляет запрос на изменение языка бота. Бот отправляет клавиатуру со списком языков, видимую только этому пользователю.
Обязательно.
высоту
Указывает клавиатуры клиенту под resize_keyboard
Boolean
Указывает клиенту после one_time_keyboard
Boolean
Selective
Boolean
Письмо
ИТ51.320БАК.002 ПО
42
Изм.
Письмо
№ докум.
Подпись
Дата
Объект типа KeyboardButton является еще одной кнопкой в ответной клавиатуре.
Для обычных текстовых кнопок этот объект может изменяться на строку, содержащую текст на кнопке. Поля типа приведены в таблице 5.6.11.
Таблица 5.6.11 – Поля объекта KeyboardButton
Поле
Тип
Описание
Текст опциональные поля не использованы, то при нажатии на кнопку этот текст будет отправлен боту как простое сообщение.
Не обязательно. Если значение True, то при нажатии на кнопку бота отправится пользовательский контакт с его номером телефона. Доступно только в диалогах с ботом.
Не обязательно. Если значение True, то при нажатии на кнопку бота отправится местоположение пользователя. Доступно только в диалогах с ботом.
на кнопке.
Если ни одно с
Text
String request_contact
Boolean request_location
Boolean
Объект InlineKeyboardMarkup представляет собой встроенную клавиатуру, которая появляется под соответствующим сообщением. Поля типа приведены в таблице 5.6.12.
Объект типа InlineKeyboardButton – это еще одна кнопка встроенной клавиатуры. Мы обязательно должны задействовать ровно одно опциональное поле.
Поля типа приведены в таблице 5.6.13.
Письмо
ИТ51.320БАК.002 ПО
43
Изм.
Письмо
№ докум.
Подпись
Дата