Главная страница

Телеграммбот построения маршрута с использованием общественного транспорта города Киева


Скачать 2.02 Mb.
НазваниеТелеграммбот построения маршрута с использованием общественного транспорта города Киева
Анкорshorodok_bakalavr
Дата10.04.2023
Размер2.02 Mb.
Формат файлаpdf
Имя файлаShorodok_bakalavr.uk.ru.pdf
ТипДиплом
#1049985
страница4 из 5
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
Изм.
Письмо
№ докум.
Подпись
Дата

Таблица 5.6.12 – Поля объекта InlineKeyboardMarkup
Поле
Тип
Описание
Массив строк, каждая из которых является массивом объектов
InlineKeyboardButton.
inline_keyboard
Массив
InlineKeyboardButton массивов с
Таблица 5.6.13 – Поля объекта Inline KeyboardButton
Поле
Text url
Тип
String
String
Описание
Текст на кнопке
Не обязательно. URL, который откроется при нажатии на кнопку
Не обязательно. Данные, которые будут отправлены callback_query нажатие на кнопку.
Не обязательно. Если этот параметр задан, то при нажатии кнопки дополнение предложит пользователю выбрать любой чат, откроет его и вставит в поле ввода сообщения юзернейм бота и определенный запрос для встроенного режима.
Если отправлять пустое поле, то будет вставлен только юзернейм бота.
callback_data
String в
при switch_inline_query
String
Письмо
ИТ51.320БАК.002 ПО
44
Изм.
Письмо
№ докум.
Подпись
Дата

Продолжение таблицы 5.6.13
Тип
Поле
Описание
Нет установлено,
кнопки введет имя бота и указан встроенный запрос в поле ввода текущего чата.
Может быть пустым, и в этом вставлено пользователя бота.
Описание игры, которая будет запущена, когда пользователь нажмет кнопку.
Обязательно.
нажатие
Если switch_inline_query_current_chat String случае только будет имя callback_game
CallbackGame
Примечание: Этот тип кнопки всегда первой первой строке.
должен кнопкой быть в
Письмо
ИТ51.320БАК.002 ПО
45
Изм.
Письмо
№ докум.
Подпись
Дата

6 БАЗА ДАННЫХ – MONGODB
MongoDB – это база данных, которая является документоориентированной с открытым исходным кодом и не требует описания схем таблиц. Главные черты и возможности:
а) поддержка отказоустойчивости и масштабируемости:
б) асинхронная репликация, набор реплик и распределения базы данных по узлам; в)
JSON-подобная схема хранения данных;
г) эффективное хранение больших объектов, административный интерфейс, серверные функции, Map/Reduce и прочее;
д) использование Javascript в качестве языка для формирования запросов; е) профилирование запросов;
ж) широкий набор атомарных операций над данными (условный поиск, сложная вставка/обновление и т.п.);
з) разные типы данных (в том числе поддержка массивов); поддержка индексов (B-Tree);
и) полнотекстовый поиск, в том числе на украинском языке, с поддержкой морфологии;
к) журнал операций, изменяющих данные в базе данных.
MongoDB предлагает документоориентированную модель данных в отличие от реляционных баз данных, благодаря чему она работает в разы быстрее, имеет лучшую масштабируемость и ее легче использовать. Однако, учитывая все недостатки традиционных баз данных и преимущества MongoDB, важным пониманием является то, что задачи бывают разные и методы их решения бывают также разные.
В определенной ситуации MongoDB действительно способна улучшить производительность программы, например возьмем ситуацию, которая существует потребность хранить сложные по структуре данные. В другой ситуации лучше будет использовать традиционные реляционные базы данных.
Письмо
ИТ51.320БАК.002 ПО
46
Изм.
Письмо
№ докум.
Подпись
Дата

MongoDB может представлять не только единственную базу данных, находящуюся на одном физическом сервере. Функциональность MongoDB позволяет разместить несколько баз данных на нескольких физических серверах, и эти базы смогут легко обмениваться данными и сохранять целостность.
В процессе создания телеграмма была спроектирована схема взаимодействия пользователя с базой данных, которая дает ответы на его сообщение (рисунок 6.1).
Рисунок 6.1 – Схема взаимодействия пользователя с базой данных
Вот несколько важных свойств этой базы данных:
а) формат данных в MongoDB. Одним из популярных стандартов обмена данными и их хранения является JSON (JavaScript Object Notation). JSON эффективно описывает сложные по структуре данные. Способ хранения данных в
MongoDB в этом плане похож на JSON, хотя формально JSON не используется. Для хранения в MongoDB применяется формат, который называется BSON или сокращение от binary JSON. BSON позволяет работать с данными быстрее: быстрее производится поиск и обработка. Хотя следует отметить, что BSON в отличие от хранения данных в формате JSON имеет небольшой недостаток: в целом данные в JSON-формате занимают меньше места, чем в формате BSON, с другой стороны, данный недостаток с лихвой окупается скоростью;
Письмо
ИТ51.320БАК.002 ПО
47
Изм. Письмо
№ докум.
Подпись
Дата
б) кроссплатформенность. MongoDB написана на C++, поэтому ее легко перенести на разные платформы. MongoDB может быть развернута на платформах Windows, Linux, MacOS, Solaris. Можно скачать исходный код и самому скомпилировать MongoDB, но рекомендуется использовать библиотеки с официального сайта;
в) коллекции. Если в традиционном мире SQL есть таблицы, то в мире
MongoDB есть коллекции. И если в реляционных БД таблицы хранят однотипные жестко структурированные объекты, то в коллекции могут содержать самые разные объекты, имеющие разную структуру и разный набор свойств;
г) репликация. Система хранения данных в MongoDB представляет набор репликов. В этом наборе имеется основной узел и может быть набор вторичных узлов. Все вторичные узлы сохраняют целостность и автоматически обновляются вместе с обновлением главного узла. И если основной узел по каким-то причинам выходит из строя, то один из вторичных узлов становится главным;
д) простота в использовании. Отсутствие жесткой схемы базы данных и в связи с этим потребности при малейшем изменении концепции хранения данных вновь создавать эту схему значительно облегчают работу с базами данных MongoDB и последующим их масштабированием. Кроме того, экономится время разработчиков.
Им больше не нужно думать о новом создании базы данных и тратить время на построение сложных запросов;
е) GridFS. Одной из проблем при работе с любыми системами баз данных есть сохранение данных большого размера. Можно хранить данные в файлах, используя разные языки программирования. Некоторые СУБД предлагают специальные типы данных для хранения бинарных данных в БД (например, BLOB в MySQL). В отличие от реляционных СУБД MongoDB позволяет хранить разные документы с разным набором данных, однако при этом размер документа ограничивается 16 Мб. Но MongoDB предлагает решение – специальную технологию GridFS, которая позволяет хранить данные по размеру больше, чем
16 Мб. Система GridFS состоит из двух коллекций. В первой коллекции, которая
Письмо
ИТ51.320БАК.002 ПО
48
Изм. Письмо
№ докум.
Подпись
Дата
называется files, сохраняются имена файлов, а также их метаданные, например размер. А в другой коллекции, которая называется chunks, в виде небольших сегментов хранятся данные файлов обычно сегментами по 256 Кб.
Письмо
ИТ51.320БАК.002 ПО
49
Изм.
Письмо
№ докум.
Подпись
Дата

