Файл: Разработка информационной системы персонализации новостной ленты на базе платформы Telegram.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 27.03.2024

Просмотров: 24

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

15
Самый широкий функционал фильтрации новостей со стороны пользователя в ВК. В ней пользователю предоставляется возможность выбрать тематику новостей, которые он хотел бы получить в данный момент. На главной странце сайта представлены разделы: «Арт», «Стиль», «Туризм», «Кино»,
«Короновирус», «Наука», «Шопинг», «Музыка», «IT», «Игры», «Юмор»,
«Фото», «Спорт», «Футбол». Важно отметить, что отсутствуют такие разделы, как «Политика» и «ЧП», так как ВК в первую очередь позиционируется, как развлекательный сервис. Как следствие, данный сервис не может обеспечить нам получение всей нужной информации.
В таких социальных сетях, как ВК, Instagram, Tiktok, Facebook, новостная лента регулируется на основании общих предпочтений человека, но не даёт возможности регулировать ее под настроение в данный момент. Лента в свою очередь «бесконечная». «Долистать» публикации до конца невозможно, когда вы просмотрите все публикации аккаунтов, на которые вы подписаны, вам будут показывать публикации похожих пользователей.
Провести самостоятельную фильтрацию в данных соц. невозможно.
Существует только пара вариантов. Первый – перейти на страницу профильного блога. Таким образом пользователь сможет получить информация о путешествиях на одной странице, затем об IT сфере и так далее. Да, вы сможете избежать негативной информации, но такой вариант все равно очень неудобен.
Второй вариант фильтрации информации – перейти на страницу определённого СМИ, который освещает новости на разные темы. У этого способа тоже большие недостатки. Да, вы получите новости про путешествия и
IT в одном месте, но в придачу вы получите и множество новостей про преступления и происшествия, которые хотели бы избежать.
Также возможна фильтрация по средствам хэштегов, но это тоже как правило фильтрация по очень узкому критерию, так как обычно хэштеги состоят из одного слова. Например «#футбол», «#котята», «#музыка». К тому же, по хэштегам показываются посты всех аккаунтов в социальной сети, и вы не можете выбрать от каких пользователей вы хотите видеть новости.

16
Самостоятельно добавить функцию блокировки новостей о конкретных темах в рассматриваемых социальных сетях – невозможно, они не предоставляют возможности написания программ для использования внутри социальной сети.
Такие возможности предоставляет мессенджер Telegram. Telegram – кросс- платформенная система мгновенного обмена сообщениями с функциями VoIP, позволяющая обмениваться текстовыми, голосовыми и видеосообщениями, стикерами и фотографиями, файлами многих форматов. Также можно совершать видео- и аудиозвонки, организовывать конференции, многопользовательские группы и каналы.
Telegram является оптимальной платформой для реализации проекта.
Поговорим подробней об этой платформе.
В Telegram пользователи могут создавать личные чаты, telegram-каналы для публикации постов и telegram-ботов. Telegram-каналы – способ публикации постов, состоящих из текстовых сообщений, фото, видео и так далее.
Практически все популярные СМИ сейчас имеют свои telegram-каналы, где публикуют новости в формате новостной ленты. Пользователи подписываются на данные каналы, и могут получать уведомления о новостях. Внутри каналов лента вообще никак не подстраивается под пользователя, новости выстраиваются в последовательности их публикации.
Telegram-бот
– программа, выполняющая различные действия, автоматически или по определенной команде на базе платформы Telegram.
Функционал таких программ очень обширный, Telegram предоставляет большие возможности для программистов.
Несмотря на обилие ботов, на данный момент не существует бота для фильтрации новостной ленты. Таким образом, из плюсов данной платформы, не только удобность для написания программы, но и отсутствие аналогов [2].


17

