Это приложение автоматически отслеживает встречи в календаре Microsoft Teams и отправляет уведомления о них через Telegram. Оно помогает не пропустить важные встречи и всегда иметь под рукой ссылки на них.
- Автоматическое отслеживание встреч в календаре Teams
- Отправка уведомлений в Telegram с информацией о встрече:
- Название встречи
- Время начала
- Ссылка на встречу в Teams
- Место проведения (если указано)
- Список участников с их статусом участия
- Уведомления отправляются:
- За 5 минут до начала встречи
- В момент начала встречи
- Кэширование токена доступа для оптимизации запросов
- Сохранение истории отправленных уведомлений
- Подробное логирование всех операций
- Python 3.x
- Учетная запись Microsoft 365
- Telegram бот (получить токен можно у @BotFather)
- Node.js и npm (для развертывания через PM2)
- Клонируйте репозиторий:
git clone [URL репозитория]
cd pyTeamsCalendarNotifications
- Установите зависимости:
pip install -r requirements.txt
- Создайте файл
.env
на основе.env.example
и заполните необходимые переменные окружения:
CLIENT_ID=your_client_id
CLIENT_SECRET=your_client_secret
TENANT_ID=your_tenant_id
USER_ID=your_user_id
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
TELEGRAM_CHAT_ID=your_telegram_chat_id
-
Зарегистрируйте приложение в Azure AD:
- Перейдите в Azure Portal
- Создайте новое приложение
- Получите CLIENT_ID и CLIENT_SECRET
- Настройте необходимые разрешения для Microsoft Graph API
-
Создайте Telegram бота:
- Найдите @BotFather в Telegram
- Создайте нового бота
- Получите токен бота
- Получите ID чата, куда будут отправляться уведомления
pyTeamsCalendarNotifications/
├── data/ # Директория для хранения данных
│ ├── sent_notifications.json # История отправленных уведомлений
│ └── token_cache.json # Кэш токена доступа
├── logs/ # Директория для логов
│ ├── info.log # Основные логи
│ ├── error.log # Логи ошибок
│ └── debug.log # Отладочные логи
├── main.py # Основной скрипт
├── requirements.txt # Зависимости проекта
├── ecosystem.config.js # Конфигурация PM2
└── .env # Конфигурация окружения
Приложение ведет подробные логи в трех файлах:
logs/info.log
- основная информацияlogs/error.log
- ошибкиlogs/debug.log
- отладочная информация
- Установите Node.js и npm:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
- Установите PM2 глобально:
sudo npm install -g pm2
- Настройте виртуальное окружение Python:
# Установите python3-venv если еще не установлен
sudo apt-get install python3-venv
# Создайте виртуальное окружение
python3 -m venv venv
# Активируйте виртуальное окружение
source venv/bin/activate
# Установите зависимости
pip install -r requirements.txt
# Убедитесь, что все зависимости установлены корректно
pip list
- Запустите приложение через PM2:
# Убедитесь, что вы находитесь в директории проекта
cd /path/to/pyTeamsCalendarNotifications
# Запустите приложение
pm2 start ecosystem.config.js
# Проверьте логи на наличие ошибок
pm2 logs pyTeamsCalendarNotifications
- Настройте автозапуск PM2 при перезагрузке системы:
pm2 startup
pm2 save
- Полезные команды PM2:
pm2 status # Проверка статуса приложения
pm2 logs pyTeamsCalendarNotifications # Просмотр логов
pm2 restart pyTeamsCalendarNotifications # Перезапуск приложения
pm2 stop pyTeamsCalendarNotifications # Остановка приложения
pm2 delete pyTeamsCalendarNotifications # Удаление приложения из PM2
- Все чувствительные данные хранятся в переменных окружения
- Используется безопасная аутентификация через Azure AD
- Логи не содержат конфиденциальной информации
- Токены доступа кэшируются и автоматически обновляются
- История уведомлений хранится в отдельной директории
MIT