- •Проектная работа
- •Глава 1. Технологии разработки Telegram бота. 4
- •Глава 2. Разработка Telegram-бота 21
- •Перечень терминов и сокращений
- •Введение
- •Глава 1. Технологии разработки Telegram бота.
- •Обзор литературы
- •1.2 История мессенджера Telegram
- •1.3 Сравнительный анализ языков программирования для Telegram-ботов
- •1.4 Характеристика языка программирования Python
- •1.5 Обзор фреймворков и библиотек для создания ботов
- •1.6 Обзор библиотек и методов обработки изображений
- •1.7 Описание алгоритмов и форматов данных
- •1.7.1. Цветовые модели и форматы данных
- •1.7.2 Алгоритм палитризации
- •1.7.3 Алгоритм классификации изображений
- •1.7.4 Алгоритм сжатия jpeg
- •1.7.5 Алгоритм сжатия png
- •Глава 2. Разработка Telegram-бота
- •2.1 Планируемые возможности бота и подходы к их реализации
- •2.2 Разработка модуля обработки изображений
- •2.3 Разработка пользовательского интерфейса
- •2.4 Разработка функций для работы с изображениями и передачи данных
- •2.4.1 Импорты, настройки и словари
- •2.4.2 Пользовательские настройки
- •2.4.3 Функции обработки изображений
- •2.4.4 Функции работы с пользовательскими данными
- •2.4.6 Обработчики команд и сообщений
- •2.4.7 Основной цикл
- •2.5 Описание разработки Telegram-бота
- •2.6 Инструкция пользователя
- •Список литературы
- •Приложение
2.4 Разработка функций для работы с изображениями и передачи данных
Данный раздел содержит подробное описание ключевых элементов проекта Telegram-бота для сжатия и обработки изображений. Функциональное разделение обеспечивает чёткое разделение ответственности между компонентами и упрощает поддержку и расширение системы.
2.4.1 Импорты, настройки и словари
Этот модуль отвечает за инициализацию среды выполнения. Загрузку внешних библиотек, чтение конфигурации из переменных окружения, определение рабочих каталогов и установку значений по умолчанию для всех параметров системы.
В основном модуле используются следующие библиотеки:
· aiogram — для создания и обработки Telegram-бота (команды, обработчики сообщений, загрузка файлов);
· PIL (Pillow) — для работы с изображениями (чтение, изменение размера, конвертация форматов, палитризация);
· img2pdf — для сборки PDF из набора изображений;
· asyncio — для асинхронной обработки запросов;
· json — для работы с пользовательскими настройками;
· dotenv — для загрузки переменных окружения;
· uuid, io, re, os, pathlib — вспомогательные модули.
Конфигурация (.env и настройки). Файл .env содержит две основные переменные:
· BOT_TOKEN — токен авторизации Telegram-бота, полученный через BotFather.
· WORKDIR — путь к рабочему каталогу для хранения пользовательских данных и настроек.
2.4.2 Пользовательские настройки
Настройки каждого пользователя сохраняются в отдельном JSON-файле, что позволяет обеспечивать персонализированную обработку изображений без необходимости использования полноценной базы данных. Пример структуры файла настроек. Пример структуры:
{
"quality": 85,
"target_kb": 300,
"max_w": 1920,
"max_h": 1080,
"auto": true,
"palette_colors": 128,
"strip_exif": false
}
Рис. 16 – Структура пользовательских настроек
Каждый параметр отвечает за:
· quality — качество JPEG (1–95);
· target_kb — целевой размер файла в КБ;
· max_w/max_h — ограничение ширины/высоты;
· auto — автоопределение формата (фото → JPEG, графика → PNG);
· palette_colors — количество цветов в палитровом PNG;
· strip_exif — удаление EXIF-метаданных для защиты конфиденциальности..
2.4.3 Функции обработки изображений
Данный модуль содержит ядро системы — функции, непосредственно отвечающие за чтение, анализ, сжатие и преобразование графических файлов. Все операции выполняются в оперативной памяти без сохранения промежуточных файлов на диск, что повышает производительность и безопасность. Основные функции включают в себя:
· compress_image(raw_bytes, ...) — главная функция сжатия, принимает байты изображения и параметры сжатия, возвращает сжатые байты и имя файла;
· classify_image(img) — определяет тип изображения («photo» или «graphics») на основе эвристического анализа;
· bytes_to_pdf(images) — конвертирует список изображений в единый PDF-файл.
· on_image(message) — основной обработчик загружаемых изображений. Загружает файл, применяет настройки пользователя, выполняет сжатие и возвращает результат как документ.
Вспомогательные функции:
_resize_if_needed() — изменяет размер изображения с сохранением пропорций;
_apply_strip_exif() — удаляет EXIF и ICC-данные из изображения;
_save_jpeg_bytes() — сохраняет изображение в формате JPEG с заданным качеством;
_save_png_palettized_bytes() — сохраняет изображение в палитровом PNG.
