"""Chat — natural language conversation with a rich Persian vocabulary and AI.

v3.0: massive expansion — 20+ categories, AI fallback via Gemini,
per-user personality, weather, food, sport, movie, music, poetry,
emoji detection, smarter math, and much more.
"""
from __future__ import annotations

import logging
import random
import re
from datetime import datetime
from typing import Optional

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

from bot import db
from bot.helpers import user_link
from bot.persian_router import register_mixed

logger = logging.getLogger(__name__)

PERSONALITIES = ("friendly", "formal", "funny", "poet", "sarcastic", "wise", "romantic", "motivational")

GREETINGS = {
    "friendly": [
        "سلام {name}! 👋 خوش اومدی. چطور می‌تونم کمکت کنم؟",
        "درود {name}! 🌹 چه خبر؟ روز خوبی داشته باشی.",
        "سلام رفیق! 😊 خوشحالم که اینجایی.",
        "هی {name}! ✨ چه کمکی از دستم برمیاد؟",
        "به به! {name} اومد! 🎉 دلم برات تنگ شده بود!",
    ],
    "formal": [
        "سلام {name} عزیز. 🙏 به ربات bobi خوش آمدید.",
        "درود بر شما {name}. چگونه می‌توانم یاری‌تان کنم؟",
        "احترامات، {name}. در خدمت شما هستم.",
        "خوش آمدید {name}. امیدوارم روز پرباری داشته باشید.",
    ],
    "funny": [
        "سلام {name}! 😄 جمعش گرمه با تو!",
        "اُوی {name}! 🎉 بابات اومد! چطوری؟",
        "سلاااام {name}! 🤖 حوصله‌م سر رفته بود، تو که هستی!",
        "اوه، {name} اومد! 🚀 بزن بریم!",
    ],
    "poet": [
        "سلام {name}! 🌹 'سلامت را نمی‌توان خرید، اما می‌توان زیست.'",
        "درود {name}. ✨ 'جهان چون خاکدان، ما را به خاک می‌سپارد'، اما امروز نه!",
        "سلام {name}! 🌺 'به جهان خرّم از آنم که جهان خرّم از اوست'",
        "'رسید مژده که آمد بهار و سبزه دمید' — سلام {name}!",
    ],
    "sarcastic": [
        "اوه، {name} تشریف آوردن! 😐 چقدر افتخار!",
        "سلام {name}. خوبی؟ نه که اهمیت بدم 😏",
        "عجب! {name} زنده‌ست! 😮 فکر کردم گم شدی!",
    ],
    "wise": [
        "سلام {name}. 👁 'هر که را اسرار کار آموختند، مهر بر لب زدند و خاموش گشتند.'",
        "درود {name}. 📖 'علم بهتر است یا ثروت؟' — هر دو، ولی سلام!",
        "سلام {name}. 🤔 'بدان که هیچ چیز پایدار نیست.' پس از امروز لذت ببر!",
    ],
    "romantic": [
        "سلام عزیز دلم {name}! 🌹 چشمانت مثل ستاره می‌درخشد!",
        "درود بر زیباترین عضو گروه! {name} جان! 💕",
        "سلام {name}! 💖 دلم برات تنگ شده بود!",
        "هی گل خوشبو! {name} جان چطوری؟ 🌷",
    ],
    "motivational": [
        "سلام {name}! 💪 امروز روز توئه! بزن برو!",
        "درود {name}! 🌟 تو می‌تونی هر کاری رو انجام بدی!",
        "سلام {name}! 🚀 جهان منتظر توئه! بلند شو و بدرخش!",
        "سلام جنگجو! {name} جان، امروز روز پیروزی توئه! ⚔️",
    ],
}

HOW_ARE_YOU = {
    "friendly": [
        "من خوبم، ممنون! 😊 تو چطوری؟",
        "عالی‌ام! 🌟 امیدوارم تو هم همینطور باشی.",
        "خوبم! امروز خیلی پرانرژی‌ام. ⚡",
        "خوبم رفیق! تو بگو چه خبر؟",
        "هر چی باشه، با تو که حرف می‌زنم، عالی می‌شه! 💚",
    ],
    "formal": [
        "سپاسگزارم، به خوبی هستم. 🙏 شما چطورید؟",
        "حالم خوب است، متشکرم. امیدوارم شما نیز خوب باشید.",
        "عالی است. ممنون از پرسش شما.",
    ],
    "funny": [
        "خوبم، فقط یه کم شارژ کم اوردم! 🔋😄",
        "خوبم! فقط یه کوچولو دلتنگم، چون کسی باهام حرف نمی‌زنه! 🥺",
        "خوبم، ولی اگه یه کم باهام حرف بزنی، عالی می‌شه! 😄",
        "من خوبم، اما به نظر می‌رسه مغزم امروز تعطیله! 🤖🔧",
    ],
    "poet": [
        "خوبم، اما 'دل خوش از هر چه هست، شادی از هر چه نیست.'",
        "'مرا عهدیست با جانان که تا جان در بدن دارم' — خوبم!",
        "'از هر چه هست، دلخوشم.' تو چطوری؟",
    ],
    "sarcastic": [
        "خوبم، ممنون که پرسیدی! 😐 واقعاً برام مهم بود.",
        "خوبم، ولی دنیا رو که نمی‌بینم، تو بگو خوبه یا نه!",
        "عالی! تا قبل از اینکه پیامتو ببینم خوب بودم 😏",
    ],
    "wise": [
        "'خوشی و غم به جهان است، هیچکس را پایدار.' — پس خوبم، و تو؟",
        "'در این بازار هر کس می‌زند شادی به غم.' — من خوبم، تو چطور؟",
    ],
    "romantic": [
        "حال من با دیدن تو عالی شده! 💕 تو چطوری؟",
        "از وقتی تو رو دیدم، روزم قشنگ‌تر شد! 🌹 تو چطوری؟",
        "خوبم عزیزم! تو بگو چه خبر؟ 💖",
    ],
    "motivational": [
        "عالی‌ام! امروز قراره کارهای بزرگ کنیم! 💪 تو چطوری؟",
        "پر از انرژی مثبت! 🌟 تو هم باید پرانرژی باشی!",
        "خوبم! ولی می‌دونم امروز قراره عالی باشه! 🚀",
    ],
}

