"""Group rules handler."""
from __future__ import annotations

from telegram import Update
from telegram.constants import ParseMode
from telegram.ext import CommandHandler, ContextTypes

from bot import db
from bot.config import DEFAULT_RULES
from bot.decorators import admin_only
from bot.persian_router import register_mixed


@admin_only
async def setrules_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    args = (update.message.text or "").split(maxsplit=1)
    if len(args) < 2:
        await update.message.reply_text(
            "بعد از دستور، متن قوانین رو بنویس", parse_mode=ParseMode.HTML
        )
        return
    await db.set_setting(update.effective_chat.id, "rules", args[1])
    await update.message.reply_text(
        f"قوانین جدید تنظیم شد:\n\n{args[1]}", parse_mode=ParseMode.HTML
    )


@admin_only
async def remrules_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    await db.del_setting(update.effective_chat.id, "rules")
    await update.message.reply_text("قوانین پاک شد")


async def rules_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    text = await db.get_setting(update.effective_chat.id, "rules", default=DEFAULT_RULES)
    await update.message.reply_text(
        f"<b>قوانین گروه:</b>\n\n{text}", parse_mode=ParseMode.HTML
    )


def register(app) -> None:
    register_mixed(
        app,
        {
            "setrules": setrules_cmd,
            "remrules": remrules_cmd,
            "rules": rules_cmd,
        },
        {
            "تنظیم قوانین": setrules_cmd,
            "قوانین جدید": setrules_cmd,
            "حذف قوانین": remrules_cmd,
            "پاک کردن قوانین": remrules_cmd,
            "قوانین": rules_cmd,
            "دریافت قوانین": rules_cmd,
            "قوانین گروه": rules_cmd,
        },
    )