1.2. Технологические возможности Telegram
Перечислим основные функции сервера.
1) Сервер Telegram реализует шифрование по протоколу MTProto.
MTProto – криптографический протокол, используемый в системе обмена сообщениями Telegram для шифрования переписки пользователей. Протокол был разработан Николаем Дуровым и другими программистами Telegram.
В основе протокола лежит оригинальная комбинация симметричного алгоритма шифрования AES (в режиме IGE), протокол Диффи-Хеллмана для обмена 2048-битными RSA-ключами между двумя устройствами и ряд хеш- функций. Протокол допускает использование шифрования end-to-end с опциональной сверкой ключей [3].
2) Сервер Telegram позволяет хранить всю переданную информацию и файлы на собственном хранилище, без ограничения объема хранимой информации, но с ограничением максимального размера файлов.
3) Сервер Telegram позволяет поставлять свои услуги сторонним серверам, для этого в Telegram предусмотрен специальный тип клиента (аккаунта) под названием бот. Боты – специальные аккаунты в Telegram, созданные для того, чтобы автоматически обрабатывать и отправлять сообщения. Пользователи
(обычные клиенты) могут взаимодействовать с ботами при помощи сообщений, отправляемых через обычные или групповые чаты. Логика работы бота реализуется при помощи HTTPS запросов к API для ботов.
4) Сервер Telegram позволяет получить доступ к своим услугам через несколько интерфейсов:
- Приложения для различных платформ (Windows, Linux, MacOS, Android,
Iphone) – прикладной человеко-машинный интерфейс для подключения клиента (пользователя) к Telegram;
- Web-приложения – прикладной человеко-машинный интерфейс для подключения клиента (пользователя) к Telegram через браузер;

18
- Telegram Bot API – программный интерфейс для создания ботов при помощи HTTPS запросов;
- MTProto API – программный интерфейс для доступа к протоколу
MTProto при помощи HTTPS запросов.
Суммируя пункты 3, 4, можно заключить что в платформе Telegram существует два типа клиентов: пользователи и боты. Пользователями являются живые люди, для них разработаны человеко-машинные интерфейсы доступа к платформе. Ботами являются программы, обменивающиеся с пользователями информацией через чат. Логика работы бота должна быть реализована на втором, отдельном сервере.
Сервер системы персонализации будет являться поставщиком услуг по отношению к конечному пользователю и клиентом по отношению к платформе
Telegram. Методы передачи и получения информации (поставки услуг) конечному пользователю ограничены и описаны в документации Telegram [4].
Для примера выборочно приведем некоторые из методов:
- getMe – возвращает информацию о боте;
- sendMessage – посылает заданное текстовое сообщение указанному по
id пользователю;
- forwardMessage – пересылает полученное сообщение другому пользователю;
- sendPhoto – посылает фотографию пользователю;
- getFile – загружает полученный файл;
- banChatMember – блокирует пользователя в чате (для данного действия бот должен быть назначен администратором чата);
- editChatInviteLink – изменяет ссылку необходимую для присоединения к чату;
- answerCallbackQuery – высылает пользователю варианты ответа на запрошенный ботом вопрос;
- setMyCommands – задает список стандартных команд бота.


19
Логика использования данного инструментария обмена информации с пользователем должна быть реализована на сервере системы персонализации.
Для этого необходимы серверные мощности (хост), алгоритмы обработки информации, реализованные с помощью одного из языков программирования, база данных для хранения информации.
1.3. Выбор технологий серверной разработки
1.3.1. Язык программирования и библиотеки
Разрабатываемая информационная система будет иметь клиент-серверную архитектуру с учетом специфики реализации информационных систем на базе платформы Telegram.
Классическую клиент-серверную архитектуру можно описать как взаимодействие двух или более сторон в которой одна сторона является владельцем информации или поставщиком услуг, а вторая и прочие являются потребителями информации или заказчиками услуг, при этом согласно, пособию, эффективное программирование TCP/IP можно выделить три типичных архитектуры клиент-сервер.
В случае реализации информационной системы на платформе Telegram клиент и сервер будут находиться в разных сетях, помимо этого в архитектуре можно будет выделить два сервера и неограниченное число клиентов.
Первым и основным с точки зрения обеспечения связи будет сервер платформы
Telegram. Он реализует функции уровней с транспортного по прикладной по модели OSI.
Для реализации логики системы и алгоритмов обработки информации необходимо использовать один из существующих языков программирования. На данный момент в мире существует около 1000 языков программирования.
Конечно далеко не все из них массово используются, но даже если составлять список востребованных языков программирование их будет десятки. Для определения подходящего языка программирования можно воспользоваться

