<filename>MineQuest.py
from pygtail import Pygtail
import sys
import time
import keyboard
import urllib.parse
import random
import requests

vers = 0.1

def lastLine():
    stq = ""
    for line in Pygtail("C:\.lemoncraft\logs\latest.log"):
        stq = line
    return(stq)
answ = [
    ["Какие мобы охраняют морскую крепость в Майнкрафте?", ["Стражи"]],
    ["Что выпадает из Нотча, если вы убьете его в сетевой игре, помимо его инвентаря?", ["Яблоко"]],
    ["Какого цвета крипер?", ["Зеленый"]],
    ["Сколько стеклянных блоков требуется, чтобы сделать 16 стеклянных панелей?", ["6", "Шесть"]],
    ["Кого боится крипер?", ["Кот"]],
    ["Вы можете красить овец?", ["Да"]],
    ["Как называется первый тип дерева?", ["Дуб"]],
    ["К какому типу игры относится Minecraft?", ["Песочница"]],
    ["Какого цвета эндермен?", ["Черного"]],
    ["Чей звук использовал c418 для Гаста?", ["Кота"]],
    ["Что заменяет траву на грибных островах?", ["Мицелий"]],
    ["Какой моб взрываетя?", ["Крипер"]],
    ["Что боится эндермен?", ["Воды"]],
    ["Сколько здоровья у курицы", ["4", "Четыре"]],
    ["Что приручает волка?", ["Кость"]],
    ["Сколько минут растёт курица?", ["20", "Двадцать"]],
    ["На каком уровне вы можете найти алмазы?", ["14", "13", "11", "14"]],
    ["Какой ID травы?", ["2", "Два"]],
    ["Что Minecraft игроки (в одиночной игре) используют для ускорения ночи?", ["Кровать"]],
    ["Какой моб взрывается?", ["Крипер"]],
    ["Какую часть тела Нотча побрил на благотворительность?", ["Бороду"]],
    ["Название мифического персонажа в Minecraft?", ["Херобрин"]],
    ["В каком году появился Minecraft?", ["2009"]],
    ["Имя одного из двух боссов", ["Иссушитель"]],
    ["Что выпадет, если убить ведьму в тот момент, когда она пьёт своё зелье?", ["Зелье"]],
    ["Сколько ступеней карьеры у жителя деревни? (развитие)", ["10", "Десять"]],
    ["Какой самый крепкий материал для брони?", ["Алмаз"]],
    ['Как называют серверы, размещенные в Mojang?', ['Realms']],
    ['Какой инструмент используется для подготовки почвы для посевов?', ['Мотыга']],
    ['Сколько видов мобов горит на солнце?', ['Два', "2"]],
    ['Сколько здоровья у коровы?', ['10', 'Десять']],
    ['Какой блок добывается только алмазной киркой?', ['Обсидиан']],
    ['Можно ли продавать предметы ниже минимальной стоимости?', ['Нет']],
    ['Сколько досок требуется для создания верстака?', ['4', 'Четыре']],
    ['Каков размер одного блока в Minecraft?', ['Метр']],
    ['В какой блоке расплавляется руда?', ['Печка']],
    ['Какой блок используется для создания мобов?', ['Спавнер']],
    ['Сколько есть видов шерсти?', ['16']],
    ['Название музыкального исполнителя minecraft?', 'c418'],
    ['Какой единственный блок, который нельзя уничтожить, если не взорвать?', ['Обсидиан']],
    ['Что приручает оцелота?', ['Сырая рыба']],
    ['Какого цвета гаст?', ['Белый']],
    ['Пауки падают?', ['Нет']],
    ['Как зовут Нотча?', ['Маркус']],
    ['Что добавляется к поршням, чтобы сделать их липкими поршнями?', ['Слизь']],
    ['Сколько разных цветов шерсти?', ['16', 'Шестнадцать']],
    ['Какая валюта у сельского жителя?', ['Измруд']],
    ['Какое имя нового персонажа добавили в версии 1.8 на ПК?', ['Алекс', 'Alex']],
    ['Сколько игровых режимов есть в minecraft?', ['4', 'Четыре']],
    ['Какая самая редкая руда в игре?', ['Изумруд']],
    ['Высота уровня моря в блоках?', '63'],
    ['Сколько раз можно укусить торт?', ['7']],
    ['Какой ID блока травы?', ['2']],
    ['Сколько миров есть в Minecraft?', ['3']],
    ['Как называется сервер, на катором вы играете сейчас?', ['SpaceTech']],
    ['В кого превращается свинья, когда её поражает молния?', ['Зомбифицированного пиглин']],
    ['В кого превращается крипер, когда его поражает молния?', ['Заряженный крипер']],
    ['Какой блок, сделанный из материалов из ада, белый?', ['Кварц']]
]
def openChatAndWrite(str):
    time.sleep(0.1)
    keyboard.press("t")
    keyboard.release("t")
    time.sleep(0.1)
    keyboard.write(str)
    time.sleep(0.1)
    keyboard.press("enter")
    keyboard.release("enter")
def notificationInTg(id, text):
    requests.get("https://api.telegram.org/bot1730435818:AAHUfm7njm-s1OHxXwZKXuguUwiZNpM4JsI/sendMessage?chat_id="+str(id)+"&text="+urllib.parse.quote(("[!] EROR: \""+text+"\"").encode('utf-8')))
def isInTab(tab, str):
    an = False
    for i in answ:
        if i[0] in str:
            an = True
    return an
def getAnswer(stri):
    an = ""
    for i in answ:
        if bytes(stri,"utf-8") in bytes(i[0],"utf-8"):
            an = i[1][random.randint(0,len(i[1])-1)]
    return an
def update(stri):
    strSplit = stri.split(" ")
    if len(strSplit)>4:
        if "[Викторина]" in strSplit[4]:
            quest = stri.split(" [Викторина] ")[1]
            print('ok'+quest)
            time.sleep(1.3)
            if isInTab(answ, quest):
                print(getAnswer(quest))
                openChatAndWrite(getAnswer(quest))
            elif "Сколько" in quest and 'будет' in quest:
                primer = quest.split(' ')[2].replace("?", "")
                summ = str(eval(primer))
                openChatAndWrite(summ)
                print(summ)
            elif "победил" not in quest and "за" not in quest:
                print('Send EROR!')
                notificationInTg(983035043, quest)
                #notificationInTg(1094838851, quest)
                #requests.get("https://api.telegram.org/bot1730435818:AAHUfm7njm-s1OHxXwZKXuguUwiZNpM4JsI/sendMessage?chat_id=983035043&text="+urllib.parse.quote(stri.encode('utf-8')))
def checkAndUpdateFiles():
    if vers < getVersion():
        print("Script is outdated! Wait...")
        
def getVersion():
    return float(requests.get("https://raw.githubusercontent.com/GovnocodeLua/LemonQuest/main/actual-vers.cfg").text.split(" ")[1])
checkAndUpdateFiles()
#update("[16:26:15] [Client thread/INFO]: [CHAT] [Викторина] Что приручает оцелота?")

while True:
    line = lastLine()
    if line != "":
        print(line)
        update(line)
    time.sleep(0.1)

