148 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
local QBCore = exports['qb-core']:GetCoreObject()
 | 
						|
 | 
						|
local Webhooks = {
 | 
						|
    ['default'] = '',
 | 
						|
    ['testwebhook'] = '',
 | 
						|
    ['playermoney'] = '',
 | 
						|
    ['playerinventory'] = '',
 | 
						|
    ['robbing'] = '',
 | 
						|
    ['cuffing'] = '',
 | 
						|
    ['drop'] = '',
 | 
						|
    ['trunk'] = '',
 | 
						|
    ['stash'] = '',
 | 
						|
    ['glovebox'] = '',
 | 
						|
    ['banking'] = '',
 | 
						|
    ['vehicleshop'] = '',
 | 
						|
    ['vehicleupgrades'] = '',
 | 
						|
    ['shops'] = '',
 | 
						|
    ['dealers'] = '',
 | 
						|
    ['storerobbery'] = '',
 | 
						|
    ['bankrobbery'] = '',
 | 
						|
    ['powerplants'] = '',
 | 
						|
    ['death'] = '',
 | 
						|
    ['joinleave'] = '',
 | 
						|
    ['ooc'] = '',
 | 
						|
    ['report'] = '',
 | 
						|
    ['me'] = '',
 | 
						|
    ['pmelding'] = '',
 | 
						|
    ['112'] = '',
 | 
						|
    ['bans'] = '',
 | 
						|
    ['anticheat'] = '',
 | 
						|
    ['weather'] = '',
 | 
						|
    ['moneysafes'] = '',
 | 
						|
    ['bennys'] = '',
 | 
						|
    ['bossmenu'] = '',
 | 
						|
    ['robbery'] = '',
 | 
						|
    ['casino'] = '',
 | 
						|
    ['traphouse'] = '',
 | 
						|
    ['911'] = '',
 | 
						|
    ['palert'] = '',
 | 
						|
    ['house'] = '',
 | 
						|
    ['qbjobs'] = '',
 | 
						|
}
 | 
						|
 | 
						|
local colors = { -- https://www.spycolor.com/
 | 
						|
    ['default'] = 14423100,
 | 
						|
    ['blue'] = 255,
 | 
						|
    ['red'] = 16711680,
 | 
						|
    ['green'] = 65280,
 | 
						|
    ['white'] = 16777215,
 | 
						|
    ['black'] = 0,
 | 
						|
    ['orange'] = 16744192,
 | 
						|
    ['yellow'] = 16776960,
 | 
						|
    ['pink'] = 16761035,
 | 
						|
    ['lightgreen'] = 65309,
 | 
						|
}
 | 
						|
 | 
						|
local logQueue = {}
 | 
						|
 | 
						|
