Использование asyncHttpRequest вместо requests.get

saradaken

Участник
Автор темы
48
6
Версия MoonLoader
Другое
Hi, I have a question why when I switch to asyncHttpRequest instead of requests.get it doesn't do any translation or am I doing something wrong?
Здравствуйте, у меня вопрос, почему я перешел на asyncHttpRequest и вообще нет перевода, или я что-то не так сделал?
I try to use this because it reduces the game from freezing.
Я стараюсь использовать это, потому что это снижает зависание игры.

Lua:
local effil = require 'effil'
function asyncHttpRequest(method, url, args, resolve, reject)
    local request_thread = effil.thread(function (method, url, args)
       local requests = require 'requests'
       local result, response = pcall(requests.request, method, url, args)
       if result then
          response.json, response.xml = nil, nil
          return true, response
       else
          return false, response
       end
    end)(method, url, args)
    if not resolve then resolve = function() end end
    if not reject then reject = function() end end
    lua_thread.create(function()
       local runner = request_thread
       while true do
          local status, err = runner:status()
          if not err then
             if status == 'completed' then
                local result, response = runner:get()
                if result then
                   resolve(response)
                else
                   reject(response)
                end
                return
             elseif status == 'canceled' then
                return reject(status)
             end
          else
             return reject(err)
          end
          wait(0)
       end
    end)
end


function translate(text, back, callback)
    if type(callback) ~= "function" then
        print("Error: Callback function is nil!")
        return
    end

    if translatedCache[text] then
        return callback(translatedCache[text])
    end

    local lib, requests = pcall(require, "requests")
    if lib then
        local sendtext = toSendGet(text)
        local ilang1, ilang2 = getlang(back)
        local url = "https://script.google.com/macros/s/AKfycbxslVceRG2DSUHR3Jlpt69_0TXkzCU3weD2ZRK7JQXyhQYYA0bcekZ5hIqXOtwCOfoz/exec?q="..sendtext.."&source="..ilang1.."&target="..ilang2
        local headers = {["user-agent"] = "Mozilla/5.0"}

        
        asyncHttpRequest("GET", url, {headers = headers}, function(responce)
            if responce.status_code == 200 then
                local resultText = responce.text
                local translatedText = resultText:match('HREF="(.+)"')
                translatedText = translatedText:gsub('amp;', '')

                asyncHttpRequest("GET", translatedText, {headers = headers}, function(finalResponse)
                    local translatedResult = u8:decode(finalResponse.text)

                 
                    translatedCache[text] = translatedResult
                    saveCache()

                    callback(translatedResult)
                end, function(err)
                    print("Error in second request:", err)
                    callback(false)
                end)
            else
                print("Failed to load the result!")
                callback(false)
            end
        end, function(err)
            print("HTTP request failed:", err)
            callback(false)
        end)
    else
        print('The "requests" library is missing!')
        callback(false)
    end
end