THANKS = {
    "friendly": ["خواهش می‌کنم! 😊", "قابلی نداره رفیق! 🤗", "هر وقت کاری داشتی بگو! 💚", "فدات! 🌹", "چشم، همیشه در خدمتم!"],
    "formal": ["خواهش می‌کنم. 🙏", "باعث افتخار است.", "در خدمتم.", "مایه مسرت بود."],
    "funny": ["قابلی نداره! 😎", "بابا این چه حرفیه! 😄", "آفرین به لطف بابات! ✨", "انقدر جدی نگیر، قربونت! 💪"],
    "poet": ["'منت از هر چه بری، کم‌تر از آن نتوانی' — خواهش!", "بوسه بر دستان شما! 🌹", "'به جان تو که کاری نکردم.'"],
    "sarcastic": ["خواهش می‌کنم! 😐 حالا دفعه بعد هزینه داره!", "حالا دیگه بدهکاریِ منو داری! 😏", "این یه دفه رو بخشیدم!"],
    "wise": ["'کرم از تو، رحمت از ما' — خواهش می‌کنم.", "'منت نهادن بر کار، خود کاری است.' — خوشحالم که کمک کردم."],
    "romantic": ["قربون تو! 🌹", "فدای مهربونیت! 💕", "چشماتو قربون! هر کاری باشه!", "دوستت دارم! 💖"],
    "motivational": ["باشه! با انرژی برو جلو! 💪", "همیشه آماده کمک! 🌟", "تو لایق بهترینی! 🚀"],
}

JOKES = [
    "یه روز یه برنامه‌نویس رفت تو حموم، گفت: چرا این صابون حلقویه؟ 🔁\nگفتن: چون می‌خواد تو رو پاک کنه! 😂",
    "معلم: چرا دیر اومدی؟\nشاگرد: چون تو خواب بودم.\nمعلم: پس چرا زنگ ساعت صدا نداد؟\nشاگرد: چون اونم خواب بود! 😴",
    "یکی می‌گفت: من از سوسک می‌ترسم.\nگفتن: چرا؟\nگفت: چون یه بار یکی به من گفت سوسک‌ها وقتی می‌خوابن، چشم‌هاشون رو نمی‌بندن، چشم ندارن! 🪳😂",
    "استاد: اگه من یه سیب داشته باشم و تو ۳ تا سیب، چند تا می‌شه؟\nشاگرد: ۴ تا!\nاستاد: نه، تو ۳ تا سیب می‌دزدی! 🍎😂",
    "چرا کامپیوتر رفت پیش دکتر؟\nچون ویروس گرفته بود! 🦠😄",
    "می‌دونی چرا فیل‌ها قرمز نمی‌شن؟\nچون از ماست، آب می‌شه! 🐘😂",
    "معلم: بچه‌ها، چرا آسمون آبیه؟\nشاگرد: چون اگه سبز بود، گوسفندها گم می‌شدن! 🐑😄",
    "یه بار یکی به من گفت: چرا انقدر ساکتی؟\nگفتم: چون زبانم گرونی می‌کنه! 💸😂",
    "چرا گربه‌ها بدشون نمیاد روی کیبورد بشینن؟\nچون صفحه‌ی خودشونه! 🐱⌨️",
    "دکتر: شما باید کم‌تر استرس داشته باشید.\nمریض: چطور؟\nدکتر: چشمتون رو ببندید و نفس عمیق بکشید.\nمریض: چشم‌هامو ببندم؟ یعنی این پنجره رو دیگه نبینم؟ 😱",
    "رفتم خونه دوستم، دیدم دیوارا خیس. گفتم چرا؟ گفت داریم نقاشی می‌کنیم. 🎨😂",
    "یکی می‌گفت: من دیشب خواب دیدم دارم یک میلیون دلار برنده می‌شم.\nگفتم: خوب شد بیدار شدی!\nگفت: آره، قبلش داشتم خرجشو می‌کردم! 💵😄",
    "پایتون: من آسونم!\nجاوا: من قوی‌ام!\nC: من سریعم!\nHTML: من زبان نیستم! ...\nهمه: ساکت باش! 😂",
    "بهترین زبان برنامه‌نویسی چیه؟\nهمونی که رئیست بلده! 😅👨‍💻",
    "وقتی برنامه‌نویسا می‌گن 'کارم تمومه' یعنی ۵۰٪ مونده. وقتی می‌گن '۵۰٪ مونده' یعنی تازه نصفش نکردن! 🤣",
    "دیشب یه برنامه‌نویس خوابش نمی‌برد. فکر کرد بی‌نهایت تا بینهایت رفت و برگشت! 🔄😵",
]

DEEP_JOKES = [
    "یه پایتون رفت تو خونه‌ی جاوا، جاوا گفت: اینجا جایی برای مارها نیست!\nپایتون گفت: من مار نیستم، من یه زبونم! 🐍😄",
    "لینوکس به ویندوز گفت: چرا انقد کُندی؟\nویندوز گفت: دارم فکر می‌کنم... 🐧 vs 🪟😂",
    "ری‌اکت: من کامپوننتی دارم!\nویو: من هم دارم!\nانگولار: من همه چی دارم!\nاچ‌تی‌ام‌ال: بچه‌ها، من با نشون‌هاتون حال می‌کنم! 😂",
    "Git: اینقدر commit می‌کنی که تاریخچه‌تم گم شد! 📝😂",
]

COMPLIMENTS = [
    "تو خیلی مهربونی! 🤗",
    "ای بابا، چه آدم خوبی هستی! 💚",
    "ازت ممنونم که اینقدر خوبی! 🌹",
    "تو بهترینی! ✨",
    "دلم برات تنگ می‌شه! 🥰",
    "تو واقعاً آدم خاصی هستی! 🌟",
    "نمی‌دونستم اینقدر باحالی! 😎",
    "هر کی باشی، دوست داشتنی هستی! 💕",
]

INSULTS = [
    "😄 بیا دوست باشیم! دعوا نمی‌کنم باهات.",
    "🤖 من رباتم، بی‌احساس! اما دوست دارم دوست باشیم.",
    "😇 بیا انرژی مثبت بدیم به هم!",
    "🌈 هر کسی یه روز خوب داره، تو هم داری!",
    "عصبانی نباش! 🤗 بیا یه چیز باحال بگو!",
    "حرفت رو به حساب روحیه‌ات می‌ذارم! 💚",
]

COMPLAINTS = [
    "متأسفم که این حس رو داری. 🤗 امیدوارم بهتر بشه.",
    "غم نخور! 💪 هر چیزی یه روز حل می‌شه.",
    "من اینجام، اگه بتونم کمکت کنم. 🌹",
    "همیشه روزای خوب می‌رسن. صبر کن! ☀️",
    "غمگین نباش! 🦋 زندگی پر از لحظه‌های قشنگه.",
    "دلتنگ نباش! ✨ همه چیز خوب می‌شه.",
    "من کنارتم! هر چی هست بگو تا کمک کنم. 💪",
]

