All checks were successful
CI / lint-and-test (push) Successful in 23s
- Introduced a new configuration option `DUTY_PIN_NOTIFY` to control whether the bot re-pins the duty message when updated, providing notifications to group members. - Updated the architecture documentation to reflect the new functionality of re-pinning duty messages. - Enhanced the `.env.example` file to include the new configuration option with a description. - Added tests to verify the behavior of the new refresh pin command and its integration with the existing group duty pin functionality. - Updated internationalization messages to include help text for the new `/refresh_pin` command.
1.7 KiB
1.7 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.
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.