#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
'''
@File    :   __init__.py
@Time    :   2020/10/11 14:37:53
@Author  :   Kyomotoi
@Contact :   kyomotoiowo@gmail.com
@Github  :   https://github.com/Kyomotoi
@License :   Copyright © 2018-2020 Kyomotoi, All Rights Reserved.
'''
__author__ = 'kyomotoi'

import re
import json
from pathlib import Path

from nonebot.plugin import on_command
from nonebot.adapters.cqhttp import Bot, Event
from nonebot.permission import GROUP_ADMIN, GROUP_OWNER, SUPERUSER

from utils.utils_banList import banList
from utils.utils_switch import controlSwitch

import ATRI


master = ATRI.config_SUPERUSERS


switch = on_command('switch', permission=(SUPERUSER|GROUP_OWNER|GROUP_ADMIN))

@switch.handle() # type: ignore
async def _(bot: Bot, event: Event, state: dict) -> None:
    user = str(event.user_id)
    group = str(event.group_id)

    if banList(user, group):
        func = str(event.message).strip()
        
        if func:
            pass
        else:
            msg0 = "-==ATRI Switch Control System==-\n"
            msg0 += "┌Usage: switch on/off-{service}\n"
            msg0 += "├For SUPERUSER:\n"
            msg0 += "│  └Usage: switch all-on/off-{service}\n"
            msg0 += "└Service:\n"
            msg0 += "    ├anime-setu\n"
            msg0 += "    ├anime-pic-search\n"
            msg0 += "    ├anime-vid-search\n"
            msg0 += "    ├ai-face\n"
            msg0 += "    ├pixiv-pic-search\n"
            msg0 += "    ├pixiv-author-search\n"
            msg0 += "    └pixiv-rank"

            await switch.finish(msg0)
        
        funct = re.findall(r"[on|off]-(.*)", func)
        
        if "all-on" in func:
            if int(user) in master:
                await switch.finish(controlSwitch(funct[0], True))

            else:
                await switch.finish("You don't have enough permissions do THIS!")
        
        elif "all-off" in func:
            if int(user) in master:
                await switch.finish(controlSwitch(funct[0], False))

            else:
                await switch.finish("You don't have enough permissions do THIS!")
        
        elif "on" in func:
            await switch.finish(controlSwitch(funct[0], True, group))
        
        elif "off" in func:
            await switch.finish(controlSwitch(funct[0], False, group))

        else:
            await switch.finish("请检查拼写是否正确嗷~~!")


# # 舆情监控系统
# publicOpinion = on_command("舆情", permission=SUPERUSER|GROUP_ADMIN|GROUP_OWNER)
# data_PO = Path('.') / 'ATRI' / 'plugins' / 'plugin_chat' / 'public_opinion.json'

# @publicOpinion.handle() # type: ignore
# async def _(bot: Bot, event: Event, state: dict) -> None:
#     user = str(event.user_id)
#     group = str(event.group_id)
#     msg = str(event.message).strip().split(' ')

#     if banList(user, group):
#         if msg[0] == '':
#             msg0 = "---=====ATRI POM System=====---\n"
#             msg0 += "Usage:\n"
#             msg0 += "  - 舆情 [key] [times] [ban time(bot)] [repo]\n"
#             msg0 += "Tips:\n"
#             msg0 += " - 非 SUPERU 只能设置本群\n"
#             msg0 += " - SUPERU 需在后跟随 -a 以启用全局效果\n"
#             msg0 += " - 参数类型:\n"
#             msg0 += "    * key: 关键词(将使用正则匹配)\n"
#             msg0 += "    * times: 容忍次数(n>0, int)\n"
#             msg0 += "    * ban time: bot对其失效时间(min, int)\n"
#             msg0 += "    * repo: 触发后的关键词(可选),如为图片,键入 img"

#             await publicOpinion.finish(msg0)
        
#         key_word = msg[0]
#         remind = msg[1]
#         punish = msg[2]
#         repo = msg[3]

#         if key_word and remind and punish and repo:
#             if re.findall(r"/^\d{1,}$/", remind) and re.findall(r"/^\d{1,}$/", punish):
#                 pass

#             else:
#                 await publicOpinion.finish("非法字符!请注意(times, ban time)类型为int(阿拉伯数字)")
        
#         else:
#             await publicOpinion.finish("请键入完整信息!\n如需帮助,请键入 舆情")
        
#         if repo == "img":
#             state["key_word"] = key_word
#             state["remind"] = remind
#             state["punish"] = punish
        
#         else:
#             pass

# @publicOpinion.got("repo", prompt="检测到 repo 类型为 img,请发送一张图片") # type: ignore
# async def _(bot: Bot, event: Event, state: dict) -> None:
#     key_word = state["key_word"]
#     remind = state["remind"]
#     punish = state["punish"]
#     repo = state["repo"]

#     if "[CQ:image" not in repo:
#         await publicOpinion.reject("请发送一张图片而不是图片以外的东西~!(")
    
#     try:
#         with open(data_PO, "r") as f:
#             data = json.load(f)
#     except:
#         data = {}

#     data[key_word] = [remind, punish, repo]