Skip to content

Телеграм-бот для напоминания о скоротечности времени и отслеживания недель жизни для любого пользователя

License

Notifications You must be signed in to change notification settings

RockerzXY/weekscounter-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Телеграм бот "4000 недель"

Описание

Это телеграм-бот, который помогает пользователям осознать, как они проводят своё время, отправляя еженедельные уведомления о количестве прожитых недель. В качестве конечного числа берётся 4000 недель :) Берём как факт, что это средняя продолжительность жизни: ~70 лет.

Бот написан на Python 3.9 с использованием фреймворка aiogram 2.x, разворачивается с помощью Docker Compose.

Установка и запуск

Для развёртывания приложения выполните следующие шаги:

  1. Клонирование репозитория:

    git clone https://github.com/RockerzXY/weekscounter-bot/
    cd weekscounter-bot
  2. Настройка .env:

    Измените значения в .env файле в корне проекта на свои

    Переменная Описание Пример значения
    TOKEN Токен вашего телеграм-бота (получите у @BotFather) 123456789:abcdefghijklmnopqrstuvwxyz
    TIMEZONE Часовой пояс (список доступных значений: Timezone Database) Europe/Moscow
  3. Запуск бота:

    Запустите приложение с помощью Docker Compose

    docker compose up -d --build
  4. Готово!

    Зайдите в диалог с вашим ботом в телеграме и пропишите команду /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

About

Телеграм-бот для напоминания о скоротечности времени и отслеживания недель жизни для любого пользователя

Topics

Resources

License

Stars

Watchers

Forks