20 справкой платформы Telegram, в которой приведен список разработанных библиотек для подключения к API на разных языках. Разработанные библиотеки значительно ускоряют процесс разработки системы, так как предоставляют готовые алгоритмы обмена HTTPS запросами с API Telegram.
Для выбора языка программирования и используемой библиотеки проведем анализ проектов на портале GitHub по следующим характеристикам:
- количество библиотек, разработанных для данного языка программирования – косвенно позволяет определить применимость языка для написания алгоритмов для Telegram-бота;
- оценка проекта на портале GitHub – позволяет оценить качество библиотеки по мнению сообщества GitHub;
- дата последнего обновления проекта – так как Telegram выпускает обновления для платформы и для API и языки программирования так же обновляются и выпускают новые версии, то библиотеки так же требуют обновлений. Дата последнего обновления позволяет оценить актуальность и качество поддержки библиотеки;
- количество обновлений библиотеки.
Сравнительные данные библиотек представлены в таблице 1.
Таблица 1 – Сравнительные данные библиотек
Язык
Название
Ссылка на Git
Оценка на Git
Дата последнего обновления
Количество обновлений
PHP
Telegram Bot
Api Base https://github.com/tg- bot-api/bot-api-base
186 13.12.2020 222
PHP
PHP
Telegram API https://github.com/unre al4u/telegram-api
688 26.09.2021 473
PHP
PHP
Telegram Bot https://github.com/php- telegram-bot/core
2900 23.01.2022 1595
PHP
Bot API PHP
SDK https://github.com/iraza syed/telegram-bot-sdk
2200 27.01.2022 553


21
Продолжение таблицы 1
Язык
Название
Ссылка на Git
Оценка на Git
Дата последнего обновления
Количество обновлений
PHP
TeleBot https://github.com/west acks/telebot
123 20.10.2022 255
PHP
NovaGram https://github.com/skrtd ev/NovaGram
145 27.06.2021 442
PHP
PHP
Telegram Bot https://github.com/form apro/telegram-bot-php
240 14.05.2019 44
PHP
PHP
Telegram Bot
Api https://github.com/Tele gramBot/Api
830 26.12.2021 482
PHP
TuriBot https://github.com/davt ur19/TuriBot
86 01.12.2022 51
PHP
TelegramBot
ApiBundle https://github.com/bors aco/TelegramBotApiBu ndle
51 29.01.2022 42
Node.js
Telegraf https://github.com/teleg raf/telegraf
5300 22.01.2022 1392
Node.js
Node-
Telegram-bot https://github.com/yago p/node-telegram-bot- api
5900 12.10.2021 600
Node.js
Telebot https://github.com/mull war/telebot
1300 21.04.2021 429
Node.js telegram-bot- api https://github.com/mast
/telegram-bot-api
225 08.10.2020 65
Node.js
Slimbot https://github.com/ediso nchee/slimbot
186 23.03.2021 190
Node.js tgapi https://github.com/bigsl ycat/tgapi
37 26.06.2019 228
Node.js
Botgram https://github.com/botgr am/botgram
243 14.07.2019 250
Rust teloxide https://github.com/telox ide/teloxide
1000 26.01.2022 2413