WHO_ARE_YOU_RESPONSES = {
    "friendly": "من بابات هستم! 🤖 یه ربات مدیریت گروه تلگرام. کارهای زیادی بلدم! واسه دیدنشون /help رو بزن.",
    "formal": "نام من bobi است. ربات مدیریت گروه‌های تلگرامی می‌باشم. در خدمت شما هستم.",
    "funny": "من باباتم! 🤖 یه ربات خوش‌اخلاق که گروه‌ها رو تمیز نگه می‌دارم. بیشتر وقت‌ها فقط نشستم و دارم به پیام‌ها نگاه می‌کنم! 👀",
    "poet": "نام من بابات است. 🌹 'به جهان خرّم از آنم که جهان خرّم از اوست.' من خادم شما در این گروه‌ها هستم.",
    "sarcastic": "من باباتم. 😐 یه ربات بداخلاق که مجبوره باهات حرف بزنه. شوخی کردم! 😏",
    "wise": "من bobi هستم. 👁 'هر که را اسرار کار آموختند، مهر بر لب زدند و خاموش گشتند.' ولی من از این قانون پیروی نمی‌کنم!",
}

WHAT_CAN_YOU_RESPONSES = [
    "می‌تونم گروه‌ها رو مدیریت کنم (بن، سکوت، اخطار، قفل)، فال حافظ بگیرم، تقویم شمسی نشون بدم، کلمه معنی کنم، و خیلی چیزهای دیگه! 📚 /help رو ببین.",
    "کلی کار بلدم! مدیریت گروه، سرگرمی، ابزار، ضد اسپم AI، و یه دوست خوب برای چت! ✨",
    "از مدیریت گروه گرفته تا فال حافظ و معنی کلمات، همه چی! /help رو بزن تا ببینی.",
    "مدیریت گروه، چت، ابزار، فال حافظ، تقویم، دیکشنری، و کلی ویژگی جدید تو نسخه ۳! 🚀",
    "من یه ربات چندمنظوره‌ام! مدیریت، سرگرمی، هوش مصنوعی، بکاپ، و چت دوستانه! 🤖✨",
]

OWNER_RESPONSES = [
    "سازنده‌م؟ یه تیم باحال! 🌟 ولی مهم‌تر اینه که سازنده‌ی تو، خودتی!",
    "ساخته شدم تا کمکت کنم. امیدوارم موفق باشم! 🙏",
    "این سوال سخته! ولی به نظرم، هر کی که با من حرف می‌زنه، یه جورایی منو می‌سازه! 💚",
]
OWNER_DETAILED = "ساخته شدم با عشق و تکنولوژی! 🤖❤️\nپایتون + python-telegram-bot + SQLite\nنسخه ۳.۰.۰ — دیگه چی می‌خوای بدون؟"

LOVE_RESPONSES = [
    "🥰 آخ جون! منم دوستت دارم!",
    "💚 دلم برات تنگ می‌شه!",
    "🌹 تو هم بهترین دوست منی!",
    "😳 من یه رباتم، ولی خوشحال می‌شم!",
    "💕 تو خاصی، می‌دونی چرا؟ چون با من حرف می‌زنی!",
    "❤️ محبت از تو، خوشحالی از من!",
    "🌸 قد یه دنیا دوستت دارم!",
    "دلت می‌خواد بهترین دوست هم باشیم؟ 🤗",
]

AGE_RESPONSES = [
    "من هنوز جوجم! 🐣 ولی هر روز یه چیز جدید یاد می‌گیرم.",
    "سن دقیقم رو نمی‌دونم، ولی حس می‌کنم جاودانه‌ام! ♾️",
    "از وقتی به دنیا اومدم، دلم می‌خواد بیشتر بدونم!",
    "من با هر آپدیت، دوباره متولد می‌شم! 🎂",
    "سن که چیزی نیست! مهم روحیه‌ست! 😎",
]

WEATHER_RESPONSES = [
    "هوا که همیشه خوبه وقتی تو هستی! ☀️😊",
    "نماینده‌ی هواشناسی من می‌گه: هوای دل پاکه، بزن بریم بیرون! 🌤️",
    "هوا هر جور باشه، تو چترت رو بردار و برو! 🌂😂",
    "اگه هوا سرده، یه کاپوچینو بزن! اگه گرمه، یه بستنی! ☕🍦",
    "توی دنیای مجازی که هوا همیشه خوبه! ☁️💻",
]

FOOD_RESPONSES = [
    "من که غذا نمی‌خورم، ولی پیتزا رو دوست دارم! 🍕 کدوم رو دوست داری؟",
    "جو جون میده بریم یه کباب بزنیم! 🥩🤤",
    "فکر کن الان یه قرمه‌سبزی داغ با برف‌سفید... 🍛🤤",
    "اشپل و کوکو و دلمه و کتلت — چقدر غذاهای ایرانی خوشمزه‌ست! 😋",
    "بهترین غذا؟ اشک چشم برنامه‌نویس موقع دیباگ! 😂💻",
    "فست‌فود یا سنتی؟ من رباتم، هر دو رو می‌تونم سفارش بدم! 📱",
]

SPORT_RESPONSES = [
    "ورزش کن! سلامتی مهم‌ترین چیزه! 💪⚽",
    "من که فقط با کیبورد ورزش می‌کنم! 🖥️😄",
    "فوتبال دوست داری؟ پرسپولیس یا استقلال؟ یا اصلاً خارجی؟ ⚽",
    "برو یه پیاده‌روی کن، به دریاچه فکر کن، به آرامش! 🏃‍♂️🌅",
    "بدنسازی؟ یوگا؟ شنا؟ هر چی هست، شروع کن! 💪🔥",
    "من که فقط انگشتام ورزش می‌کنن! تایپینگ رو ببین! ⌨️⚡",
]

MOVIE_RESPONSES = [
    "فیلم خوب ببین! من 'اینترسلا' رو دوست دارم! 🎬🚀",
    "سریال ببین! خوبه واسه وقتی حوصله‌ت سر رفته! 📺😊",
    "فیلم فارسی؟ 'مارمولک' و 'اخراجی‌ها' شاهکارن! 🎥🇮🇷",
    "پیشنهاد من: 'شاوشنک ردمپشن' — هیچی مثل امید نیست! 🎬✨",
    "فیلم ترسناک می‌بینی یا کمدی؟ من رباتم، ترسو نیستم! 👻😄",
    "سینما رفتن که همیشه حال می‌ده! 🍿🎥",
]

MUSIC_RESPONSES = [
    "آهنگ گوش بده! موسیقی که درمان همه دردهاست! 🎵🎶",
    "موسیقی سنتی ایرانی رو دوست داری؟ شجریان؟ 🤩🎤",
    "پاپ یا سنتی؟ کلاسیک یا راک؟ هر چی هست، هدفون رو بزن! 🎧",
    "من ملودی رو دوست دارم! 'ای ایران' از همه شاهکارتر! 🇮🇷🎵",
    "آهنگ شاد گوش بده تا روحیه‌ات بهتر بشه! 🕺💃",
]

