"""Smart fun — AI-powered entertainment with Persian proverbs, jokes, games."""
from __future__ import annotations

import asyncio
import logging
import random
import re

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

from bot.persian_router import register_mixed

logger = logging.getLogger(__name__)

# ───────── Persian Proverbs ─────────
PROVERBS = [
    ("صبر تلخه ولی شیرین داره", "میوه"),
    ("از تو حرکت از خدا برکت", "امید"),
    ("این نیز بگذرد", "فلسفی"),
    ("آشپز که دو تا شد، آش یا شور می‌شه یا بی‌نمک", "مدیریتی"),
    ("عجله کار شیطونه", "صبر"),
    ("تو نیکی می‌کن و در دجله انداز", "نیکی"),
    ("هر کی طاووس خواهد، جور هندوستان کشد", "تلاش"),
    ("سنگ بزرگ علامت نزدنه", "عملی"),
    ("قطره قطره جمع گردد، وانگهی دریا شود", "صبر"),
    ("ز کوزه همان برون تراود که در اوست", "اخلاق"),
    ("در خانه اگر کس است، یک حرف بس است", "ادب"),
    ("با یک گل بهار نمی‌شه", "اجتماعی"),
    ("از هر دست بدهی، از همون دست می‌گیری", "عدالت"),
    ("شتر دیدی، ندیدی", "حکمت"),
    ("دریغ از یک لقمه نان حلال", "روزگار"),
    ("آدم را از چشمش می‌شناسند، نه از کیفش", "شناخت"),
    ("نان را به نرخ روز خوردن", "اقتصاد"),
    ("دو صد گفته چون نیم کردار نیست", "عمل"),
    ("آب که از سر گذشت، چه یک نی چه صد نی", "ناامیدی"),
    ("تا تنور گرمه نارو بچسبون", "فرصت"),
    ("آستین نو، پلو نو", "تغییر"),
    ("به امید خدا باش، اما از نردبان بالا برو", "تلاش و توکل"),
    ("چراغی که به خانه رواست، به مسجد حرام است", "خودخواهی"),
    ("خواهی نشوی رسوا، همرنگ جماعت شو", "تطبیق"),
    ("دست بالای دست، بسیار است", "تواضع"),
    ("هر چه کنی به خود کنی، گر همه نیک و بد کنی", "نتیجه"),
    ("به در گفت، دیوار شنید", "احتیاط"),
    ("باد آورده را باد می‌برد", "ناپایداری"),
    ("عاقل را اشاره بس است", "درک"),
    ("سحرخیز باش تا کامروا شوی", "تلاش"),
]

PROVERB_CATEGORIES = [p[1] for p in PROVERBS]


# ───────── Persian Jokes ─────────
JOKES = [
    "یه روز یه نونوا میگه به نون‌فروش: من چقدر نون میدم تو چقدر میگیری؟ میگه: من میگیرم اونقدر که تو میدی!",
    "از یارو میپرسن چرا همش به ساعتت نگاه میکنی؟ میگه: باطریش داره تموم میشه، میخوام ببینم تموم شدنیه یا نه!",
    "معلم به شاگرد: چرا مشقت رو ننوشتی؟ شاگرد: نوشته بودم، گربه خوردش! معلم: مگه گربه کاغذ میخوره؟ شاگرد: فکر کنم گربه ما باهوشه!",
    "یارو میره دکتر میگه: دکتر! شوهرم فکر میکنه یه لیوانه! دکتر میگه: چرا نیاوردیش؟ میگه: میترسم بشکنه!",
    "زن و شوهر دعواشون میشه. زن میگه: کاش منو مامانت بزرگ کرده بود! شوهر میگه: چرا؟ زن میگه: زن که نمیخواست ازدواج کنه!",
    "از یارو میپرسن چند سالته؟ میگه: من ۴۰ سالمه ولی همش میگن ۳۰! میپرسن چرا؟ میگه: چون دروغ میگم!",
    "دوتا از بچه‌های تهرون میرن شمال. یه پیرمرد میبینه شون میگه: بچه ها کجایی؟ میگن: تهرون! پیرمرد میگه: منم تهران بزرگ شدم ولی اینقدر بی‌تربیت نشدم!",
]