7 TELEGRAM
Telegram – современный популярный сервис по обмену информацией.
Кроме версии для браузеров, существуют также версии для ОС Linux, Mac и
Windows, а также для популярных мобильных ОС, таких как Android, iOS и
Windows Phone.
Одной из главных функциональных возможностей этого сервиса является возможность создания сторонних приложений, так называемых «ботов», которые могут взаимодействовать с пользователями, отвечать на любые пользовательские команды, а также отправлять им сообщения. К примеру, уже сегодня существует множество ботов для получения новостей, последнего прогноза погоды, для создания заметок и напоминаний, для проведения банковских операций и т.д.
Сообщения, команды и запросы, отправленные пользователями, передаются на сервер, а именно разработчикам поисковых роботов. Сервер
Telegram является только посредником и предоставляет свой API для разработчиков, доступный с помощью HTTPS-интерфейса, предлагающего упрощенную версию API Telegram, так называемый Bot API. Для того чтобы начать взаимодействовать с ботом, пользователь должен сначала добавить его к себе в чат или в группу. или отправляя команды из чата непосредственно какому- либо боту, используя символ @ перед его именем в сообщении с командой.
Детальнее о ботах можно почитать на официальном сайте Telegram, в данной работе нас интересует только возможность добавления бота в чат или группу, после чего он сможет посылать туда оповещения при любых отклонениях анализируемых метрик.
Следует уточнить этап создания нового бота и использования API, предоставляемого
Telegram. Согласно инструкции с официального сайта, для создания бота минимально необходимы следующие пункты:
а) добавить бота «BotFather» к себе в чат, позволяющий управлять созданием и настройкой новых ботов внутри Telegram;
Письмо
ИТ51.320БАК.002 ПО
50
Изм.
Письмо
№ докум.
Подпись
Дата
б) отправить боту команду «/newbot», после чего тот запросит полное и короткое имя создаваемого бота (полное имя используется для отображения пользователю названия бота в заголовке чата, короткое имя для ссылки быстрых команд) и сгенерирует уникальный токен авторизации, который потребуется для идентификации бота и взаимодействия через TelegramAPI при отправке запросов.
Письмо
ИТ51.320БАК.002 ПО
51
Изм.
Письмо
№ докум.
Подпись
Дата

8 ТЕСТИРОВАНИЕ СИСТЕМЫ
Тестирование телеграмм бота производилось вручную. После каждого этапа разработки выполнялось тестирование работоспособности по заранее подготовленным тест-кейсам, которые были составлены при определении целей разработки и используемых инструментов.
Работа с Telegram ботом:
а) скорость отклика бота на сообщение о начале работы; б)корректная обработка сообщений разного типа от пользователя. в)корректное отображение диалога;
г)обработка нажатия на клавишу отправки сообщения; д) скорость отображения ответа после того, как пользователь написал сообщение;
е) скорость работы базы данных; ж) оценка корректности ответов.
Тестирование бота производилось на мобильном устройстве Apple Iphone 7 Plus со следующими техническими характеристиками.
а) экран: 5,5”, IPS LCD, 1920х1080, мультитач; б) процессор: Apple A10 Fusion, 4х1;
в) операционная система: iOS 12.1.4; г) оперативная память: 3 ГБ;
д) встроенная память: 128 ГБ; е) навигация: GPS;
ж) Telegram: Telegram v 5.7.
После подключения к чату пользователю доступна только одна команда
– start. Отправив эту команду, в ответ получаем основную информацию о ботах (рисунок 8.1).
Письмо
ИТ51.320БАК.002 ПО
52
Изм.
Письмо
№ докум.
Подпись
Дата

Рисунок 8.1 – Начало работы с ботом
После этого у нас появляется возможность отправить свое местонахождение, нажав кнопку Location или отправив команду /location. В свою очередь, бот в целях безопасности запросит разрешение на получение информации о местонахождении пользователя (рисунок 8.2).
1   2   3   4   5


написать администратору сайта