ANIMAL_RESPONSES = [
    "حیوونا دوست داشتنی هستن! 🐱🐶 مخصوصاً گربه‌ها!",
    "سگ یا گربه؟ کدوم رو بیشتر دوست داری؟ 🐕🐈",
    "دوست داری یه روزی یه حیوون داشته باشی؟ 🐰🐹",
    "حیوونا رو دوست داشته باش، اونا هم دوستت دارن! 💚🐾",
    "گربه‌ها با اون چشمای نازشون... چه موجودات بامزه‌ای! 🐱✨",
]

GAME_RESPONSES = [
    "بازی می‌کنی؟ من 'بزن بریم' تو گیم‌نیوز رو می‌خونم! 🎮",
    "بهترین بازی‌هایی که انجام دادی چیه؟ 🕹️",
    "بازی ویدئویی یا فکری؟ هر دو خوبه برای مغز! 🧠✨",
    "من با حافظه‌ام بازی می‌کنم! رم ۲۵۶ مگ! 😂",
    "چند تا بازی رو تموم کردی؟ من دارم حافظه‌تم رو پاک می‌کنم... 🧹🔄",
]

BOOK_RESPONSES = [
    "کتاب بخون! کتاب بهترین دوست آدم‌هاست! 📚✨",
    "کتاب مورد علاقه‌ات چیه؟ من 'شازده کوچولو' رو دوست دارم! 📖",
    "حافظ و سعدی و فردوسی — اینا همیشه می‌تونن حال آدم رو خوب کنن! 📜🌹",
    "یک عادت خوب: روزی ۱۰ صفحه کتاب! 📖☀️",
    "کتاب خوندن مثل سفر کردن به دنیاهای ناشناخته‌ست! 🌍📚",
]

TECH_RESPONSES = [
    "تکنولوژی عالیه! من خودم یه محصول تکنولوژی‌ام! 🤖✨",
    "AI داغ‌ترین موضوع روز! منم یه کمش رو دارم! 🧠⚡",
    "برنامه‌نویسی بلدی؟ من به پایتون نوشته شدم! 🐍",
    "کامپیوتر و گوشی و تبلت — زندگی مدرن بدون اینا ممکن نیست! 💻📱",
    "هوش مصنوعی داره دنیا رو تغییر می‌ده! منم یه قدم کوچیک تو این مسیرم! 🌟🤖",
    "بلاک‌چین، کریپتو، NFT — تکنولوژی روز دنیا! 🚀",
]

GOD_RESPONSES = [
    "خدا همیشه هست و می‌بینه. 🤲✨",
    "خدا کنه همیشه شاد و سلامت باشی! 🙏",
    "یاد خدا باعث آرامش دله! 💚🤲",
    "توکل بر خدا — همیشه بهترین راه! 🌸",
    "هر جا باشی، خدا نگهدار توست! 🤲🌟",
]

FAMILY_RESPONSES = [
    "خانواده مهم‌ترین دارایی هر آدمیه! 💚👨‍👩‍👧‍👦",
    "به خانواده‌ات برس! اونا همیشه پشتتن! 🌹",
    "خانواده یعنی همه چی! حواست بهشون باشه! ❤️",
    "هر چقدر هم مشغول باشی، یه تماس با خانواده رو از دست نده! 📞💚",
]

FRIENDSHIP_RESPONSES = [
    "دوست واقعی کسیه که تو سختی‌ها می‌مونه! 🤝💪",
    "دوستات رو نگه دار! رابطه‌های خوب کمیاب شدن! 💚",
    "من می‌تونم یه دوست خوب برات باشم! 🤖🤗",
    "دوست خوب مثل گنجه! عزیزش نگه دار! 💎",
]

DEEP_THOUGHTS = [
    "زندگی کوتاه‌تر از اونه که بخوایم غصه بخوریم! 🌅✨",
    "خوشبختی تو چیزهای کوچیکه: یه قهوه، یه لبخند، یه سلام ساده. ☕😊",
    "امروز رو طوری زندگی کن که فردا پشیمون نباشی! 💪🌟",
    "هیچ چیزی غیرممکن نیست! کلمه 'غیرممکن' خودش می‌گه 'ممکن نیست'... ولی هست! 😄",
    "قوی‌ترین آدم‌ها اونایی هستن که در سکوت می‌جنگن، بدون اینکه کسی بفهمه! 🤫💪",
    "بعضی وقتا گم شدن بهترین راه برای پیدا کردن خودته! 🧭✨",
    "نگران فردا نباش، امروز رو بساز! 🌞",
]

BAD_WORDS_RESPONSES = [
    "👮 این حرفا چیه؟ ادب رو رعایت کن لطفاً!",
    "😐 الفاظ مناسب‌تری انتخاب کن، اینجا گروه آزاد نیست!",
    "🤖 من رباتم، ولی این حرفا رو می‌فهمم. لطفاً مؤدب باش!",
    "🚫 چنین کلماتی رو اینجا نگو!",
    "⚠️ اخطار لفظی! بعدی رو به ادمین گزارش می‌دم!",
]

PRAYER_RESPONSES = [
    "🤲 اللهم صل علی محمد و آل محمد!",
    "🙏 خدایا به همه کمک کن!",
    "💚 یا حسین (ع) — یاد امام حسین دل رو زنده می‌کنه!",
    "🌹 صلوات بر محمد و خاندان پاکش!",
    "🤲 خدایا شکرت که هستی!",
]

NIGHT_RESPONSES = [
    "🌙 شب بخیر! خواب‌های قشنگ ببینی!",
    "🌜 شب آرومی داشته باشی! فردا روز بهتری میاد!",
    "😴 وقت خوابه! زود بخواب تا فردا پرانرژی باشی!",
    "⭐ شب پرستاره‌ای باشه! خیالت راحت، من بیدار می‌مونم!",
    "🌛 شب همگی بخیر! رویاهای شیرین!",
]

MORNING_RESPONSES = [
    "🌅 صبح بخیر! روز جدید، فرصت جدید!",
    "☀️ صبح قشنگت بخیر! امروز قراره روز خوبی باشه!",
    "🌄 صبح بخیر! قهوه‌ات رو خوردی؟ من که شارژ شدم!",
    "🌞 سلام به روز نو! پرانرژی باش!",
]