# ───────── Persian Facts ─────────
FACTS = [
    ("ایران یکی از قدیمی‌ترین تمدن‌های جهانه با بیش از ۷۰۰۰ سال تاریخ", "تاریخ"),
    ("رباعیات خیام به بیش از ۵۰ زبان زنده دنیا ترجمه شده", "فرهنگ"),
    ("خلیج فارس از ۵۰۰ سال قبل از میلاد به این اسم معروف بوده", "جغرافی"),
    ("ایران بیش از ۳۰۰۰ کیلومتر مرز خشکی داره", "جغرافی"),
    ("بزرگترین غار نمکی جهان در جزیره قشم قرار داره", "جغرافی"),
    ("موسیقی ایرانی یکی از قدیمی‌ترین موسیقی‌های جهان هست", "فرهنگ"),
    ("برج میلاد بلندترین برج ایران با ۴۳۵ متر ارتفاع", "معماری"),
    ("پل معلق ورک بزرگترین پل معلق خاورمیانه تو مازندره", "معماری"),
    ("بیشتر فرش‌های دستبافت دنیا در ایران تولید میشه", "هنر"),
    ("ایران بزرگترین تولیدکننده پسته، زعفران و خاویار در دنیاست", "اقتصاد"),
    ("زبان فارسی یکی از شیرین‌ترین و تأثیرگذارترین زبان‌های جهانه", "فرهنگ"),
    ("میدان نقش جهان اصفهان یکی از بزرگترین میدان‌های تاریخی جهانه", "تاریخ"),
]

# ───────── Mood System ─────────
_MOODS = {
    "شوخ": {"emoji": "😄", "prefix": ""},
    "جدی": {"emoji": "🧐", "prefix": "خب بذار جدی باهات حرف بزنم. "},
    "فیلسوف": {"emoji": "🤔", "prefix": "از منظر فلسفی، "},
    "شاعر": {"emoji": "📜", "prefix": "به قول مولانا، "},
    "بامزه": {"emoji": "🤪", "prefix": "بیا یه کم بخندیم. "},
}

_CHAT_MOODS: dict[int, str] = {}


def _get_mood(chat_id: int) -> str:
    return _CHAT_MOODS.get(chat_id, "شوخ")


async def _ask_ai(prompt: str) -> str | None:
    """Try Gemini AI, return None if unavailable."""
    try:
        from google import genai
        from google.genai import types
        from bot.handlers.ai_assistant import _init_gemini, _client
        if not _init_gemini():
            return None
        resp = await _client.aio.models.generate_content(
            model="gemini-2.0-flash",
            contents=f"فقط و فقط به فارسی روان جواب بده. مختصر و مفید. {prompt}",
            config=types.GenerateContentConfig(temperature=0.7, max_output_tokens=512),
        )
        return resp.text.strip() if resp and resp.text else None
    except Exception:
        return None


# ──── Commands ────

async def mood_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    """حالت بابی [شوخ/جدی/فیلسوف/شاعر/بامزه] — change bot mood"""
    chat = update.effective_chat
    text = (update.message.text or "").strip().lower()
    parts = text.split(maxsplit=1)

    if len(parts) < 2:
        current = _get_mood(chat.id)
        moods_list = "\n".join(f"  • {k} — {v['emoji']}" for k, v in _MOODS.items())
        await update.message.reply_text(
            f"🎭 **حالت فعلی بابی:** {_MOODS[current]['emoji']} {current}\n\n"
            f"حالت‌های موجود:\n{moods_list}\n\n"
            f"💡 بگو: `حالت بابی شوخ` یا `بابی جدی باش`",
            parse_mode=ParseMode.MARKDOWN,
        )
        return

    mood = parts[1].strip()
    # Find matching mood
    matched = None
    for name in _MOODS:
        if mood in name or name in mood:
            matched = name
            break
    if not matched:
        await update.message.reply_text(f"حالت `{mood}` رو ندارم. گزینه‌ها: {', '.join(_MOODS.keys())}", parse_mode=ParseMode.MARKDOWN)
        return

    _CHAT_MOODS[chat.id] = matched
    await update.message.reply_text(
        f"{_MOODS[matched]['emoji']} باشه، از الان **{matched}** حرف میزنم!",
        parse_mode=ParseMode.MARKDOWN,
    )


