from aiogram.utils import executor
from loguru import logger
from aiogram import Bot, Dispatcher, types
from functions import get_audio_messages_func, create_statistic, openai_answer
import json
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import requests
import time

bot = Bot(token="5941118321:AAG0g0keLrlnuH_9U9X6ehpFFAdOX38qeXI")  # создаю объект бота
dp = Dispatcher(bot)  # создаю объект слушателя
logger.remove()  # удаляю стандартный логер
logger.add("logs/logging_log.log", level="INFO")  # создаю логер


@dp.message_handler(commands=['start'])  # обрабатываю команду start
async def start(message: types.Message):
    # получаю имя отправителя
    if message.chat.first_name:
        name = message.chat.first_name
    else:
        name = message.chat.title
    logger.info(f"Группа {name} (ID: {message.chat.id}) запустил бота")  # записываю в логи
    await bot.send_message(message.chat.id, 'Привет! Отправляй голосовое, я расшифрую!')  # отправляю ответное сообщение


@dp.message_handler(commands=['statistic'])
async def statistic(message: types.Message):
    login = "Dmitrium12"
    password = ""
    options = webdriver.ChromeOptions()
    options.add_argument("--headless")
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
    driver.get('https://passport.yandex.ru/auth/')
    time.sleep(1)
    driver.find_element(By.CLASS_NAME, "Button2").click()
    time.sleep(1)
    driver.find_element(By.XPATH, '//*[@id="passp-field-login"]').send_keys(login)
    driver.find_element(By.XPATH, '//*[@id="passp:sign-in"]').click()
    time.sleep(1)
    driver.find_element(By.XPATH, '//*[@id="passp-field-passwd"]').send_keys(password)
    driver.find_element(By.XPATH, '//*[@id="passp:sign-in"]').click()
    time.sleep(5)
    cookies = {"Session_id": [i["value"] for i in driver.get_cookies() if i["name"] == "Session_id"][0]}
    response = requests.get("https://lyceum.yandex.ru/api/notifications?isRead=false&limit=20", cookies=cookies)
    await message.reply(f'У вас {response.json()["unreadCount"]} уведомлений. Прочитайте хоть')


@dp.message_handler(commands=['r'])
async def r(message: types.Message):
    await openai_answer.get_response_to_openai(message, bot)


@dp.message_handler(commands=['r_clear'])
async def r_clear(message: types.Message):
    await openai_answer.clear_db(message)


@dp.message_handler(content_types=['text'])
async def not_work_user(message: types.Message):
    if str(message.from_user.id) == "620318992" and message.text == "Гена, бань его нахуй" and message.reply_to_message:
        with open('not_work_user.json', 'r') as f:
            data = json.load(f)
        data['chat_gpt'].append(message.reply_to_message.from_user.id)
        with open('not_work_user.json', 'w') as f:
            json.dump(data, f, indent=4)
        await message.reply(f"@{message.reply_to_message.from_user.username} "
                            f"вы больше не можете со мной разговаривать")


@dp.message_handler(content_types=['voice', 'video_note', 'video'])  # обрабатываю голосовые сообщения, кружки, видео
async def get_audio_messages(message: types.Message):
    await get_audio_messages_func.get_audio_messages_func(message, logger, bot)  # вызываю функцию


def start_work_bot():  # функция запуска бота
    logger.info("Бот запустился")  # записываю логи
    executor.start_polling(dp, skip_updates=True)  # запускаю pooling без пропуска пропущенных сообщений

