README.md

This commit is contained in:
Egor Deev 2025-06-30 19:53:09 +03:00 committed by GitHub
parent 2b0ec04f31
commit 0fcae044c7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

137
README.md
View file

@ -1,2 +1,135 @@
# Y.Calendarkin
Я.Календаркин / Y.Calendarkin - (https://t.me/calendarkin_ybot) - этот телеграм бот не коммерческий проект, для упрощенного получения уведомлений о событиях в Яндекс.Календаре. Не многим этот бот будет полезен, но людям, чья работа подразумевает его использование, он станет лишь удобным инструментом.
# 🗓️ Y.Calendarkin
Telegram-бот для упрощенного получения уведомлений о событиях из Яндекс.Календаря.
[![Python](https://img.shields.io/badge/Python-3.8+-blue.svg)](https://python.org)
[![Aiogram](https://img.shields.io/badge/Aiogram-3.x-green.svg)](https://docs.aiogram.dev/)
[![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
## 📖 Описание
Y.Calendarkin — некоммерческий проект, предназначенный для автоматизации уведомлений о календарных событиях из Яндекс.Календаря через Telegram. Бот позволяет настроить гибкую систему напоминаний и получать актуальную информацию о предстоящих событиях.
## ✨ Основные возможности
- 📅 **Импорт календаря** — поддержка ICal ссылок из Яндекс.Календаря
- ⏰ **Гибкие уведомления** — настройка времени напоминаний (до 60 минут)
- 🌅 **Ежедневные отчеты** — утренние сводки событий на день
- 🎯 **Моментальные уведомления** — оповещения в момент начала события
- 🌍 **Поддержка часовых поясов** — автоматическое определение из календаря
- 📋 **Просмотр событий** — список мероприятий на текущий день
## 🛠️ Технологический стек
- **Backend**: Python 3.8+
- **Bot Framework**: Aiogram 3.x
- **Database**: SQLite
- **Calendar Processing**: icalendar, dateutil
- **HTTP Client**: wget
- **Timezone Support**: pytz
## 🚀 Установка и запуск
### Предварительные требования
```bash
pip install -r requirements.txt
```
### Настройка
1. Создайте нового бота через [@BotFather](https://t.me/BotFather)
2. Получите токен и добавьте его в `config.py`:
```python
TOKEN = "your_bot_token_here"
```
3. Создайте структуру каталогов:
```bash
mkdir -p data/icals db
```
### Запуск
```bash
cd code
python bot.py
```
## 📝 Использование
### Начало работы
1. Запустите бота командой `/start`
2. Отправьте ICal ссылку вашего Яндекс.Календаря
3. Настройте уведомления по своему усмотрению
### Основные команды
| Команда | Описание |
|---------|----------|
| `/help` | Справочная информация |
| `/list` | События на сегодня |
| `/notif` | Включить/выключить уведомления |
| `/daily` | Ежедневные утренние сводки |
| `/moment` | Уведомления в момент события |
| `/get_alarm` | Информация о текущих настройках |
| `/edit_alarm` | Изменение времени уведомлений |
| `/stop_alarm` | Отключение второго уведомления |
### Получение ICal ссылки
1. Откройте Яндекс.Календарь
2. Перейдите в настройки календаря
3. Найдите раздел "Экспорт"
4. Скопируйте ссылку в формате ICal
5. Отправьте ссылку боту
## 🏗️ Архитектура проекта
```
y.calendarkin/
├── code/
│ ├── bot.py # Основная логика бота
│ ├── config.py # Конфигурация
│ ├── script.py # Обработка календарных файлов
│ └── sql.py # Работа с базой данных
├── data/
│ ├── icals/ # Загруженные календари
│ └── photo_edit_alarm.jpg
├── db/ # База данных SQLite
└── requirements.txt
```
## 📊 База данных
Проект использует две основные таблицы:
- **user** — информация о пользователях и их календарях
- **alarm** — настройки уведомлений для каждого пользователя
## 🔧 Настройка уведомлений
- **Первое уведомление**: за 15 минут до события (по умолчанию)
- **Второе уведомление**: за 5 минут до события (по умолчанию)
- **Диапазон настройки**: от 1 до 59 минут
- **Ежедневные сводки**: в 8:00 по часовому поясу пользователя
## 📄 Лицензия
Этот проект является некоммерческим и распространяется под лицензией MIT.
## 👨‍💻 Автор
**Деев Егор Викторович** - Backend Developer
- GitHub: [@EDeev](https://github.com/EDeev)
- Email: egor@deev.space
- Telegram: [@Egor_Deev](https://t.me/Egor_Deev)
---
<div align="center">
<p><sub>Создано с ❤️ от вашего дорогого - deev.space ©</sub></p>
</div>