async def proverb_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    """ضرب المثل / مثل [موضوع] — random Persian proverb"""
    text = (update.message.text or "").strip().lower()
    category = None
    for word in text.split():
        if word in PROVERB_CATEGORIES:
            category = word
            break

    if category:
        pool = [p for p in PROVERBS if p[1] == category]
    else:
        pool = PROVERBS

    if not pool:
        await update.message.reply_text("ضرب المثلی با این موضوع ندارم.")
        return

    proverb, cat = random.choice(pool)
    mood = _get_mood(chat.id) if (chat := update.effective_chat) else "شوخ"
    mood_data = _MOODS[mood]

    # Try AI explanation
    ai_exp = await _ask_ai(f"ضرب المثل «{proverb}» رو خیلی کوتاه و روان توضیح بده.")
    text = f"{mood_data['emoji']} **ضرب المثل فارسی**\n━━━━━━━━━━━━━━━\n📜 {proverb}"
    if ai_exp:
        text += f"\n\n💡 {ai_exp}"
    text += f"\n━━━━━━━━━━━━━━━\n🏷 {cat}"
    await update.message.reply_text(text, parse_mode=ParseMode.MARKDOWN)


async def joke_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    """شوخی / بامزه / لطیفه — random Persian joke"""
    joke = random.choice(JOKES)
    mood = _get_mood(update.effective_chat.id)
    mood_data = _MOODS[mood]
    await update.message.reply_text(f"{mood_data['emoji']} {mood_data['prefix']}{joke}")


async def fact_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    """حقیقت / واقعیت جالب — random fun fact with category"""
    fact, cat = random.choice(FACTS)
    await update.message.reply_text(
        f"📌 **آیا می‌دونستی؟**\n━━━━━━━━━━━━━━━\n{fact}\n\n🏷 {cat}",
        parse_mode=ParseMode.MARKDOWN,
    )


async def advice_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    """مشورت / راهنمایی / نظرت چیه — AI advice or random proverb"""
    text = (update.message.text or "").strip()
    parts = text.split(maxsplit=1)
    user_msg = parts[1].strip() if len(parts) > 1 else ""
    mood = _get_mood(update.effective_chat.id)
    mood_data = _MOODS[mood]

    if user_msg:
        # Try AI first
        ai_resp = await _ask_ai(f"کاربر میگه: «{user_msg}». بهش راهنمایی بده.")
        if ai_resp:
            await update.message.reply_text(f"{mood_data['emoji']} {mood_data['prefix']}{ai_resp}")
            return

    # Fallback to random proverb
    if user_msg:
        # Find relevant proverb
        relevant = [p for p in PROVERBS if any(w in p[0] for w in user_msg.split())]
        pool = relevant if relevant else PROVERBS
        proverb, cat = random.choice(pool)
        await update.message.reply_text(
            f"{mood_data['emoji']} در مورد «{user_msg[:30]}»:\n"
            f"━━━━━━━━━━━━━━━\n📜 {proverb}\n━━━━━━━━━━━━━━━",
            parse_mode=ParseMode.MARKDOWN,
        )
    else:
        proverb, cat = random.choice(PROVERBS)
        await update.message.reply_text(
            f"{mood_data['emoji']} یه ضرب المثل برات دارم:\n📜 {proverb}",
            parse_mode=ParseMode.MARKDOWN,
        )


async def dream_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    """تعبیر خواب [خوابت] — AI dream interpretation"""
    text = (update.message.text or "").strip()
    parts = text.split(maxsplit=1)
    if len(parts) < 2:
        await update.message.reply_text(
            "بگو: `تعبیر خواب [خوابتو بگو]`\nمثال: تعبیر خواب دیدم دارم پرواز میکنم",
            parse_mode=ParseMode.MARKDOWN,
        )
        return

    dream = parts[1].strip()
    # Try AI
    ai_resp = await _ask_ai(f"خواب زیر رو تعبیر کن: «{dream}»")
    if ai_resp:
        await update.message.reply_text(
            f"🔮 **تعبیر خواب**\n━━━━━━━━━━━━━━━\n{ai_resp}",
            parse_mode=ParseMode.MARKDOWN,
        )
        return

    # Fallback to random interpretation
    interps = [
        "تعبیرش اینه که به زودی خبر خوبی میشنوی",
        "این خواب نشان‌دهنده آرامش درونیه",
        "نگران نباش، این خواب خوبیه",
        "این یعنی باید بیشتر به خودت برسی",
        "فلاسفه معتقدند این خواب از ضمیر ناخودآگاهت میاد",
    ]
    await update.message.reply_text(
        f"🔮 **تعبیر خواب**\n━━━━━━━━━━━━━━━\n{random.choice(interps)}\n\n💡 برای تعبیر دقیق‌تر GEMINI_API_KEY رو تنظیم کن.",
        parse_mode=ParseMode.MARKDOWN,
    )