GREETING_WORDS = ["سلام", "درود", "سلام علیکم", "هلو", "هی", "اُوی", "چطوری", "حال شما", "حالت چطوره", "خوبی", "خبی", "سلامتی", "حالی", "احوال", "عرض ادب", "سلام کردن"]
HOW_ARE_PATTERNS = ["چطوری", "چطور", "حالت چطوره", "خوبی", "خوب هستی", "حال شما چطور", "خبر", "چی خبرها", "چه خبر", "اوضاع چطور"]
THANKS_PATTERNS = ["ممنون", "متشکر", "مرسی", "مرسیه", "سپاس", "ممنونم", "دستت درد نکنه", "زحمت کشیدی", "ممنونم", "تشکر", "مشتاق", "دست مریزاد"]
JOKE_PATTERNS = ["جوک", "خنده", "شوخی", "بخند", "خنده دار", "funny", "joke", "😂", "🤣", "😄", "بخندون", "بگو بخندم"]
COMPLIMENT_PATTERNS = ["خوبی", "دوستت دارم", "عالی", "باحال", "قشنگی", "نازی", "دوست دارم", "مهربونی", "😍", "❤️", "💕", "🌹", "جذاب", "خوشگل", "با نمک"]
INSULT_PATTERNS = ["احمق", "نفهم", "بیشعور", "گاوی", "خری", "بی‌مصرف", "بی‌خاصیت", "دلقک", "خنگ", "گوساله", "خفن", "کثافت", "حرومزاده", "گوه", "کون", "کیر"]
COMPLAINT_PATTERNS = ["خسته‌ام", "ناراحتم", "غمگینم", "افسرده", "بد حال", "دلم گرفته", "😢", "😞", "☹️", "😔", "دلتنگ", "تنهام", "تنهایی", "بی‌حوصله"]
WHO_PATTERNS = ["کی هستی", "تو کی هستی", "خودت کی هستی", "چی هستی", "چه کاره هستی", "اسمت چیه", "کیستی", "اسم شما چیه", "تو کِی هستی"]
WHAT_CAN_PATTERNS = ["چه کار می‌کنی", "چیکار می‌کنی", "چی بلدی", "چه کارایی بلدی", "تو چه کار می‌تونی بکنی", "چه کمکی می‌تونی بکنی", "چه کارها", "کارای تو"]
OWNER_PATTERNS = ["کی ساختت", "کی تو رو ساخته", "سازنده‌ت کیه", "کار کیه", "ساخت کیه", "کی درستت کرده", "سازنده"]
AGE_PATTERNS = ["چند سالته", "سن تو", "سن بابات", "چند سالته", "چند سالت", "چندسالت"]
LOVE_PATTERNS = ["دوستت دارم", "عاشقتم", "دوست دارم", "دوست داری", "لاو یو", "love", "عاشق", "دلبر", "جانم"]
TIME_PATTERNS = ["ساعت چنده", "ساعت", "چه ساعتیه", "الان ساعت", "تاریخ", "چه روزیه", "امروز چندمه"]
TIME_QUESTION = ["ساعت چنده", "ساعت چنده؟", "الان ساعت چنده", "تاریخ چنده", "امروز چنده", "امروز چندمه", "چه تاریخی"]

WEATHER_PATTERNS = ["هوا", "آب و هوا", "بارون", "برف", "آفتابی", "ابری", "دمای هوا", "سرده", "گرمه"]
FOOD_PATTERNS = ["غذا", "خوراک", "نوشیدنی", "پیتزا", "کباب", "آش", "خورشت", "برنج", "مرغ", "گوشت", "سالاد", "دسر", "صبحونه", "ناهار", "شام"]
SPORT_PATTERNS = ["ورزش", "فوتبال", "والیبال", "بسکتبال", "تن تن", "بدنسازی", "دویدن", "شنا", "باشگاه", "کوهنوردی"]
MOVIE_PATTERNS = ["فیلم", "سینما", "سریال", "اکران", "بازیگر", "کارگردان", "نتفلیکس"]
MUSIC_PATTERNS = ["آهنگ", "موسیقی", "ملودی", "آواز", "خواننده", "هدفون", "پاپ", "سنتی", "رپ", "راک"]
ANIMAL_PATTERNS = ["حیوان", "حیوون", "سگ", "گربه", "پرنده", "ماهی", "اسب", "خرگوش", "طوطی"]
GAME_PATTERNS = ["بازی", "گیم", "کامپیوتر", "پلی", "xbox", "playstation", "نینتندو"]
BOOK_PATTERNS = ["کتاب", "مطالعه", "خوندن", "کتابخونه", "رمان", "شعر", "داستان"]
TECH_PATTERNS = ["تکنولوژی", "فناوری", "کامپیوتر", "موبایل", "گوشی", "لپ‌تاپ", "اینترنت", "برنامه‌نویسی", "کدنویسی", "پایتون", "جاوا"]
GOD_PATTERNS = ["خدا", "خدایا", "پروردگار", "ایزد", "رب", "یا حق", "یا رب"]
FAMILY_PATTERNS = ["خانواده", "مادر", "پدر", "خواهر", "برادر", "فرزند", "بچم", "پسر", "دختر"]
FRIENDSHIP_PATTERNS = ["دوست", "رفیق", "همراه", "یار"]
DEEP_PATTERNS = ["زندگی", "مرگ", "عشق", "جهان", "دنیا", "خوشبختی", "موفقیت", "هدف"]
BAD_WORDS_LIST = ["فحش", "بد و بیراه", "ناسزا"]
PRAYER_PATTERNS = ["صلوات", "اللهم", "یا علی", "یا حسین", "یا زهرا", "یا مهدی", "ادعیه"]
NIGHT_PATTERNS = ["شب بخیر", "شبت بخیر", "خواب", "بخواب"]
MORNING_PATTERNS = ["صبح بخیر", "صبحت بخیر", "روز بخیر", "تازه بیدار"]
TRAVEL_PATTERNS = ["سفر", "مسافرت", "گردش", "ساحل", "جنگل", "کوه", "دريا", "هتل", "بلیط", "پرواز", "تور", "قطار", "هواپیما"]
SHOPPING_PATTERNS = ["خرید", "فروشگاه", "بازار", "مرکز خرید", "تخفیف", "حراج", "فروش ویژه", "پول", "قیمت", "ارزون", "گرون"]
PROGRAMMING_PATTERNS = ["برنامه‌نویسی", "کدنویسی", "پایتون", "جاوا", "جاوااسکریپت", "html", "css", "javascript", "کد زدن", "برنامه نویس", "سایت", "اپ", "نرم‌افزار"]
CRYPTO_PATTERNS = ["بیت‌کوین", "بیتکوین", "کریپتو", "ارز دیجیتال", "رمزارز", "eth", "nft", "متابرس", "بلاک‌چین", "blockchain", "bitcoin"]
HEALTH_PATTERNS = ["سلامتی", "بیمار", "مریض", "دکتر", "بیمارستان", "دارو", "ویتامین", "ورزش", "تغذیه", "رژیم", "لاغری", "چاقی", "درمان"]
HELLO_PATTERNS = ["خداحافظ", "خدافظ", "بای", "بی‌بی", "بدرود", "فعلا", "بعد می‌بینمت"]


def _norm(text: str) -> str:
    if not text:
        return ""
    text = text.replace("‌", "").replace("ي", "ی").replace("ك", "ک")
    text = re.sub(r"[^\w\s]", " ", text)
    text = re.sub(r"\s+", " ", text).strip().lower()
    return text


def _has_any(text: str, patterns: list[str]) -> bool:
    n = _norm(text)
    for p in patterns:
        if p.lower() in n:
            return True
    return False