22
Продолжение таблицы 1
Язык
Название
Ссылка на Git
Оценка на Git
Дата последнего обновления
Количество обновлений
Rust
Telebot https://github.com/bytes nake/telebot
189 06.05.2020 169
Rust carapax https://github.com/tg- rs/carapax
89 16.01.2022 752
Rust telegram-bot https://github.com/teleg ram-rs/telegram-bot
794 20.05.2021 612
Python python- telegram-bot https://github.com/pyth on-telegram- bot/python-telegram- bot
17500 01.02.2022 2268
Python pyTelegramB
otAPI https://github.com/etern noir/pyTelegramBotAP
I
5100 31.01.2022 1692
Python
AIOGram https://github.com/aiogr am/aiogram
23000 26.01.2022 1634
Python
Telethon https://github.com/Lona miWebs/Telethon
6000 28.01.2022 2855
Python pyrogram https://github.com/pyro gram/pyrogram
2300 29.01.2022 3661
Ruby
Telegram::Bot https://github.com/teleg ram-bot-rb/telegram- bot
480 05.01.2022 212
Ruby telegram-bot- ruby https://github.com/atipu gin/telegram-bot-ruby
1100 16.01.2022 270
Ruby
TelegramBot https://github.com/eljoj o/telegram_bot
292 09.08.2018 66
Swift telegram-bot- swift https://github.com/rapie rorg/telegram-bot-swift
318 13.08.2021 563
Swift
Telegrammer https://github.com/givip
/Telegrammer
271 06.09.2021 225

23
Продолжение таблицы 1
Язык
Название
Ссылка на Git
Оценка на Git
Дата последнего обновления
Количество обновлений
Swift
SwiftyBot https://github.com/Fabri zioBrancati/SwiftyBot
257 14.01.2019 616
Kotlin
TelegramBot
API https://github.com/Insa nusMokrassar/Telegra mBotAPI
112 01.02.2022 1727
Kotlin
Kotlin
Telegram Bot https://github.com/kotli n-telegram-bot/kotlin- telegram-bot
473 26.10.2021 236
Kotlin kt-telegram- bot https://github.com/elbe kD/kt-telegram-bot
67 29.12.2021 143
Kotlin
Telegraff https://github.com/rusla nys/telegraff
139 01.09.2020 97
Java
TelegramBots https://github.com/rube nlagus/TelegramBots
2800 01.02.2022 972
Java
Java API https://github.com/peng rad/java-telegram-bot- api
1100 05.02.2022 533
Go go-telegram- bot-api https://github.com/go- telegram-bot- api/telegram-bot-api
3400 03.01.2022 586
Go telebot https://github.com/tucn ak/telebot
2300 05.02.2022 706
C#
Telegram https://github.com/Tele gramBots/Telegram.Bot
2000 17.11.2021 328
Elixir
Nadia https://github.com/zhyu
/nadia
351 12.11.2021 274
C++ tgbot-cpp https://github.com/reo7
sp/tgbot-cpp
602 29.12.2021 378
Dart
TeleDart https://github.com/Dino
Leung/TeleDart
194 10.01.2022 516

24
Продолжение таблицы 1
Язык
Название
Ссылка на Git
Оценка на Git
Дата последнего обновления
Количество обновлений
Lua telegram-bot- lua https://github.com/wrxc k/telegram-bot-lua
114 11.06.2021 86
Ocaml
TelegraML https://github.com/nv- vn/TelegraML
82 18.06.2021 100
Haskell haskell- telegram-api https://github.com/klap pvisor/haskell- telegram-api
191 01.09.2019 301
Scala canoe https://github.com/augu stjune/canoe
156 14.10.2021 391
Scala bot4s https://github.com/bot4
s/telegram
343 01.01.2022 554
Perl
Telegram Bot https://github.com/Gild edHonour/TelegramBot
22 05.10.2018 86
Проанализировав данные в таблице можно отметить, что Python является наиболее востребованным языком программирования для реализации взаимодействия с Telegram. Библиотеки на языке Python регулярно обновляются и поддерживают все возможности платформы Telegram. В числе библиотек есть и библиотеки для взаимодействия по протоколу Telegram Bot API, и по протоколу MTProto API. Для реализации взаимодействия по протоколу MTProto выбрана библиотека Telethon, она имеет лучшую оценку, чем pyrogram, так же работающую по протоколу MTProto. Для взаимодействия по протоколу Bot API
выбрана библиотека AIOGram она имеет наивысшую оценку.
1.3.2. База данных
Хранение данных возможно реализовать с помощью файловой системы и базы данных. Первый вариант не требует дополнительного программного