All checks were successful
CI / lint-and-test (push) Successful in 24s
- Changed the behavior of the group duty pin feature to send a new message, unpin the old one, and pin the new one instead of editing the existing message. This ensures the pinned message is always fresh. - Updated the `DUTY_PIN_NOTIFY` configuration description in the documentation to reflect the new message handling approach. - Revised the architecture documentation to clarify the updated group duty pin process. - Enhanced tests to verify the new behavior of the group duty pin functionality, ensuring proper message handling and scheduling.
2.1 KiB
2.1 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Group duty pin: when the pinned duty message is updated on schedule, the bot re-pins it so group members get a Telegram notification. Configurable via
DUTY_PIN_NOTIFY(default: enabled); set to0orfalseto only edit the message without re-pinning.
Changed
- Group duty pin refresh: schedule updates now send a new message, unpin the previous one and pin the new one (instead of editing the existing message and re-pinning). Ensures the pinned message is always a fresh post; on pin/unpin errors the stored message_id is not updated so the next run retries.
0.1.0 - 2025-02-20
Added
- Telegram bot with python-telegram-bot v22 (polling, Application API).
- Commands:
/start,/help,/set_phone,/import_duty_schedule,/pin_duty. - Miniapp (calendar and duty list) served at
/appwith Russian and English (i18n). - FastAPI HTTP API:
GET /api/duties,GET /api/calendar-events,GET /api/calendar/ical/{token}.ics. - Telegram initData validation for Miniapp; optional phone-based access (
ALLOWED_PHONES/ADMIN_PHONES). - SQLite (default) / configurable DB; SQLAlchemy models, repository, Alembic migrations.
- Duty-schedule import: two-step flow (handover time + JSON file); parser for meta.start_date and schedule[].duty.
- Group duty pin: pin current duty message in group with time/timezone from
DUTY_DISPLAY_TZ. - External calendar ICS URL support; personal ICS calendar by secret token.
- Configuration via environment variables; full reference in docs/configuration.md.
- Docker support (dev and prod compose); entrypoint runs migrations then app.
Security
- Input validation and initData hash verification for Miniapp access.
- Optional CORS and init_data_max_age; use env for secrets.