mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2024-12-28 23:06:38 +02:00
140 lines
3.9 KiB
Lua
140 lines
3.9 KiB
Lua
local Discord = require 'utils.discord'
|
|
local Server = require 'utils.server'
|
|
local Public = {}
|
|
|
|
local notification = Discord.channel_names.scenario_notifications
|
|
|
|
--- Send a parsed message to the connected channel.
|
|
--- Requires at least a title and a description
|
|
---@param ... table
|
|
function Public.send_notification(...)
|
|
local data = ...
|
|
if not data.title or not data.description then
|
|
return error('Title and description is required.', 2)
|
|
end
|
|
|
|
local text = {
|
|
title = data.title,
|
|
description = data.description,
|
|
color = data.color or 'success'
|
|
}
|
|
|
|
if data.field1 and data.field1.text1 and data.field1.text2 then
|
|
text.field1 = {
|
|
text1 = data.field1.text1,
|
|
text2 = data.field1.text2,
|
|
inline = data.field1.inline or 'true'
|
|
}
|
|
end
|
|
|
|
if data.field2 and data.field2.text1 and data.field2.text2 then
|
|
text.field2 = {
|
|
text1 = data.field2.text1,
|
|
text2 = data.field2.text2,
|
|
inline = 'true',
|
|
emptyField = 'true',
|
|
emptyInline = 'true'
|
|
}
|
|
end
|
|
|
|
if data.field3 and data.field3.text1 and data.field3.text2 then
|
|
text.field3 = {
|
|
text1 = data.field3.text1,
|
|
text2 = data.field3.text2,
|
|
inline = 'true'
|
|
}
|
|
end
|
|
|
|
if data.field4 and data.field4.text1 and data.field4.text2 then
|
|
text.field4 = {
|
|
text1 = data.field4.text1,
|
|
text2 = data.field4.text2,
|
|
inline = 'true',
|
|
emptyField = 'true',
|
|
emptyInline = 'true'
|
|
}
|
|
end
|
|
|
|
if data.field5 and data.field5.text1 and data.field5.text2 then
|
|
text.field5 = {
|
|
text1 = data.field5.text1,
|
|
text2 = data.field5.text2,
|
|
inline = 'true'
|
|
}
|
|
end
|
|
|
|
if data.field6 and data.field6.text1 and data.field6.text2 then
|
|
text.field6 = {
|
|
text1 = data.field6.text1,
|
|
text2 = data.field6.text2,
|
|
inline = 'true',
|
|
emptyField = 'true',
|
|
emptyInline = 'true'
|
|
}
|
|
end
|
|
|
|
if data.field7 and data.field7.text1 and data.field7.text2 then
|
|
text.field7 = {
|
|
text1 = data.field7.text1,
|
|
text2 = data.field7.text2,
|
|
inline = 'true'
|
|
}
|
|
end
|
|
|
|
if data.field8 and data.field8.text1 and data.field8.text2 then
|
|
text.field8 = {
|
|
text1 = data.field8.text1,
|
|
text2 = data.field8.text2,
|
|
inline = 'true',
|
|
emptyField = 'true',
|
|
emptyInline = 'true'
|
|
}
|
|
end
|
|
|
|
Server.to_discord_named_parsed_embed(notification, text)
|
|
end
|
|
|
|
--- Send a parsed message to the connected channel.
|
|
--- Requires at least a title and a description
|
|
---@param ... table
|
|
function Public.send_notification_obj(...)
|
|
local data = ...
|
|
if not data.title or not data.description then
|
|
return error('Title and description is required.', 2)
|
|
end
|
|
|
|
Server.to_discord_named_parsed_embed(notification, data)
|
|
end
|
|
|
|
--- Send a message to the connected channel.
|
|
--- Requires a title and a description
|
|
---@param scenario_name string|nil
|
|
---@param message string
|
|
function Public.send_notification_raw(scenario_name, message)
|
|
if not scenario_name then
|
|
scenario_name = Server.get_server_name() or 'CommandHandler'
|
|
end
|
|
|
|
if not message then
|
|
return error('A message is required.', 2)
|
|
end
|
|
local data = table.concat({'**[', scenario_name, ']**', ' - ', message})
|
|
Server.to_discord_named_embed(notification, data)
|
|
end
|
|
|
|
function Public.send_notification_debug(player, source_debug, debug_data)
|
|
local name = player and player.valid and player.name or 'script'
|
|
|
|
local data = {
|
|
title = Server.get_server_name(),
|
|
description = source_debug,
|
|
field1 = {
|
|
text1 = 'Debug data for: ' .. name,
|
|
text2 = debug_data
|
|
}
|
|
}
|
|
Public.send_notification(data)
|
|
end
|
|
|
|
return Public
|