Это телеграм-бот, который помогает пользователям осознать, как они проводят своё время, отправляя еженедельные уведомления о количестве прожитых недель. В качестве конечного числа берётся 4000 недель :) Берём как факт, что это средняя продолжительность жизни: ~70 лет.
Бот написан на Python 3.9 с использованием фреймворка aiogram 2.x, разворачивается с помощью Docker Compose.
Для развёртывания приложения выполните следующие шаги:
-
Клонирование репозитория:
git clone https://github.com/RockerzXY/weekscounter-bot/ cd weekscounter-bot -
Настройка
.env:Измените значения в
.envфайле в корне проекта на своиПеременная Описание Пример значения TOKENТокен вашего телеграм-бота (получите у @BotFather) 123456789:abcdefghijklmnopqrstuvwxyzTIMEZONEЧасовой пояс (список доступных значений: Timezone Database) Europe/Moscow -
Запуск бота:
Запустите приложение с помощью Docker Compose
docker compose up -d --build
-
Готово!
Зайдите в диалог с вашим ботом в телеграме и пропишите команду
/start. Также доступна команда/reinitдля сброса данных и начала заново
/start— начать взаимодействие с ботом/reinit— сбросить данные и начать заново
.
├── bot
│ ├── core.py # Основные настройки бота (инициализация, логирование)
│ ├── db.py # Работа с базой данных
│ ├── Dockerfile # Dockerfile для сборки образа
│ ├── handlers
│ │ ├── client.py # Хэндлеры для команд пользователя
│ │ └── __init__.py
│ ├── main.py # Точка входа
│ ├── requirements.txt # Зависимости Python
│ └── scheduler
│ ├── __init__.py
│ ├── misc.py # Вспомогательные функции
│ └── notifier.py # Логика уведомлений
├── db
│ └── database.db # Файл базы данных SQLite
├── docker-compose.yml # Docker Compose для развёртывания
└── logs
└── bot.log # Логи приложения
Эта таблица в базе данных SQLite хранит информацию о пользователях, их дате рождения, времени уведомлений и других настройках:
| Поле | Тип данных | Описание |
|---|---|---|
id |
INTEGER | Уникальный идентификатор записи (автоинкремент) |
user_id |
BIGINT | ID пользователя в Telegram (уникальный) |
username |
VARCHAR(255) | Имя пользователя в Telegram |
full_name |
VARCHAR(255) | Полное имя пользователя |
custom_name |
VARCHAR(255) | Кастомное имя для уведомлений |
birthdate |
DATE | Дата рождения пользователя |
handshake |
TIMESTAMP | Время первого взаимодействия с ботом |
notify_day |
SMALLINT | День недели для уведомлений (0-6) |
notify_time |
TIME | Время уведомлений (HH:MM) |
last_notification |
DATE | Дата последнего уведомления |
Если у вас есть предложения по улучшению бота или репозитория, не стесняйтесь открывать issue или pull request
- Добавить разнообразие в тексты уведомлений
- Реализовать визуализацию недель (график с квадратами)
- Настройка максимального числа недель через интерфейс
- Поддержка нескольких часовых поясов для пользователей
Этот проект распространяется под лицензией GPL v3. Вы можете свободно использовать и модифицировать код при условии соблюдения требований этой лицензии. Подробнее см. в файле LICENSE