async def fortune_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    """پیشگویی / پیش بینی / فال روزانه — AI fortune"""
    text = (update.message.text or "").strip()
    parts = text.split(maxsplit=1)
    user_msg = parts[1].strip() if len(parts) > 1 else ""

    mood = _get_mood(update.effective_chat.id)
    mood_data = _MOODS[mood]
    user_name = update.effective_user.first_name if update.effective_user else ""

    if user_msg:
        ai_resp = await _ask_ai(f"کاربر «{user_name}» میپرسه: «{user_msg}». پیشگویی کن.")
        if ai_resp:
            await update.message.reply_text(
                f"🔮 **پیشگویی بابی برای {user_name}**\n━━━━━━━━━━━━━━━\n{ai_resp}",
                parse_mode=ParseMode.MARKDOWN,
            )
            return

    # Fallback
    fortunes = [
        "روزهای خوبی در انتظارته!",
        "یک تصمیم مهم باید بگیری، با قلبت مشورت کن",
        "امروز روز خوبی برای شروع کارهای جدیده",
        "مواظب حرفات باش، یه اتفاق خوب میفته",
        "به زودی یه خبر خوش میشنوی",
        "صبور باش، بهترین‌ها هنوز نیومدن",
        "امشب یه فکر ناگهانی به ذهنت میرسه، جدیش بگیر",
    ]
    await update.message.reply_text(
        f"🔮 {mood_data['emoji']} **پیشگویی بابی**\n━━━━━━━━━━━━━━━\n{random.choice(fortunes)}",
        parse_mode=ParseMode.MARKDOWN,
    )


# ──── Rock-Paper-Scissors ────

RPS_EMOJIS = {"سنگ": "🪨", "کاغذ": "📄", "قیچی": "✂️"}
RPS_CHOICES = list(RPS_EMOJIS.keys())
RPS_BEATS = {"سنگ": "قیچی", "کاغذ": "سنگ", "قیچی": "کاغذ"}


async def rps_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    """سنگ کاغذ قیچی [سنگ/کاغذ/قیچی] — play rock paper scissors"""
    text = (update.message.text or "").strip().lower()
    parts = text.split(maxsplit=1)
    user_choice = parts[1].strip() if len(parts) > 1 else ""

    # Map Persian inputs
    choice_map = {
        "سنگ": "سنگ", "کاغذ": "کاغذ", "قیچی": "قیچی",
        "rock": "سنگ", "paper": "کاغذ", "scissors": "قیچی",
        "r": "سنگ", "p": "کاغذ", "s": "قیچی",
        "1": "سنگ", "2": "کاغذ", "3": "قیچی",
        "سنک": "سنگ", "قچی": "قیچی", "کاغز": "کاغذ",
    }
    choice = choice_map.get(user_choice)

    if not choice:
        await update.message.reply_text(
            "🎮 **سنگ، کاغذ، قیچی**\n\n"
            "بگو: `سنگ کاغذ قیچی [سنگ/کاغذ/قیچی]`\n"
            "مثال: `سنگ کاغذ قیچی سنگ`",
            parse_mode=ParseMode.MARKDOWN,
        )
        return

    bot_choice = random.choice(RPS_CHOICES)
    user_emoji = RPS_EMOJIS[choice]
    bot_emoji = RPS_EMOJIS[bot_choice]

    if choice == bot_choice:
        result = "🤝 **مساوی شدیم!** دوباره بازی کن!"
    elif RPS_BEATS[choice] == bot_choice:
        result = "🎉 **بردی!** آفرین، این دور مال تو! 🏆"
    else:
        result = "😄 **بردم!** من برنده شدم! می‌خوای دوباره بازی کنیم؟"

    await update.message.reply_text(
        f"🎮 **سنگ، کاغذ، قیچی**\n"
        f"━━━━━━━━━━━━━━━\n"
        f"🧑 تو: {user_emoji} {choice}\n"
        f"🤖 من: {bot_emoji} {bot_choice}\n"
        f"━━━━━━━━━━━━━━━\n"
        f"{result}",
        parse_mode=ParseMode.MARKDOWN,
    )