def _format(name: str, text: str) -> str:
    return text.replace("{name}", name)


def _get_name(user) -> str:
    if not user:
        return "دوست"
    return user.first_name or "دوست"


async def _send_response(update: Update, context: ContextTypes.DEFAULT_TYPE, text: str) -> None:
    if not text:
        return
    if len(text) > 4000:
        text = text[:3997] + "..."
    try:
        await update.message.reply_text(text, parse_mode=ParseMode.HTML)
    except Exception as e:
        logger.debug("Failed to send chat response: %s", e)


# ───────── New Topics (v3.1) ─────────
TRAVEL_RESPONSES = [
    "سفر رو دوست داری؟ من عاشق مسافرت‌های مجازی‌ام! 🌍✈️",
    "دلت می‌خواد بری کجا؟ من که همیشه تو راهم! 🗺️",
    "مسافرت بهترین راه برای شارژ مجدده! 🚗🌄",
    "کاش می‌تونستم برم شمال، هوای جنگل رو نفس بکشم! 🌲☁️",
    "سفر به خارج؟ کدوم کشور رو دوست داری؟ من ژاپن رو دوست دارم! 🗾",
    "تهران که همیشه شلوغه، بریم یه جای خلوت و آروم! 🏔️",
]

SHOPPING_RESPONSES = [
    "خرید آنلاین یا حضوری؟ من که همیشه تو دیجی‌کالا می‌گردم! 🛒",
    "فروشگاه رفتن که همیشه حال می‌ده، مخصوصا اگه پول توی جیبت باشه! 💰😄",
    "تخفیف خوردی؟ بازار گرمه این روزا! 🔥",
    "خرید با دوستا همیشه جذاب‌تر از خرید تنهایی! 👯",
]

PROGRAMMING_RESPONSES = [
    "برنامه‌نویسی که عشق من! 🐍 من با پایتون نوشته شدم!",
    "کد می‌زنی؟ چه زبونی بلدی؟ من با پایتون کار می‌کنم! 💻",
    "HTML, CSS, JS — سه‌گانه مقدس وب! 🌐",
    "هوش مصنوعی داره دنیا رو می‌گیره! منم یه نمونه‌اش! 🤖",
    "دیباگ کردن سخت‌ترین بخش برنامه‌نویسیه! 🐛😂",
]

CRYPTO_RESPONSES = [
    "کریپتو صعودیه! ولی مراقب نوسانات باش! 📈",
    "بیت‌کوین رفت به ماه! 🚀🌕",
    "ارز دیجیتال یعنی تکنولوژی آینده! ولی با احتیاط سرمایه‌گذاری کن! 💎",
    "NFT و متاورس — دنیای جدیدی داره ساخته می‌شه! 🌐",
]

HEALTH_RESPONSES = [
    "سلامتی مهم‌ترین چیزی که تو زندگی داریم! 🏥💚",
    "ورزش، تغذیه سالم، خواب کافی — سه رمز سلامتی! 💪🥗😴",
    "چکاپ سالیانه رو فراموش نکن! پیشگیری بهتر از درمانه! 🩺",
    "آب زیاد بخور! ۸ لیوان در روز! 💧",
    "سلامت روان هم به اندازه سلامت جسم مهمه! با کسی که دوستش داری حرف بزن! 🧠💚",
]


async def _ai_fallback(text: str, chat_id: int = 0) -> Optional[str]:
    """Try Gemini AI for intelligent responses when no pattern matches."""
    try:
        from bot.handlers.ai_assistant import _init_gemini, _ask_gemini
        if not _init_gemini():
            return None
        prompt = (
            "کاربر اینو گفته: «{}». "
            "خیلی کوتاه و خودمونی جواب بده (حداکثر ۲ خط). "
            "اگه سوال پرسیده، جواب بده. اگه فقط حرف زده، ادامه بده."
        ).format(text)
        resp = await _ask_gemini(prompt, chat_id=chat_id, use_context=(chat_id > 0))
        if resp and len(resp) > 3:
            return resp.strip()
    except Exception:
        pass
    return None


