Merge pull request #1692 from alexistb2904/main

Fix Discord Rich Presence integration
This commit is contained in:
zykem
2025-08-08 22:19:49 +02:00
committed by GitHub
@@ -170,22 +170,18 @@ local placeHolders = {
end, end,
} }
function Adjustments:PresencePlaceholders() function Adjustments:ReplacePlaceholders(text)
local presence = Config.DiscordActivity.presence
for placeholder, cb in pairs(placeHolders) do for placeholder, cb in pairs(placeHolders) do
local success, result = pcall(cb) local success, result = pcall(cb)
if not success then if not success then
error(("Failed to execute presence placeholder: ^5%s^7"):format(placeholder)) error(("Failed to execute placeholder: ^5%s^7\n%s"):format(placeholder, result))
error(result) result = "Unknown"
return "Unknown"
end end
presence = presence:gsub(("{%s}"):format(placeholder), result) text = text:gsub(("{%s}"):format(placeholder), tostring(result))
end end
return text
return presence
end end
function Adjustments:DiscordPresence() function Adjustments:DiscordPresence()
@@ -193,15 +189,16 @@ function Adjustments:DiscordPresence()
CreateThread(function() CreateThread(function()
while true do while true do
SetDiscordAppId(Config.DiscordActivity.appId) SetDiscordAppId(Config.DiscordActivity.appId)
SetRichPresence(self:ReplacePlaceholders(Config.DiscordActivity.presence))
SetDiscordRichPresenceAsset(Config.DiscordActivity.assetName) SetDiscordRichPresenceAsset(Config.DiscordActivity.assetName)
SetDiscordRichPresenceAssetText(Config.DiscordActivity.assetText) SetDiscordRichPresenceAssetText(self:ReplacePlaceholders(Config.DiscordActivity.assetText))
for i = 1, #Config.DiscordActivity.buttons do for i = 1, #Config.DiscordActivity.buttons do
local button = Config.DiscordActivity.buttons[i] local button = Config.DiscordActivity.buttons[i]
SetDiscordRichPresenceAction(i - 1, button.label, button.url) local buttonUrl = self:ReplacePlaceholders(button.url)
SetDiscordRichPresenceAction(i - 1, button.label, buttonUrl)
end end
SetRichPresence(self:PresencePlaceholders())
Wait(Config.DiscordActivity.refresh) Wait(Config.DiscordActivity.refresh)
end end
end) end)