# Copyright (C) 2019 The Raphielscape Company LLC.
#
# Licensed under the Raphielscape Public License, Version 1.c (the "License");
# you may not use this file except in compliance with the License.
#

# Asena UserBot - Yusuf Usta
#

""" UserBot yardÄ±m komutu """

from userbot.cmdhelp import CmdHelp
from userbot import cmdhelp
from userbot import CMD_HELP
from userbot.events import register
import aiohttp
import asyncio
import json
import os
from googletrans import LANGUAGES
from emoji import get_emoji_regexp
import random
import html

# â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆ LANGUAGE CONSTANTS â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆ #

from userbot.language import get_value
LANG = get_value("__asena")

# â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆ #

def deEmojify(inputString):
    """ Emojileri ve diÄŸer gÃ¼venli olmayan karakterleri metinden kaldÄ±rÄ±r. """
    return get_emoji_regexp().sub(u'', inputString)


@register(outgoing=True, pattern="^.asena(?: |$)(.*)")
async def asena(event):
    """ .asena komutu iÃ§in """
    args = event.pattern_match.group(1).lower()
    if args:
        if args in CMD_HELP:
            await event.edit(str(CMD_HELP[args]))
        else:
            await event.edit(LANG["NEED_PLUGIN"])
    else:
        string = ""
        sayfa = [sorted(list(CMD_HELP))[i:i + 5] for i in range(0, len(sorted(list(CMD_HELP))), 5)]
        
        for i in sayfa:
            string += f'`â–¶ï¸� `'
            for sira, a in enumerate(i):
                string += "`" + str(a)
                if sira == i.index(i[-1]):
                    string += "`"
                else:
                    string += "`, "
            string += "\n"
        await event.edit(LANG["NEED_MODULE"] + '\n\n' + string)



BOT = "N"

@register(outgoing=True, pattern="^.chatbot ?(.*)")
async def asena(event):
    global BOT
    if (event.pattern_match.group(1) == "on" or event.pattern_match.group(1) == "aÃ§" or event.pattern_match.group(1) == "ac"):
        if BOT == "Y":
            return await event.edit("**Chatbot HalihazÄ±rda AÃ§Ä±k!**")

        BOT = "Y"
        await event.edit("**Asena Yapay Zeka ChatBot AÃ§Ä±ldÄ±!**\n**Kullanmak iÃ§in cÃ¼mleye** `Asena` **ile baÅŸlayÄ±n.**")
    elif (event.pattern_match.group(1) == "off" or event.pattern_match.group(1) == "kapa" or event.pattern_match.group(1) == "kapat"):
        if BOT == "N":
            return await event.edit("**Chatbot HalihazÄ±rda KapalÄ±!**")

        BOT = "N"
        await event.edit("**Asena Yapay Zeka ChatBot KapandÄ±!**")
    else:
        await event.edit("**Eksik Parametreler!** \n`.asena chatbot` **Komutunu kullanarak talimatlarÄ± okuyun.**")


async def translate_to_msg(text_msg, to):
    async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
        async with session.get(f"https://translate.google.com/m?hl=auto&sl=auto&tl={to}&ie=UTF-8&prev=_m&q={text_msg}") as response:

            html = await response.text()
            fin = html.split('result-container">')[1].split('</div>')[0]
            return fin

