Bot & Automation

Activity Reminder Bot

/root/hermes-projects/Activity Reminder Bot

apps/activity_reminder_bot/bot/keyboards.py text
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup, KeyboardButton, ReplyKeyboardMarkup

from activity_reminder_bot.models import ReminderRepeat


def main_menu_keyboard() -> ReplyKeyboardMarkup:
    return ReplyKeyboardMarkup(
        keyboard=[
            [KeyboardButton(text="➕ Tambah Reminder"), KeyboardButton(text="📅 Jadwal Hari Ini")],
            [KeyboardButton(text="🗓️ Jadwal Minggu Ini"), KeyboardButton(text="🔍 Cari Reminder")],
            [KeyboardButton(text="📜 History"), KeyboardButton(text="🧹 Bersihkan Data")],
            [KeyboardButton(text="⚙️ Settings")],
        ],
        resize_keyboard=True,
        is_persistent=True,
        input_field_placeholder="Tulis reminder, contoh: Besok jam 08:00 meeting klien",
    )


def cleanup_menu_keyboard() -> InlineKeyboardMarkup:
    return InlineKeyboardMarkup(
        inline_keyboard=[
            [
                InlineKeyboardButton(
                    text="🧹 Hapus Selesai/Dihapus",
                    callback_data="cleanup:confirm:history",
                )
            ],
            [
                InlineKeyboardButton(
                    text="🧽 Bersihkan Row Rusak",
                    callback_data="cleanup:confirm:invalid",
                )
            ],
            [InlineKeyboardButton(text="❌ Batal", callback_data="cleanup:cancel")],
        ]
    )


def cleanup_confirm_keyboard(action: str) -> InlineKeyboardMarkup:
    return InlineKeyboardMarkup(
        inline_keyboard=[
            [
                InlineKeyboardButton(text="✅ Ya, bersihkan", callback_data=f"cleanup:run:{action}"),
                InlineKeyboardButton(text="❌ Batal", callback_data="cleanup:cancel"),
            ]
        ]
    )


def preview_keyboard() -> InlineKeyboardMarkup:
    return InlineKeyboardMarkup(
        inline_keyboard=[
            [
                InlineKeyboardButton(text="✅ Simpan", callback_data="create:save"),
                InlineKeyboardButton(text="✏️ Edit", callback_data="create:edit"),
                InlineKeyboardButton(text="❌ Batal", callback_data="create:cancel"),
            ]
        ]
    )


def reminder_action_keyboard(public_id: str) -> InlineKeyboardMarkup:
    return InlineKeyboardMarkup(
        inline_keyboard=[
            [
                InlineKeyboardButton(text="✏️ Edit", callback_data=f"reminder:edit:{public_id}"),
                InlineKeyboardButton(text="🗑️ Hapus", callback_data=f"reminder:delete:{public_id}"),
            ],
            [
                InlineKeyboardButton(text="⏳ Tunda", callback_data=f"reminder:snooze_menu:{public_id}"),
            ],
        ]
    )


def alarm_action_keyboard(public_id: str) -> InlineKeyboardMarkup:
    return InlineKeyboardMarkup(
        inline_keyboard=[
            [InlineKeyboardButton(text="✅ Selesai", callback_data=f"alarm:done:{public_id}")],
            [
                InlineKeyboardButton(text="⏳ Tunda 10 Menit", callback_data=f"snooze:10:{public_id}"),
                InlineKeyboardButton(text="🔁 Jadwalkan Ulang", callback_data=f"reschedule:{public_id}"),
            ],
            [InlineKeyboardButton(text="🗑️ Hapus", callback_data=f"reminder:delete:{public_id}")],
        ]
    )


def snooze_keyboard(public_id: str) -> InlineKeyboardMarkup:
    return InlineKeyboardMarkup(
        inline_keyboard=[
            [
                InlineKeyboardButton(text="5 menit", callback_data=f"snooze:5:{public_id}"),
                InlineKeyboardButton(text="10 menit", callback_data=f"snooze:10:{public_id}"),
            ],
            [
                InlineKeyboardButton(text="30 menit", callback_data=f"snooze:30:{public_id}"),
                InlineKeyboardButton(text="1 jam", callback_data=f"snooze:60:{public_id}"),
            ],
            [InlineKeyboardButton(text="Besok", callback_data=f"snooze:1440:{public_id}")],
        ]
    )


def delete_confirm_keyboard(public_id: str) -> InlineKeyboardMarkup:
    return InlineKeyboardMarkup(
        inline_keyboard=[
            [
                InlineKeyboardButton(text="✅ Ya, hapus", callback_data=f"delete:yes:{public_id}"),
                InlineKeyboardButton(text="❌ Batal", callback_data=f"delete:no:{public_id}"),
            ]
        ]
    )


def edit_field_keyboard(public_id: str) -> InlineKeyboardMarkup:
    return InlineKeyboardMarkup(
        inline_keyboard=[
            [
                InlineKeyboardButton(text="Nama", callback_data=f"edit:activity_name:{public_id}"),
                InlineKeyboardButton(text="Tanggal/Jam", callback_data=f"edit:datetime:{public_id}"),
            ],
            [
                InlineKeyboardButton(text="Repeat", callback_data=f"edit:repeat:{public_id}"),
                InlineKeyboardButton(text="Catatan", callback_data=f"edit:description:{public_id}"),
            ],
        ]
    )


def repeat_keyboard(public_id: str) -> InlineKeyboardMarkup:
    return InlineKeyboardMarkup(
        inline_keyboard=[
            [
                InlineKeyboardButton(text="Sekali", callback_data=f"repeat:{ReminderRepeat.none.value}:{public_id}"),
                InlineKeyboardButton(text="Harian", callback_data=f"repeat:{ReminderRepeat.daily.value}:{public_id}"),
            ],
            [
                InlineKeyboardButton(
                    text="Mingguan",
                    callback_data=f"repeat:{ReminderRepeat.weekly.value}:{public_id}",
                ),
                InlineKeyboardButton(
                    text="Bulanan",
                    callback_data=f"repeat:{ReminderRepeat.monthly.value}:{public_id}",
                ),
            ],
        ]
    )