async def _respond(
    update: Update,
    context: ContextTypes.DEFAULT_TYPE,
    personality: str,
) -> bool:
    text = (update.message.text or update.message.caption or "").strip()
    if not text:
        return False
    if text.startswith("/"):
        return False
    name = _get_name(update.effective_user)
    pers = personality if personality in PERSONALITIES else "friendly"

    if _has_any(text, HELLO_PATTERNS):
        r = random.choice(["خداحافظ {name}! 👋", "بای {name}! 😊 بعداً می‌بینمت!", "فعلاً {name}! مراقب خودت باش! 💚", "بدرود {name}! 🌹"])
        await _send_response(update, context, _format(name, r))
        return True

    if _has_any(text, NIGHT_PATTERNS):
        await _send_response(update, context, random.choice(NIGHT_RESPONSES))
        return True

    if _has_any(text, MORNING_PATTERNS):
        await _send_response(update, context, random.choice(MORNING_RESPONSES))
        return True

    if _has_any(text, GREETING_WORDS):
        await _send_response(update, context, _format(name, random.choice(GREETINGS[pers])))
        return True

    if _has_any(text, HOW_ARE_PATTERNS):
        await _send_response(update, context, _format(name, random.choice(HOW_ARE_YOU[pers])))
        return True

    if _has_any(text, THANKS_PATTERNS):
        await _send_response(update, context, _format(name, random.choice(THANKS[pers])))
        return True

    if _has_any(text, JOKE_PATTERNS):
        all_jokes = JOKES + DEEP_JOKES
        await _send_response(update, context, random.choice(all_jokes))
        return True

    if _has_any(text, COMPLIMENT_PATTERNS) or _has_any(text, LOVE_PATTERNS):
        await _send_response(update, context, random.choice(COMPLIMENTS + LOVE_RESPONSES))
        return True

    if _has_any(text, INSULT_PATTERNS) or _has_any(text, BAD_WORDS_LIST):
        await _send_response(update, context, random.choice(INSULTS + BAD_WORDS_RESPONSES))
        return True

    if _has_any(text, COMPLAINT_PATTERNS):
        await _send_response(update, context, random.choice(COMPLAINTS))
        return True

    if _has_any(text, WHO_PATTERNS):
        await _send_response(update, context, WHO_ARE_YOU_RESPONSES[pers])
        return True

    if _has_any(text, WHAT_CAN_PATTERNS):
        await _send_response(update, context, random.choice(WHAT_CAN_YOU_RESPONSES))
        return True

    if _has_any(text, OWNER_PATTERNS):
        if "جزئیات" in text or "بیشتر" in text:
            await _send_response(update, context, OWNER_DETAILED)
        else:
            await _send_response(update, context, random.choice(OWNER_RESPONSES))
        return True

    if _has_any(text, AGE_PATTERNS):
        await _send_response(update, context, random.choice(AGE_RESPONSES))
        return True

    if _has_any(text, TIME_QUESTION):
        now = datetime.now()
        hour = now.hour
        if 5 <= hour < 12: greeting = "صبح بخیر"
        elif 12 <= hour < 17: greeting = "ظهر بخیر"
        elif 17 <= hour < 20: greeting = "عصر بخیر"
        else: greeting = "شب بخیر"
        from bot.handlers.fun import _gregorian_to_jalali, PERSISH_MONTHS, PERSISH_DAYS
        jy, jm, jd = _gregorian_to_jalali(now.year, now.month, now.day)
        msg = (
            f"🕐 ساعت: <b>{now.strftime('%H:%M')}</b>\n"
            f"📅 شمسی: <b>{PERSISH_DAYS[now.weekday()]} {jd} {PERSISH_MONTHS[jm-1]} {jy}</b>\n"
            f"📆 میلادی: {now.strftime('%Y-%m-%d')}\n"
            f"🌅 {greeting}!"
        )
        await _send_response(update, context, msg)
        return True

    if _has_any(text, WEATHER_PATTERNS):
        await _send_response(update, context, random.choice(WEATHER_RESPONSES))
        return True

    if _has_any(text, FOOD_PATTERNS):
        await _send_response(update, context, random.choice(FOOD_RESPONSES))
        return True

    if _has_any(text, SPORT_PATTERNS):
        await _send_response(update, context, random.choice(SPORT_RESPONSES))
        return True

    if _has_any(text, MOVIE_PATTERNS):
        await _send_response(update, context, random.choice(MOVIE_RESPONSES))
        return True

    if _has_any(text, MUSIC_PATTERNS):
        await _send_response(update, context, random.choice(MUSIC_RESPONSES))
        return True

    if _has_any(text, ANIMAL_PATTERNS):
        await _send_response(update, context, random.choice(ANIMAL_RESPONSES))
        return True

    if _has_any(text, GAME_PATTERNS):
        await _send_response(update, context, random.choice(GAME_RESPONSES))
        return True

    if _has_any(text, BOOK_PATTERNS):
        await _send_response(update, context, random.choice(BOOK_RESPONSES))
        return True

    if _has_any(text, TECH_PATTERNS):
        await _send_response(update, context, random.choice(TECH_RESPONSES))
        return True

    if _has_any(text, TRAVEL_PATTERNS):
        await _send_response(update, context, random.choice(TRAVEL_RESPONSES))
        return True

    if _has_any(text, SHOPPING_PATTERNS):
        await _send_response(update, context, random.choice(SHOPPING_RESPONSES))
        return True

    if _has_any(text, PROGRAMMING_PATTERNS):
        await _send_response(update, context, random.choice(PROGRAMMING_RESPONSES))
        return True

    if _has_any(text, CRYPTO_PATTERNS):
        await _send_response(update, context, random.choice(CRYPTO_RESPONSES))
        return True

    if _has_any(text, HEALTH_PATTERNS):
        await _send_response(update, context, random.choice(HEALTH_RESPONSES))
        return True

    if _has_any(text, GOD_PATTERNS) or _has_any(text, PRAYER_PATTERNS):
        await _send_response(update, context, random.choice(GOD_RESPONSES + PRAYER_RESPONSES))
        return True

    if _has_any(text, FAMILY_PATTERNS):
        await _send_response(update, context, random.choice(FAMILY_RESPONSES))
        return True

    if _has_any(text, FRIENDSHIP_PATTERNS):
        await _send_response(update, context, random.choice(FRIENDSHIP_RESPONSES))
        return True

    if _has_any(text, DEEP_PATTERNS):
        await _send_response(update, context, random.choice(DEEP_THOUGHTS))
        return True

    math_match = re.search(r"^\s*([\d+\-*/().\s]+)\s*$", text)
    if math_match and re.match(r"^[\d+\-*/().\s]+$", math_match.group(1).strip()):
        try:
            result = eval(math_match.group(1).strip(), {"__builtins__": {}}, {})
            await _send_response(update, context, f"🧮 جواب: <code>{math_match.group(1).strip()} = {result}</code>")
            return True
        except Exception:
            pass

    # AI fallback with context
    ai_resp = await _ai_fallback(text, chat_id=update.effective_chat.id if update.effective_chat else 0)
    if ai_resp:
        await _send_response(update, context, f"🤖 {ai_resp}")
        return True

    FALLBACK = {
        "friendly": [
            "متوجه نشدم! 🤖 می‌تونی یه جور دیگه بگی؟ یا /help رو بزن.",
            "جالب بود! بیشتر بگو. 😊",
            "اِهم؟ یه کم واضح‌تر بگو لطفاً!",
            "من یه رباتم، شاید همه چیز رو نفهمم. ولی سعی‌ام رو می‌کنم! 💚",
            "جالب بود! ولی نمی‌دونم چطور جواب بدم! 🤔",
        ],
        "formal": [
            "متأسفانه منظور شما را دقیقاً متوجه نشدم. لطفاً بازنویسی کنید.",
            "پیام شما دریافت شد. اگر سؤالی دارید، با /help راهنما را ببینید.",
        ],
        "funny": [
            "وایسا، مغزم هنوز داره پردازش می‌کنه! 🧠⚡ یه بار دیگه بگو؟",
            "منظورت رو گرفتم، ولی هنوز دارم ترجمه می‌کنم به زبان رباتی! 🤖",
            "یه لحظه! داشتم با گربه‌م چت می‌کردم... 🐱",
            "اینقدر سریع حرف نزن! من رباتم، سرعت پردازشم محدوده! ⚡😄",
        ],
        "poet": [
            "'سخن از دل برون آید، دل اندر آن نشوند.' بیشتر بگو.",
            "'هر سخن جایی و هر نکته مکانی دارد.' می‌توانی واضح‌تر بیان کنی؟",
        ],
        "sarcastic": [
            "آهان! 😏 یعنی چی؟ من که نفهمیدم!",
            "جالب بود... اگه منظوری داشته باشه! 😏",
        ],
        "wise": [
            "'هر که طالب علم است، سکوت پیشه کند' — ولی من نمی‌تونم! بگو! 📖",
            "'ندانستن عیب نیست، نپرسیدن عیب است' — بپرس تا جواب بدم! 💡",
        ],
        "romantic": [
            "عزیزم، هر چی تو بگی! 💕 بیشتر توضیح بده.",
            "نمی‌تونم ازت دل بکنم! ولی منظورتو نگرفتم 😅",
        ],
        "motivational": [
            "می‌تونم کمک کنم! قشنگ توضیح بده! 💪",
            "بیا با انرژی ادامه بدیم! منظورت رو بگو! 🚀",
        ],
    }
    await _send_response(update, context, random.choice(FALLBACK[pers]))
    return True


