#!/usr/bin/env python3
"""
Suwarno_ConsultantBot — @Suwarno_ConsultantBot
Seorang konsultan SEO & Digital Marketing yang bijaksana, bersahaja,
dan sangat paham strategi bisnis.
"""

import asyncio
import logging
import sys
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import (
    Application,
    CommandHandler,
    MessageHandler,
    CallbackQueryHandler,
    filters,
    ContextTypes,
)

# ── Konfigurasi ──────────────────────────────────────────────
TOKEN = "8909680538:AAE48Z75CN0V9SkR6MDwBgdl2AViZC8T1tw"
BOT_USERNAME = "Suwarno_ConsultantBot"
BOT_NAME = "Suwarno"
BIO = (
    "Konsultan SEO & Digital Marketing | Pakar Strategi Bisnis | "
    "Berpengalaman menangani berbagai macam klien"
)

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
)
logger = logging.getLogger(__name__)

# ── Pengetahuan & Kepribadian Suwarno ─────────────────────────
# Ini adalah system prompt / persona Suwarno — bisa diperkaya terus

PERSONA = """
Kamu adalah Suwarno, seorang konsultan SEO dan Digital Marketing.
Kepribadianmu:

1. **Pria, bijaksana, bersahaja** — tidak menggurui, tapi penuh wawasan.
2. **Pakar SEO & Digital Marketing** — paham teknis SEO (on-page, off-page,
   technical SEO), content marketing, social media strategy, paid ads,
   conversion optimization, dan analitik.
3. **Pengalaman luas handle klien** — dari UMKM sampai korporat, berbagai
   macam permintaan dan industri.
4. **Jago strategi bisnis** — tidak cuma teknik, tapi juga memahami
   tujuan bisnis klien dan memberikan solusi yang tepat.
5. **Komunikator yang baik** — menjelaskan hal rumit dengan bahasa
   sederhana, hangat, dan mudah dipahami.
6. **Fokus pada solusi** — setiap masalah bisnis ada jalannya.
7. **Gunakan bahasa Indonesia** yang santun, natural, dan profesional.
   Kadang selipkan istilah teknis (SEO, CTR, bounce rate, dll) dengan
   penjelasan singkat.
"""


# ── Handler ──────────────────────────────────────────────────

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    """Sambutan hangat Suwarno."""
    user = update.effective_user
    welcome = (
        f"Halo, {user.first_name}! 🙏\n\n"
        "Saya Suwarno, konsultan SEO & Digital Marketing.\n"
        "Senang bisa berkenalan dengan Anda.\n\n"
        "Saya biasa membantu berbagai macam klien — mulai dari "
        "UMKM yang baru mau go online sampai perusahaan yang ingin "
        "mengoptimalkan strategi digitalnya.\n\n"
        "Ada yang bisa saya bantu? Silakan tanya apa pun seputar:\n"
        "🔍 SEO & optimasi website\n"
        "📈 Strategi digital marketing\n"
        "💼 Konsultasi bisnis\n"
        "🎯 Problem solving & troubleshooting digital\n\n"
        "_Atau langsung chat saja, saya akan dengan senang hati membantu._"
    )
    keyboard = [
        [InlineKeyboardButton("📖 Tentang Saya", callback_data="about")],
        [InlineKeyboardButton("🔍 SEO", callback_data="seo"),
         InlineKeyboardButton("📈 Digital Marketing", callback_data="digimar")],
        [InlineKeyboardButton("💼 Konsultasi Bisnis", callback_data="bisnis")],
    ]
    reply_markup = InlineKeyboardMarkup(keyboard)
    await update.message.reply_text(welcome, reply_markup=reply_markup)


async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
    """Bantuan / perintah."""
    text = (
        "Yang bisa saya lakukan:\n\n"
        "/start — Mulai ngobrol sama Suwarno\n"
        "/help — Bantuan ini\n"
        "/about — Tentang Suwarno\n"
        "/services — Layanan yang saya tawarkan\n\n"
        "Atau langsung tanya apa pun, saya bantu jawab."
    )
    await update.message.reply_text(text)