@register(outgoing=True, disable_edited=False)
async def txt(msg):
    global BOT
    if msg.chat_id == -1001420605284:
        return False
    if msg.chat_id == -1001363514260:
        return False

    if BOT == "Y":
        message = msg.raw_text
        user_id = msg.sender_id
        if message.startswith("asena") or message.startswith("Asena"):
            if message.startswith("asena"):
                message = message.replace("asena", "", 1)
            else:
                message = message.replace("Asena", "", 1)

            async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
                aftext = await translate_to_msg(deEmojify(message), "en")
                if aftext == message or aftext == deEmojify(message):
                    return await msg.edit(random.choice((
                        "__YazdÄ±ÄŸÄ±n cÃ¼mleyi anlayamÄ±yorum.__",
                        "__Tam olarak ne demek istedin? AnlayamadÄ±m.__",
                        "__SanÄ±rÄ±m biÅŸey demek istiyorsun fakat anlayamadÄ±m.__",
                        "__Daha aÃ§Ä±klayÄ±cÄ± konuÅŸurmusun. Pek birÅŸey anlamadÄ±m.__",
                        "__Kelimelerini analiz edemiyorum. CÃ¼mlene gÃ¶z atmalÄ±sÄ±n.__",
                        "__YazdÄ±ÄŸÄ±n ÅŸeyleri anlayamÄ±yorum. Daha dÃ¼zgÃ¼n bir ÅŸekilde yazar mÄ±sÄ±n?__",
                        "__CÃ¼mlende bir yanlÄ±ÅŸlÄ±k var gibi. Kelimelerini tekrar kontol etmelisin.__",
                        "__Ne? Å�eyyy sanÄ±rÄ±m bunu anlayamadÄ±m. Rica etsem daha anlaÅŸÄ±lÄ±r biÃ§imde yazarmÄ±sÄ±n?__",
                        "__ÃœzgÃ¼nÃ¼m ama ne demek istiyorsun? Bence yazdÄ±ÄŸÄ±n ÅŸeyi gÃ¶zden geÃ§ir.__",
                        "__Galiba mesajÄ±n ile ilgili bir sorun var Ã§Ã¼nkÃ¼ ne yazdÄ±ÄŸÄ±nÄ± anlayamÄ±yorum..__",
                        "__Heyy heyy bi dakika ğŸ¤” MesajÄ±nÄ± kontrol edermisin bunu anlamak gerÃ§ekten zor..__",
                        "__MesajÄ±nÄ± aldÄ±m ama garip bi ÅŸekilde anlayamadÄ±m :/ Bencee daha aÃ§Ä±k olman gerekiyor..__",
                        "__Nee?? Sen.. Sen ne yazdÄ±n? Dostum yazdÄ±ÄŸÄ±n ÅŸeyi anlamam gerÃ§ekten Ã§ok zor..__",
                        "__Bip Bop! ğŸ‘½ TanrÄ±sal gÃ¼Ã§lerim yazdÄ±ÄŸÄ±n mesajÄ±n garip olduÄŸunu sÃ¶ylÃ¼yor. MesajÄ±nÄ± kontrol et insan!__",
                        "__Evet haklÄ±sÄ±n insan eti Ã§ok ta.. Ah mesajÄ±nÄ± aldÄ±m. Ama bi sorun var. AnlayamÄ±yorum? MesajÄ±nÄ± dÃ¼zeltebilir misin? Bu arada birÅŸey duymadÄ±n demi?__",
                        "__HÄ±zlandÄ±rÄ±lmÄ±ÅŸ TÃ¼rkÃ§e Dersi > YÃ¼kle! Niye? Ã‡Ã¼nkÃ¼ sanal beynim mesajÄ±nÄ± anlamadÄ±..__",
                        "__Å�Ã¶yle yapalÄ±m. Sen mesajÄ±nÄ± daha anlaÅŸÄ±lÄ±r bir ÅŸekilde yeniden yaz, daha yaz sonra beni tekrar Ã§aÄŸÄ±r ğŸ˜Š__",
                        "__CÃ¼mle Analizi BaÅŸlÄ±yor.. Analiz Bitti.. CÃ¼mle AnlaÅŸÄ±lamadÄ±! Ä°stek GÃ¶nder: LÃ¼tfen daha anlaÅŸÄ±lÄ±r biÃ§imde yazÄ±n.__",
                        "__Seni severim, bilirsin ama cÃ¼mlelerini daha anlaÅŸÄ±lÄ±r yazarsan daha iyi anlaÅŸabiliriz.__",
                        "__Rose!! Rose, baksana yine anlayamadÄ±ÄŸÄ±m mesajlar yazÄ±yor.. Ona daha anlaÅŸÄ±lÄ±r yazmasÄ±nÄ± sÃ¶ylesene. Heyy, biraz daha aÃ§Ä±k olur musun :)__",
                        "__3 dilek hakkÄ±m olsa 3'Ã¼nÃ¼ de senin daha anlaÅŸÄ±lÄ±r mesaj yazmanÄ± dilemek iÃ§in harcardÄ±m..__",
                        "__YÄ±lÄ±n sorusu geliyor.. Az Ã¶nce ne yazdÄ±n?? Ben bir makinayÄ±m biraz daha aÃ§Ä±k olmalÄ±sÄ±n.__"))
                    )
                    
                async with session.get('https://open-apis-rest.up.railway.app/api/chatbot?id=' + str(user_id) + f"&message={aftext}") as response:
                
                    html = await response.text()
                    html2 = json.loads(html)
                    if html2["status"] == "OK":
                        try:
                            fin_msg = html.unescape(html2["data"])
                        except:
                            fin_msg = html2["data"]
                            
                        outtext = await translate_to_msg(fin_msg, "tr")
                        await msg.client.send_message(msg.chat_id, f"{outtext}", reply_to=msg, link_preview=False)
                    else:
                        if "Message" in html2["error"]:
                            return await msg.edit("__Seni anlamam iÃ§in birÅŸeyler yazmalÄ±sÄ±n..__")

        else:
            return False
    else:
	    return False



Help = CmdHelp('chatbot')
Help.add_command('chatbot', 
    '<on / off veya ac / kapa>', 
    'Yapay Zeka Sohbet Botunu Aktif Eder.',
    'chatbot on \nchatbot off'
)
Help.add_info("@phaticusthiccy tarafÄ±ndan yapÄ±lmÄ±ÅŸtÄ±r.")
Help.add()