Bot & Automation

Activity Reminder Bot

/root/hermes-projects/Activity Reminder Bot

apps/activity_reminder_bot/models/reminder.py text
from datetime import date, datetime, time
from enum import StrEnum

from pydantic import BaseModel, Field


class ReminderRepeat(StrEnum):
    none = "Tidak Ada"
    daily = "Harian"
    weekly = "Mingguan"
    monthly = "Bulanan"


class ReminderStatus(StrEnum):
    active = "Aktif"
    snoozed = "Ditunda"
    notified = "Terkirim"
    done = "Selesai"
    deleted = "Dihapus"


class ReminderDraft(BaseModel):
    user_id: int
    user_name: str
    activity_name: str = Field(min_length=1)
    description: str = ""
    reminder_date: date
    reminder_time: time
    repeat: ReminderRepeat = ReminderRepeat.none

    @property
    def due_at(self) -> datetime:
        return datetime.combine(self.reminder_date, self.reminder_time)


class Reminder(ReminderDraft):
    public_id: str
    status: ReminderStatus = ReminderStatus.active
    created_at: datetime
    updated_at: datetime
    notified_at: datetime | None = None
    alarm_message_id: int | None = None
    alarm_count: int = 0
    row_number: int | None = None