Files
duty-teller/CHANGELOG.md
Nikolay Tatarinov 28b769b9d6
All checks were successful
CI / lint-and-test (push) Successful in 24s
refactor: update group duty pin functionality and documentation
- 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.
2026-02-24 11:49:07 +03:00

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 to 0 or false to 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 /app with 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.