Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

курсач ООП (телеграм-бот)

.docx
Скачиваний:
0
Добавлен:
08.07.2025
Размер:
2.51 Mб
Скачать

МИНОБРНАУКИ РОССИИ

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

КАФЕДРА САПР

КУРСОВАЯ РАБОТА

по дисциплине «Объектно-ориентированное программирование»

Тема: Создание телеграм-бота для

тайм-трекинга повседневных и учебных задач

Студентка гр. 3352

Студентка гр. 3352

Преподаватель



Санкт-Петербург

2024

ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ

Студенты Гареева К.Р., Жигунова О.М

Группа 3352

Тема работы: Создание телеграм-бота для тайм-трекинга повседневных и учебных задач

Исходные данные:

Python 3.11, PyCharm Community Edition 2024.1.6, SQlite studio 3.4.10, QT Designer

Содержание пояснительной записки:

«Введение», «Структура программы», «Диаграмма вариантов использования для пользователя», «Диаграмма вариантов использования для администратора», «Диаграмма классов объектной модели предметной области», «Спецификация классов», «Код классов», «Описание использования», «Описание программы со стороны пользователя», «Описание программы со стороны администратора», «Работа с базой данных», «Заключение»

Предполагаемый объем пояснительной записки:

Не менее 30 страниц.

Дата выдачи задания: 04.12.2024

Дата сдачи реферата: 15.12.2024

Дата защиты реферата: 24.12.2024

Студентка гр. 3352

Г.К.Р.

Студентка гр. 3352

Ж.О.М.

Преподаватель

АННОТАЦИЯ

Для данной курсовой работы был разработан телеграм-бот, с помощью которого можно засекать таймер, помогающий следить за временем, потраченным на учебу, работу и иные дела. Таймер можно останавливать и проверять статистику за день, неделю или месяц. Бот имеет возможность предложить пользователю провести зарядку или продолжить работу.

SUMMARY

For this coursework, a telegram bot was developed, with which you can set a timer, helping to monitor the time spent on studying, work and other things. The timer can be stopped and statistics can be checked for a day, week or month. The bot has the ability to offer the user to do exercises or continue working.

Оглавление

ВВЕДЕНИЕ 5

1. СТРУКТУРА ПРОГРАММЫ 5

1.1. UML-диаграмма классов 5

1.2. Спецификация классов 6

Основной класс 6

Атрибуты 6

Методы 7

2. ОПИСАНИЕ ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ ПРОГРАММЫ 9

ЗАКЛЮЧЕНИЕ 16

ВВЕДЕНИЕ

В современном мире эффективное управление временем является ключом к успеху в личной и профессиональной сферах. Тайм-прекинг — техника, основанная на регулярных перерывах в работе, помогает улучшить концентрацию и снизить уровень стресса. С развитием технологий, Telegram-боты становятся удобным инструментом для автоматизации управления временем

Цель данной курсовой работы — разработка Telegram-бота для тайм-прекинга, который будет помогать пользователям организовывать свое время, напоминать о перерывах и предоставлять рекомендации по эффективному использованию времени. Ожидается создание интуитивно понятного интерфейса, который адаптируется к различным стилям работы пользователей и способствует повышению их продуктивности.

  1. СТРУКТУРА ПРОГРАММЫ

Для пользователя ботом доступен следующий функционал – ввод названия для дела, запись времени, затраченного на дело, просмотр статистики за день, неделю, месяц.

    1. UML-диаграмма классов

Рисунок 1 - Диаграмма классов.

    1. Спецификация классов

Основной класс

TimeTrackerBot: класс, который управляет логикой бота для отслеживания времени. Он содержит методы для обработки команд, управления таймерами и статистикой пользователей.

Атрибуты

  1. user_timers: dict

Словарь, который хранит активные таймеры пользователей. Ключами являются идентификаторы пользователей, а значениями — словари с информацией о задаче, времени начала, времени паузы и состоянии паузы.

  1. user_statistics: dict

Словарь, который хранит статистику выполненных задач для каждого пользователя. Ключами являются идентификаторы пользователей, а значениями — словари, где ключами являются названия задач, а значениями — списки записей о времени выполнения.

  1. logger: Logger

Объект для логирования событий и действий в приложении. Используется для отслеживания ошибок и других значимых событий, что упрощает диагностику и отладку.

  1. application: Application

Объект приложения Telegram, который управляет взаимодействием с Telegram API. Он обрабатывает входящие сообщения и команды, а также отправляет ответы пользователям.

Методы

  1. __init__()

Конструктор класса, инициализирует атрибуты user_timers, user_statistics, настраивает логирование и создает объект приложения Telegram, вызывая метод setup_handlers() для настройки обработчиков команд.

  1. setup_handlers()

Настраивает обработчики команд и сообщений для бота. Добавляет обработчики для команд /start, /end, /statistics, а также для текстовых сообщений и кнопок обратной связи.

  1. start(update: Update, context: ContextTypes)

Обрабатывает команду /start, отправляет приветственное сообщение пользователю с инструкциями по использованию бота и предлагает ввести задачу для отслеживания времени.

  1. handle_task(update: Update, context: ContextTypes)

Обрабатывает текстовые сообщения от пользователей, запускает таймер для указанной задачи, если у пользователя нет активного таймера. Также инициализирует статистику, если она отсутствует, и запускает задачу для напоминания об отдыхе.

  1. remind_to_rest(user_id, context)