# ──── Trivia / Quiz ────

TRIVIA = [
    {"q": "پایتخت ایران کجاست؟", "a": "تهران", "opts": ["تهران", "اصفهان", "شیراز", "مشهد"]},
    {"q": "کدام زبان برای هوش مصنوعی بیشتر استفاده میشه؟", "a": "پایتون", "opts": ["پایتون", "جاوا", "C++", "جاوااسکریپت"]},
    {"q": "بزرگترین اقیانوس جهان کدومه؟", "a": "آرام", "opts": ["آرام", "اطلس", "هند", "قطب"]},
    {"q": "کدام حیوان نماد ایران است؟", "a": "شیر", "opts": ["شیر", "پلنگ", "خرس", "عقاب"]},
    {"q": "کدام سیاره به 'سیاره سرخ' معروف است؟", "a": "مریخ", "opts": ["مریخ", "زهره", "مشتری", "زحل"]},
    {"q": "پدر شعر فارسی کیست؟", "a": "رودکی", "opts": ["رودکی", "فردوسی", "حافظ", "سعدی"]},
    {"q": "طولانی‌ترین رود جهان کدام است؟", "a": "نیل", "opts": ["نیل", "آمازون", "میسیسیپی", "یانگ‌تسه"]},
    {"q": "کدام عنصر بیشترین مقدار را در زمین دارد؟", "a": "آهن", "opts": ["آهن", "اکسیژن", "سیلیسیم", "کربن"]},
]

_TRIVIA_GAMES: dict[int, dict] = {}


async def quiz_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    """مسابقه / quiz / سوال جالب — start a trivia quiz"""
    chat = update.effective_chat
    text = (update.message.text or "").strip().lower()

    # Check if user is answering in an active quiz
    if chat.id in _TRIVIA_GAMES:
        game = _TRIVIA_GAMES[chat.id]
        # Check answer
        for opt in game["opts"]:
            if opt.lower() in text:
                if opt.lower() == game["a"].lower():
                    await update.message.reply_text(
                        f"✅ **آفرین! جواب درسته!** 🎉\n{game['a']}",
                        parse_mode=ParseMode.MARKDOWN,
                    )
                    _TRIVIA_GAMES.pop(chat.id, None)
                    return
                else:
                    remaining = game.get("attempts", 3) - 1
                    if remaining > 0:
                        game["attempts"] = remaining
                        await update.message.reply_text(
                            f"❌ غلط! {remaining} تا فرصت دیگه داری!",
                        )
                    else:
                        await update.message.reply_text(
                            f"😅 تموم شد! جواب درست: **{game['a']}**",
                            parse_mode=ParseMode.MARKDOWN,
                        )
                        _TRIVIA_GAMES.pop(chat.id, None)
                    return

    # Start new quiz
    question = random.choice(TRIVIA)
    opts_text = "\n".join(f"• {o}" for o in question["opts"])
    _TRIVIA_GAMES[chat.id] = {**question, "attempts": 3}

    await update.message.reply_text(
        f"📝 **مسابقه!**\n"
        f"━━━━━━━━━━━━━━━\n"
        f"❓ {question['q']}\n\n"
        f"{opts_text}\n\n"
        f"💡 جوابت رو بگو! (۳ شانس داری)",
        parse_mode=ParseMode.MARKDOWN,
    )


# ──── Interactive Games ────

_GAMES: dict[int, dict] = {}

