local FormattedToken = "Bot " .. config.discordBotToken
function vRP.DiscordRequest(method, endpoint, jsondata)
local data = nil
PerformHttpRequest("https://discordapp.com/api/"..endpoint, function(errorCode, resultData, resultHeaders)
data = {data=resultData, code=errorCode, headers=resultHeaders}
end, method, #jsondata > 0 and json.encode(jsondata) or "", {["Content-Type"] = "application/json", ["Authorization"] = FormattedToken})
while data == nil do
Citizen.Wait(0)
end
return data
end
function vRP.loadUserDiscordData(source, user_id, cbr)
local callback = false
local function cb(ret)
if not callback then
callback = true
cbr(ret)
end
end
local discordId = nil
for _, id in ipairs(GetPlayerIdentifiers(source)) do
if string.match(id, "discord:") then
discordId = string.gsub(id, "discord:", "")
break
end
end
if discordId then
local result = vRP.DiscordRequest("GET", "users/" .. discordId, {})
local data = json.decode(result.data)
if data then
if data['avatar'] then
vRP.user_tmp_tables[user_id].avatar_hash = data['avatar']
if string.sub(data['avatar'], 1, 2) == "a_" then
vRP.user_tmp_tables[user_id].avatar = "https://cdn.discordapp.com/avatars/" .. discordId .. "/" .. data['avatar'] .. ".gif"
else
vRP.user_tmp_tables[user_id].avatar = "https://cdn.discordapp.com/avatars/" .. discordId .. "/" .. data['avatar'] .. ".png"
end
end
if data['id'] then
vRP.user_tmp_tables[user_id].discord_id = data['id']
end
if data['username'] then
vRP.user_tmp_tables[user_id].discord_username = data['username']
end
if data['discriminator'] then
vRP.user_tmp_tables[user_id].discord_discriminator = data['discriminator']
end
if data['username'] and data['discriminator'] then
vRP.user_tmp_tables[user_id].discord = data['username'] .. "#" .. data['discriminator']
end
end
cb(true)
else
cb(false)
end
Wait(500)
if not callback then
cb(false)
end
end
function vRP.initializeUserData(source, user_id, cbr)
local callback = false
local function cb(ret)
if not callback then
callback = true
cbr(ret)
end
end
vRP.user_tmp_tables[user_id].connected = os.time()
cb(true)
end
-- Complicated spaghet that fetches the users Steam Avatar
local SAK = config.steamApiKey
function vRP.loadUserSteamData(source, user_id, cbr)
local callback = false
local function cb(ret)
if not callback then
callback = true
cbr(ret)
end
end
local function validResponse(text, statusCode)
return (text ~= nil and statusCode ~= nil and tonumber(statusCode) == 200)
end
local steamid = GetPlayerIdentifier(source, 0)
if not steamid then
cb(true)
return true
end
if not string.find(steamid, "steam:") then
cb(true)
return true
end
local steam64 = tonumber(string.gsub(steamid,"steam:", ""),16)
if not steam64 then
cb(true)
return true
end
PerformHttpRequest('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key='..SAK..'&steamids='..steam64..'', function(statusCode, text, headers)
if text then
if validResponse(text, statusCode) then
local info = json.decode(text)
if info['response']['players'][1]['avatarmedium'] then
vRP.user_tmp_tables[user_id].avatar = info['response']['players'][1]['avatarmedium']
end
if info['response']['players'][1]['steamid'] then
vRP.user_tmp_tables[user_id].steamid = info['response']['players'][1]['steamid']
end
if info['response']['players'][1]['profileurl'] then
vRP.user_tmp_tables[user_id].profileurl = info['response']['players'][1]['profileurl']
end
else
end
end
cb(true)
end, 'GET', json.encode({}), { ["Content-Type"] = 'application/json' })
Wait(500)
if not callback then
cb(false)
end
end
function vRP.getAvatar(user_id)
if not vRP.user_tmp_tables[user_id] then return nil end
return vRP.user_tmp_tables[user_id].avatar
end
Comments