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}",
),
],
]
)