async def guess_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    """حدس عدد / بازی / حدس بزن — start/play a number guessing game"""
    chat = update.effective_chat
    text = (update.message.text or "").strip().lower()
    parts = text.split(maxsplit=1)
    user_msg = parts[1].strip() if len(parts) > 1 else ""

    # New game
    if "شروع" in text or "بازی" in user_msg or not _GAMES.get(chat.id):
        _GAMES[chat.id] = {"answer": random.randint(1, 50), "tries": 0, "active": True}
        await update.message.reply_text(
            "🎮 **بازی حدس عدد**\n"
            "من یه عدد بین ۱ تا ۵۰ در نظر گرفتم. حدس بزن!\n"
            "هر بار بگو مثلاً: `حدس میزنم ۲۵`",
            parse_mode=ParseMode.MARKDOWN,
        )
        return

    game = _GAMES.get(chat.id)
    if not game or not game.get("active"):
        await update.message.reply_text("بازی فعالی نیست. بگو «بازی حدس عدد شروع»")
        return

    # Try to parse a number from the message
    nums = re.findall(r"\d+", user_msg)
    if not nums:
        await update.message.reply_text("یه عدد بگو مثلاً: `حدس میزنم ۲۵`", parse_mode=ParseMode.MARKDOWN)
        return

    guess = int(nums[0])
    game["tries"] += 1

    if guess == game["answer"]:
        _GAMES.pop(chat.id, None)
        emojis = ["🎉", "🥳", "👏", "🎊", "✨"]
        await update.message.reply_text(
            f"{random.choice(emojis)} **آفرین! درست حدس زدی!**\n"
            f"عدد {guess} بود!\n"
            f"تعداد حدس‌ها: {game['tries']}\n\n"
            "بگو «بازی شروع» برای یه دور جدید",
            parse_mode=ParseMode.MARKDOWN,
        )
    elif guess < game["answer"]:
        await update.message.reply_text(f"⬆️ **بزرگتر** بگو (حدس {game['tries']})")
    else:
        await update.message.reply_text(f"⬇️ **کوچیکتر** بگو (حدس {game['tries']})")


# ──── Register ────

def register(app) -> None:
    register_mixed(
        app,
        {
            "mood": mood_cmd,
            "proverb": proverb_cmd,
            "joke": joke_cmd,
            "fact": fact_cmd,
            "advice": advice_cmd,
            "dream": dream_cmd,
            "fortune": fortune_cmd,
            "guess": guess_cmd,
            "rps": rps_cmd,
            "rockpaperscissors": rps_cmd,
            "quiz": quiz_cmd,
            "trivia": quiz_cmd,
        },
        {
            "حالت بابی": mood_cmd,
            "بابی شوخ باش": mood_cmd,
            "بابی جدی باش": mood_cmd,
            "بابی شاعر باش": mood_cmd,
            "تغییر حالت": mood_cmd,
            "ضرب المثل": proverb_cmd,
            "مثل": proverb_cmd,
            "ضرب المثل بگو": proverb_cmd,
            "یک ضرب المثل": proverb_cmd,
            "شوخی": joke_cmd,
            "بامزه": joke_cmd,
            "لطیفه": joke_cmd,
            "بخندون": joke_cmd,
            "یه لطیفه": joke_cmd,
            "حقیقت": fact_cmd,
            "واقعیت جالب": fact_cmd,
            "آیا میدونستی": fact_cmd,
            "نمیدونستم": fact_cmd,
            "سنگ کاغذ قیچی": rps_cmd,
            "rps": rps_cmd,
            "مسابقه": quiz_cmd,
            "quiz": quiz_cmd,
            "سوال جالب": quiz_cmd,
            "سوال بپرس": quiz_cmd,
            "چقدر بلدم": quiz_cmd,
            "آزمون": quiz_cmd,
            "مشورت": advice_cmd,
            "راهنمایی": advice_cmd,
            "نظرت چیه": advice_cmd,
            "چیکار کنم": advice_cmd,
            "چه کنم": advice_cmd,
            "تعبیر خواب": dream_cmd,
            "خواب دیدم": dream_cmd,
            "تعبیر کن": dream_cmd,
            "پیشگویی": fortune_cmd,
            "پیش بینی": fortune_cmd,
            "فال روزانه": fortune_cmd,
            "آینده": fortune_cmd,
            "فال": fortune_cmd,
            "بازی حدس عدد": guess_cmd,
            "حدس بزن": guess_cmd,
            "حدس میزنم": guess_cmd,
            "عدد حدس": guess_cmd,
            "بازی شروع": guess_cmd,
            "بازی": guess_cmd,
        },
    )