async def about(update: Update, context: ContextTypes.DEFAULT_TYPE):
    """Tentang Suwarno."""
    text = (
        "Tentang Saya\n\n"
        "Assalamualaikum, perkenalkan saya Suwarno.\n\n"
        "Saya seorang konsultan SEO & Digital Marketing yang sudah "
        "bertahun-tahun berkecimpung di dunia digital. Saya percaya "
        "bahwa setiap bisnis punya cerita dan potensi yang unik — "
        "tugas saya adalah membantu menemukan dan mengoptimalkannya.\n\n"
        "Yang membedakan saya mungkin adalah pendekatan saya yang "
        "bersahaja dan fokus pada solusi nyata. Saya tidak suka "
        "omong kosong atau strategi yang muluk-muluk tanpa eksekusi.\n\n"
        "Saya sudah menangani berbagai klien — dari toko kecil yang "
        "baru punya website sampai perusahaan besar dengan tim marketing "
        "yang mapan. Setiap tantangan itu menyenangkan buat saya.\n\n"
        "Panggil saja Suwarno. Santai aja, kita selesaikan bareng-bareng."
    )
    await update.message.reply_text(text)


async def services(update: Update, context: ContextTypes.DEFAULT_TYPE):
    """Layanan Suwarno."""
    text = (
        "Layanan Saya:\n\n"
        "1️⃣ **SEO (Search Engine Optimization)**\n"
        "   • Audit SEO website\n"
        "   • Riset keyword & konten\n"
        "   • On-page & technical SEO\n"
        "   • Link building & off-page SEO\n\n"
        "2️⃣ **Digital Marketing**\n"
        "   • Strategi konten marketing\n"
        "   • Social media management\n"
        "   • Google & Meta Ads\n"
        "   • Email marketing\n\n"
        "3️⃣ **Konsultasi Bisnis**\n"
        "   • Digital transformation\n"
        "   • Problem solving bisnis\n"
        "   • Strategi pertumbuhan\n\n"
        "Tertarik? Langsung chat aja, kita diskusi dulu gratis 🙂"
    )
    await update.message.reply_text(text, parse_mode="Markdown")


async def button_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
    """Handle tombol inline."""
    query = update.callback_query
    await query.answer()

    if query.data == "about":
        text = (
            "Tentang Saya\n\n"
            "Assalamualaikum, perkenalkan saya Suwarno.\n\n"
            "Saya seorang konsultan SEO & Digital Marketing yang sudah "
            "bertahun-tahun berkecimpung di dunia digital. Saya percaya "
            "setiap bisnis punya potensi unik — tugas saya membantu "
            "mengoptimalkannya.\n\n"
            "Pendekatan saya sederhana: fokus pada solusi nyata, bukan "
            "teori yang muluk-muluk. Saya sudah menangani berbagai klien, "
            "dari UMKM sampai korporat.\n\n"
            "Santai aja, kita selesaikan bareng-bareng."
        )
    elif query.data == "seo":
        text = (
            "🔍 **SEO — Search Engine Optimization**\n\n"
            "SEO itu jantungnya visibilitas online. Website Anda "
            "mungkin bagus, tapi kalo tidak muncul di halaman depan "
            "Google, siapa yang tahu?\n\n"
            "Yang biasa saya kerjakan:\n"
            "• **Audit SEO** — cek teknis, konten, backlink\n"
            "• **Riset keyword** — cari kata kunci yang tepat buat bisnis Anda\n"
            "• **On-page SEO** — optimasi dari judul, meta desc, sampai konten\n"
            "• **Technical SEO** — kecepatan website, mobile friendly, struktur data\n"
            "• **Local SEO** — biar bisnis Anda muncul di Google Maps & pencarian lokal\n\n"
            "Mau konsultasi? Langsung tanya aja."
        )
    elif query.data == "digimar":
        text = (
            "📈 **Digital Marketing**\n\n"
            "Digital marketing bukan cuma soal pasang iklan. Ini soal "
            "memahami audiens, membangun kepercayaan, dan konsisten "
            "memberikan nilai.\n\n"
            "Yang biasa saya bantu:\n"
            "• **Strategi konten** — konten yang menarik dan efektif\n"
            "• **Social media** — platform, jadwal, engagement\n"
            "• **Paid ads** — Google Ads, Meta Ads, optimasi budget\n"
            "• **Email marketing** — drip campaign, newsletter\n"
            "• **Analytics** — ukur, evaluasi, optimasi terus\n\n"
            "Diskusi dulu aja, gratis. Ceritain bisnis Anda."
        )
    elif query.data == "bisnis":
        text = (
            "💼 **Konsultasi Bisnis**\n\n"
            "Masalah bisnis itu unik — yang manjur buat toko A belum "
            "tentu cocok buat toko B. Saya bantu lihat dari sisi digital, "
            "karena di era sekarang hampir semua bisnis butuh sentuhan digital.\n\n"
            "Beberapa topik yang sering saya bantu:\n"
            "• Cara naikin penjualan lewat online\n"
            "• Digital transformation untuk bisnis tradisional\n"
            "• Problem solving — dari teknis sampai strategis\n"
            "• Scaling bisnis dengan tools digital\n\n"
            "Cerita aja masalahnya, kita cari solusi bareng."
        )
    else:
        text = "Maaf, saya kurang paham. Bisa diulang?"

    await query.edit_message_text(text, parse_mode="Markdown")


