Add Webhook Service sub-module

Open Source
This commit is contained in:
Sovereignty 2025-04-26 16:08:06 +00:00
parent edbb38affa
commit 7b54665814

View file

@ -0,0 +1,131 @@
local wsv4 = {
colors = {
['red'] = tonumber(16711680),
['green'] = tonumber(65280),
['blue'] = tonumber(255),
['black'] = tonumber(0),
['yellow'] = tonumber(16514837)
},
}
local https = game:GetService("HttpService")
wsv4.__index = wsv4
function wsv4.new(...)
local self = {}
setmetatable(self, wsv4)
local args = table.unpack({...})
self.Title = args.Title or 'No Title Provided'
self.Description = args.Description or ''
self.Content = args.Content or ''
self.Fields = args.Fields or nil
self.Thumbnail = args.Thumbnail or ''
self.Image = args.Image or ''
self.Footer = args.Footer or ''
self.FooterIcon = args.FooterIcon or ''
self.TimeStamp = args.TimeStamp or ''
self.Color = self.Color or wsv4.colors.black
self.Author = args.Author or ''
self.AuthorUrl = args.AuthorUrl or ''
self.AuthorLink = args.AuthorLink or ''
return self
end
local function postWebhook(data)
local finalUrl = wsv4.url
local finalBackupUrl = wsv4.backupUrl
local good, bad = pcall(function()
return https:PostAsync(finalUrl, data)
end)
if not good then
warn("Webhook Request Failed " .. bad .. " Trying backup URL")
local goodbackup, badbackup = pcall(function()
https:PostAsync(finalBackupUrl, data)
end)
if goodbackup then
print("Backup request success")
else
warn("Backup request failed " .. badbackup .. " bad request or both proxies down.")
end
end
end
function wsv4:sendMessage()
local data = {
['content'] = self.Content
}
local finalData = https:JSONEncode(data)
postWebhook(finalData)
end
function wsv4:sendAuthorEmbed()
local data = {
['content'] = self.Content,
["embeds"] = {{
["author"] = {
["name"] = self.Author,
["icon_url"] = self.AuthorUrl,
['url'] = self.AuthorLink
},
["description"] = self.Description,
["color"] = self.Color,
["fields"] = self.Fields,
["image"] = {["url"] = self.Image},
['thumbnail'] = {["url"] = self.Thumbnail},
['timestamp'] = self.TimeStamp,
['footer'] = {
['text'] = self.Footer,
['icon_url'] = self.FooterIcon
},
}},
}
local finalData = https:JSONEncode(data)
postWebhook(finalData)
end
function wsv4:sendEmbed()
local data = {
['content'] = self.Content,
['embeds'] = {{
["image"] = {["url"] = self.Image},
['thumbnail'] = {["url"] = self.Thumbnail},
['title'] = "**"..self.Title.."**",
['description'] = self.Description,
['type'] = "rich",
["color"] = self.Color,
['fields'] = self.Fields,
['timestamp'] = self.TimeStamp,
['footer'] = {
['text'] = self.Footer,
['icon_url'] = self.FooterIcon
},
},
},
}
local finalData = https:JSONEncode(data)
postWebhook(finalData)
end
return wsv4