1
0
Fork 0
forked from Simnation/Main
Main/resources/[qb]/qb-smallresources/server/logs.lua

149 lines
5.1 KiB
Lua
Raw Normal View History

2025-06-07 08:51:21 +02:00
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')