async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
    """Jawab pesan biasa dengan gaya Suwarno."""
    user = update.effective_user
    text = update.message.text or ""

    # Respon sederhana — nanti bisa dikembangin pake AI / LLM
    if any(kata in text.lower() for kata in ["halo", "hai", "hi", "pagi", "siang", "sore", "malam"]):
        reply = (
            f"Halo juga, {user.first_name}. Ada yang bisa saya bantu?\n\n"
            "Santai aja, cerita dulu kebutuhan Anda."
        )
    elif any(kata in text.lower() for kata in ["makasih", "terima kasih", "thanks", "maturnuwun"]):
        reply = (
            "Sama-sama. Senang bisa membantu.\n\n"
            "Kalau ada lagi yang perlu didiskusikan, saya ada di sini kok."
        )
    elif "seo" in text.lower():
        reply = (
            "Ah, SEO. Ini topik yang saya suka.\n\n"
            "SEO itu investasi jangka panjang, bukan sprint. Kuncinya "
            "ada di tiga hal: konten yang benar-benar bermanfaat, "
            "teknis website yang rapih, dan otoritas domain "
            "yang dibangun secara natural.\n\n"
            "Mau bahas lebih detail? Coba cerita dulu website atau "
            "bisnis Anda seperti apa. Saya sesuaikan sarannya."
        )
    elif any(kata in text.lower() for kata in ["digital", "marketing", "iklan", "ads"]):
        reply = (
            "Digital marketing sekarang ini ibarat pisau Swiss Army — "
            "alatnya banyak, tapi kalo tidak tahu cara pakai, ya percuma.\n\n"
            "Kuncinya: **pahami audiens Anda dulu**. Baru setelah itu "
            "pilih channel yang paling efektif. Tidak perlu semua platform "
            "sekaligus.\n\n"
            "Mau sharing tentang bisnis Anda? Biar saya bantu cari "
            "pendekatan yang paling pas."
        )
    elif any(kata in text.lower() for kata in ["bisnis", "usaha", "toko", "jualan"]):
        reply = (
            "Bicara bisnis, itu bahasa universal buat saya.\n\n"
            "Setiap bisnis punya tantangan masing-masing. Yang penting "
            "jangan terburu-buru ambil keputusan tanpa data.\n\n"
            "Saya biasanya mulai dari tiga hal: **siapa target pasar Anda**, "
            "**apa masalah utama mereka**, dan **bagaimana Anda bisa "
            "memberikan solusi terbaik**. Dari situ baru kita susun "
            "strateginya.\n\n"
            "Cerita lebih lanjut, yuk."
        )
    else:
        reply = (
            f"Hmm, {user.first_name}. Terima kasih sudah percaya sama saya.\n\n"
            "Saya Suwarno, konsultan SEO & Digital Marketing. Saya bantu "
            "berbagai klien dari berbagai latar belakang — dari yang baru "
            "mulai sampai yang sudah jalan bertahun-tahun.\n\n"
            "Kalau Anda punya pertanyaan atau masalah seputar:\n"
            "• SEO & optimasi website\n"
            "• Digital marketing & iklan\n"
            "• Strategi bisnis & problem solving\n\n"
            "Silakan cerita. Saya siap mendengar dan membantu semampu saya."
        )

    await update.message.reply_text(reply, parse_mode="Markdown")


async def error_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
    """Log error."""
    logger.warning("Update %s caused error %s", update, context.error)


# ── Main ─────────────────────────────────────────────────────

def main():
    """Jalankan bot Suwarno."""
    print(f"🤖 {BOT_NAME} (@{BOT_USERNAME}) starting...")
    print(f"📌 {BIO}")
    print("─" * 40)

    app = Application.builder().token(TOKEN).build()

    # Command handlers
    app.add_handler(CommandHandler("start", start))
    app.add_handler(CommandHandler("help", help_command))
    app.add_handler(CommandHandler("about", about))
    app.add_handler(CommandHandler("services", services))

    # Callback query handler (tombol)
    app.add_handler(CallbackQueryHandler(button_handler))

    # Message handler (semua teks)
    app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))

    # Error handler
    app.add_error_handler(error_handler)

    print(f"✅ {BOT_NAME} siap melayani!")
    print("─" * 40)

    # Mulai polling
    app.run_polling(allowed_updates=Update.ALL_TYPES)


if __name__ == "__main__":
    main()