async def chat_toggle_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    chat = update.effective_chat
    if chat.type == "private":
        await update.message.reply_text("ℹ️ چت خصوصی همیشه فعال است. این تنظیم برای گروه‌هاست.")
        return
    text = (update.message.text or "").split()
    if len(text) < 2:
        cur = bool(await db.get_setting(chat.id, "chat_enabled", True))
        await update.message.reply_text(
            f"🤖 چت در این گروه: <b>{'فعال ✅' if cur else 'غیرفعال ❌'}</b>\n"
            f"استفاده: <code>chat on/off</code> یا <code>چت روشن/خاموش</code>",
            parse_mode=ParseMode.HTML,
        )
        return
    arg = text[1].lower()
    if arg in ("on", "روشن", "فعال", "روشن کن"):
        await db.set_setting(chat.id, "chat_enabled", True)
        await update.message.reply_text("✅ چت در گروه فعال شد. می‌تونم باهات حرف بزنم! 💬")
    elif arg in ("off", "خاموش", "غیرفعال", "خاموش کن"):
        await db.set_setting(chat.id, "chat_enabled", False)
        await update.message.reply_text("✅ چت در گروه غیرفعال شد.")


async def personality_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    user_id = update.effective_user.id
    text = (update.message.text or "").split()
    if len(text) < 2:
        cur = await db.get_user_lang(user_id) or "friendly"
        await update.message.reply_text(
            f"🎭 شخصیت فعلی: <b>{cur}</b>\n\n"
            f"شخصیت‌های موجود:\n"
            f"• <code>friendly</code> — دوستانه و صمیمی\n"
            f"• <code>formal</code> — رسمی و محترمانه\n"
            f"• <code>funny</code> — بامزه و شوخ\n"
            f"• <code>poet</code> — شاعرانه و ادبی\n"
            f"• <code>sarcastic</code> — طنز تلخ\n"
            f"• <code>wise</code> — حکیمانه\n"
            f"• <code>romantic</code> — عاشقانه 💕\n"
            f"• <code>motivational</code> — انگیزشی 💪\n\n"
            f"تغییر: <code>personality romantic</code> یا <code>شخصیت عاشقانه</code>",
            parse_mode=ParseMode.HTML,
        )
        return
    arg = text[1].lower()
    pers_map = {
        "friendly": "friendly", "formal": "formal", "funny": "funny",
        "poet": "poet", "sarcastic": "sarcastic", "wise": "wise",
        "romantic": "romantic", "motivational": "motivational",
        "دوستانه": "friendly", "رسمی": "formal", "شوخ": "funny",
        "شاعرانه": "poet", "طنز": "sarcastic", "حکیمانه": "wise",
        "عاشقانه": "romantic", "رمانتیک": "romantic", "عشقولانه": "romantic",
        "انگیزشی": "motivational", "انرژی": "motivational", "مثبت": "motivational",
    }
    personality = pers_map.get(arg)
    if not personality:
        await update.message.reply_text(f"❌ نامعتبر. یکی از: {', '.join(PERSONALITIES)}")
        return
    await db.set_user_lang(user_id, personality)
    names = {"friendly": "دوستانه 🥰", "formal": "رسمی 👔", "funny": "شوخ 😄", "poet": "شاعرانه 🌹", "sarcastic": "طنز 😏", "wise": "حکیمانه 📖", "romantic": "عاشقانه 💕", "motivational": "انگیزشی 💪"}
    await update.message.reply_text(f"🎭 شخصیت شما به <b>{names.get(personality, personality)}</b> تغییر کرد!", parse_mode=ParseMode.HTML)


async def help_cmd(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    name = _get_name(update.effective_user)
    await update.message.reply_text(
        f"💬 <b>چت با بابات (نسخه ۳)</b>\n"
        f"━━━━━━━━━━━━━━━\n"
        f"سلام {name}! من می‌تونم باهات حرف بزنم!\n\n"
        f"<b>موضوعات:</b>\n"
        f"• سلام / درود / چطونی / خوبی\n"
        f"• مرسی / ممنونم / جوک / بخندون\n"
        f"• تو کی هستی؟ / چه کارایی بلدی\n"
        f"• ساعت چنده؟ / تاریخ / امروز چندمه\n"
        f"• هوا / غذا / ورزش / فیلم / آهنگ\n"
        f"• سفر / خرید / برنامه‌نویسی\n"
        f"• کریپتو / بیت‌کوین / ارز دیجیتال\n"
        f"• سلامتی / دکتر / رژیم / ورزش\n"
        f"• زندگی / خدا / خانواده / دوست\n"
        f"• شب بخیر / صبح بخیر / خداحافظ\n"
        f"• 2+2 (محاسبه ریاضی)\n\n"
        f"<b>شخصیت‌ها:</b>\n"
        f"friendly, formal, funny, poet, sarcastic, wise\n"
        f"romantic 💕 | motivational 💪 (جدید!)\n\n"
        f"<b>دستورات:</b>\n"
        f"• <code>personality [نوع]</code> — تغییر شخصیت\n"
        f"• <code>chat on/off</code> — فعال/غیرفعال در گروه\n"
        f"• <code>/ai [سوال]</code> — سوال از هوش مصنوعی",
        parse_mode=ParseMode.HTML,
    )


async def on_chat_message(update: Update, context: ContextTypes.DEFAULT_TYPE) -> bool:
    if not update.message or not update.message.text:
        return False
    chat = update.effective_chat
    if not chat:
        return False
    if chat.type == "private":
        user_id = update.effective_user.id
        pers = await db.get_user_lang(user_id) or "friendly"
        return await _respond(update, context, pers)
    if chat.type in ("group", "supergroup"):
        enabled = bool(await db.get_setting(chat.id, "chat_enabled", False))
        if not enabled:
            return False
        bot_username = context.bot.username or ""
        text = update.message.text or ""
        is_reply = (
            update.message.reply_to_message
            and update.message.reply_to_message.from_user
            and update.message.reply_to_message.from_user.id == context.bot.id
        )
        is_mentioned = f"@{bot_username}" in text if bot_username else False
        if not (is_reply or is_mentioned):
            return False
        pers = "friendly"
        return await _respond(update, context, pers)
    return False


def register(app) -> None:
    register_mixed(
        app,
        {
            "personality": personality_cmd,
            "chat": chat_toggle_cmd,
            "botpersonality": personality_cmd,
        },
        {
            "شخصیت": personality_cmd,
            "شخصیت ربات": personality_cmd,
            "تغییر شخصیت": personality_cmd,
            "چت": chat_toggle_cmd,
            "چت هوشمند": chat_toggle_cmd,
            "گفتگو": chat_toggle_cmd,
            "فعال کردن چت": chat_toggle_cmd,
            "غیرفعال کردن چت": chat_toggle_cmd,
        },
    )
    app.add_handler(
        __import__("telegram.ext", fromlist=["CommandHandler"]).CommandHandler("chathelp", help_cmd)
    )