Асинхронная функция, которая периодически (каждые 10 минут) отправляет пользователю напоминание о необходимости сделать перерыв, если таймер активен и не приостановлен.

  1. handle_rest_response(update: Update, context: ContextTypes)

Обрабатывает ответ пользователя на напоминание об отдыхе. Если пользователь согласен, таймер приостанавливается, и отправляются ссылки на зарядки. Если нет, отправляется сообщение о продолжении работы.

  1. handle_continue(update: Update, context: ContextTypes)

Обрабатывает нажатие кнопки продолжения таймера после перерыва. Возобновляет таймер, обновляя время начала, и отправляет сообщение пользователю.

  1. end(update: Update, context: ContextTypes)

Обрабатывает команду /end, останавливает таймер, вычисляет затраченное время, записывает статистику и отправляет пользователю сообщение с результатами. Удаляет таймер из user_timers.

  1. calculate_elapsed_time(user_id)

Вычисляет общее время, затраченное на задачу, учитывая, была ли задача приостановлена. Возвращает общее время в секундах.

  1. record_statistics(user_id, task, elapsed_time)

Записывает статистику выполненной задачи для пользователя, добавляя запись о времени выполнения задачи в user_statistics.

  1. format_time(elapsed_time)

Форматирует время в более читабельный вид (часы, минуты, секунды) и возвращает строку с соответствующим форматом.

  1. statistics(update: Update, context: ContextTypes)

Обрабатывает команду /statistics, запрашивает у пользователя период для просмотра статистики и отправляет сообщение с кнопками для выбора периода (день, неделя, месяц).

  1. handle_statistics_period(update: Update, context: ContextTypes)

Обрабатывает выбор периода для статистики, вычисляет общее время, затраченное на задачи за выбранный период, и отправляет пользователю статистику.

  1. get_time_limit(period)

Возвращает временную метку начала выбранного периода (день, неделя, месяц), чтобы использовать ее для фильтрации статистики.

  1. get_task_dates(records, time_limit)

Получает даты выполнения задач за определенный период и возвращает их в виде строки.

  1. ask_next_action(message)

Запрашивает у пользователя, хочет ли он запустить новый таймер или просмотреть статистику. Отправляет сообщение с кнопками для выбора действия.

  1. handle_next_action(update: Update, context: ContextTypes

Обрабатывает выбор следующего действия пользователем (запуск нового таймера, просмотр статистики, завершение работы или продолжение работы).

  1. run()

Запускает бота, активируя цикл обработки сообщений от Telegram.

  1. ОПИСАНИЕ ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ ПРОГРАММЫ

Для начала работы с ботом прописывается команда “/start”. После чего бот выводит приветственное сообщение, а также меню, чтобы пользователь мог сразу выбрать интересующий пункт.

Рисунок 2 - Привественное сообщение и меню.

При выборе пользователем “/statistics” бот выводит сообщение об отсутствии статистики, так как таймер еще не был использован.

Рисунок 3 - Сообщение об отсутствии статистики

При попытке закончить таймер, бот выведет похожее сообщение о выключенном таймере.

Рисунок 4 - Сообщение об отсутствии активного таймера

При начале пользования таймером, вводим название дела.

Рисунок 5 - Таймер запущен

Внутри программы можно установить время (например, 30 минут), по истечении которого бот предложит пользователю отдохнуть.

Рисунок 6 - Сообщение об отдыхе.

При выборе «Нет», пользователь получает сообщение о продолжении работы.

Рисунок 7 - Сообщение о продолжении работы.

При выборе «Да», пользователь получает две ссылки: на тренажёр для глаз и для спины.

а)

б)

в)

Рисунок 8 а) - Выбор ссылки; б) - Тренажёр для глаз; в) - Тренажёр для спины

После предложенных ссылок бот выводит сообщение о том, что пользователь может продолжить таймер.

а)

б)

Рисунок 9 а) - кнопка «Продолжить», б) - Продолжение таймера

При остановке таймера, бот выдает информацию о затраченном времени и предлагает вывести статистику или начать новую задачу.

Рисунок 10 - Остановка таймера

Выбрав новый таймер, пользователь должен так же, как в первый раз, ввести название для задачи.

Рисунок 11 - Запуск нового таймера.

Остановим таймер для второй задачи.

Рисунок 12 - Остановка второго таймера.

Теперь выберем /statistics для просмотра статистики за день, неделю или месяц.

а)

б)

Рисунок 13 а) - Выбор периода статистики; б) - Статистика за день.

Проверим запоминание данных. 23 декабря было запущено несколько «тестовых» дел.

Рисунок 14 - а) - данные за 23 декабря

На следующий день бот был перезапущен. Проверим статистику за день для задачи «Доделываю отчет».

Рисунок 15 - Проверка после перезапуска программы. Статистика за день

Теперь проверим статистику за неделю.

Рисунок 16 - Проверка после перезапуска программы. Статистика за неделю.

Как мы видим, бот запоминает данные и показывает их даже после перезапуска программы.

ЗАКЛЮЧЕНИЕ

В ходе курсовой работы создан телеграм-бот, который подсчитывает временные промежутки для дел, запущенных пользователем и следит за промежутками отдыха человека, предлагая прерваться и продолжая работу после перерыва. Программа корректно отрабатывает неверно введённые данные и сохраняет прогресс пользователя даже после остановки приложения.