RegisterNetEvent('qb-log:server:CreateLog', function(name, title, color, message, tagEveryone, imageUrl)
 | 
						|
    local tag = tagEveryone or false
 | 
						|
 | 
						|
    if Config.Logging == 'discord' then
 | 
						|
        if not Webhooks[name] then
 | 
						|
            print('Tried to call a log that isn\'t configured with the name of ' .. name)
 | 
						|
            return
 | 
						|
        end
 | 
						|
        local webHook = Webhooks[name] ~= '' and Webhooks[name] or Webhooks['default']
 | 
						|
        local embedData = {
 | 
						|
            {
 | 
						|
                ['title'] = title,
 | 
						|
                ['color'] = colors[color] or colors['default'],
 | 
						|
                ['footer'] = {
 | 
						|
                    ['text'] = os.date('%c'),
 | 
						|
                },
 | 
						|
                ['description'] = message,
 | 
						|
                ['author'] = {
 | 
						|
                    ['name'] = 'QBCore Logs',
 | 
						|
                    ['icon_url'] = 'https://raw.githubusercontent.com/GhzGarage/qb-media-kit/main/Display%20Pictures/Logo%20-%20Display%20Picture%20-%20Stylized%20-%20Red.png',
 | 
						|
                },
 | 
						|
                ['image'] = imageUrl and imageUrl ~= '' and { ['url'] = imageUrl } or nil,
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        if not logQueue[name] then logQueue[name] = {} end
 | 
						|
        logQueue[name][#logQueue[name] + 1] = { webhook = webHook, data = embedData }
 | 
						|
 | 
						|
        if #logQueue[name] >= 10 then
 | 
						|
            local postData = { username = 'QB Logs', embeds = {} }
 | 
						|
 | 
						|
            if tag then
 | 
						|
                postData.content = '@everyone'
 | 
						|
            end
 | 
						|
 | 
						|
            for i = 1, #logQueue[name] do postData.embeds[#postData.embeds + 1] = logQueue[name][i].data[1] end
 | 
						|
            PerformHttpRequest(logQueue[name][1].webhook, function() end, 'POST', json.encode(postData), { ['Content-Type'] = 'application/json' })
 | 
						|
            logQueue[name] = {}
 | 
						|
        end
 | 
						|
    elseif Config.Logging == 'fivemanage' then
 | 
						|
        local FiveManageAPIKey = GetConvar('FIVEMANAGE_LOGS_API_KEY', 'false')
 | 
						|
        if FiveManageAPIKey == 'false' then
 | 
						|
            print('You need to set the FiveManage API key in your server.cfg')
 | 
						|
            return
 | 
						|
        end
 | 
						|
        local extraData = {
 | 
						|
            level = tagEveryone and 'warn' or 'info', -- info, warn, error or debug
 | 
						|
            message = title,                          -- any string
 | 
						|
            metadata = {                              -- a table or object with any properties you want
 | 
						|
                description = message,
 | 
						|
                playerId = source,
 | 
						|
                playerLicense = GetPlayerIdentifierByType(source, 'license'),
 | 
						|
                playerDiscord = GetPlayerIdentifierByType(source, 'discord')
 | 
						|
            },
 | 
						|
            resource = GetInvokingResource(),
 | 
						|
        }
 | 
						|
        PerformHttpRequest('https://api.fivemanage.com/api/logs', function(statusCode, response, headers)
 | 
						|
            -- Uncomment the following line to enable debugging
 | 
						|
            -- print(statusCode, response, json.encode(headers))
 | 
						|
        end, 'POST', json.encode(extraData), {
 | 
						|
            ['Authorization'] = FiveManageAPIKey,
 | 
						|
            ['Content-Type'] = 'application/json',
 | 
						|
        })
 | 
						|
    end
 | 
						|
end)
 | 
						|
 | 
						|
Citizen.CreateThread(function()
 | 
						|
    local timer = 0
 | 
						|
    while true do
 | 
						|
        Wait(1000)
 | 
						|
        timer = timer + 1
 | 
						|
        if timer >= 60 then -- If 60 seconds have passed, post the logs
 | 
						|
            timer = 0
 | 
						|
            for name, queue in pairs(logQueue) do
 | 
						|
                if #queue > 0 then
 | 
						|
                    local postData = { username = 'QB Logs', embeds = {} }
 | 
						|
                    for i = 1, #queue do
 | 
						|
                        postData.embeds[#postData.embeds + 1] = queue[i].data[1]
 | 
						|
                    end
 | 
						|
                    PerformHttpRequest(queue[1].webhook, function() end, 'POST', json.encode(postData), { ['Content-Type'] = 'application/json' })
 | 
						|
                    logQueue[name] = {}
 | 
						|
                end
 | 
						|
            end
 | 
						|
        end
 | 
						|
    end
 | 
						|
end)
 | 
						|
 | 
						|
QBCore.Commands.Add('testwebhook', 'Test Your Discord Webhook For Logs (God Only)', {}, false, function()
 | 
						|
    TriggerEvent('qb-log:server:CreateLog', 'testwebhook', 'Test Webhook', 'default', 'Webhook setup successfully')
 | 
						|
end, 'god')
 |