Discord webhooks suddenly stopped working

Hi there,

So I have a ban system on my game which creates a discord webhook log in the server every single time a player is banned. This has worked flawlessly for 4 months however yesterday with NO GAME UPDATE or edits made the webhooks suddenly stopped being able to send.

This is what happens instead:
image

However, other webhook systems completely unrelated from the ban system have all stopped working too, no webhooks are sending from my game, instead just returning “Bad Request”

Here is some things I thought it could’ve been but isn’t:

HTTP Requests turned on
I have turned this off then back on again multiple times, this does not fix it, my HTTP requests are always on.

Too many webhooks and HTTP requests being sent
I know it’s not this, because if it was too many HTTP requests it would say this instead:
image

The webhook is broken
I have deleted and recreated the webhook multiple times, copying the URL and making sure it isn’t broken and replacing it, this has not worked either.

Every single webhook script has stopped working?
The funny thing is, I tried the exact same script ON ANOTHER PLACE OF MINE just to check roblox still supported webhooks etc and it worked absolutely fine, seems to only be an issue with my game.

Any ideas or suggestions to fix this would be appreciated, thanks!

1 Like

we need to see the code. We cant guess what the issue is.

Here is the code of ONE SYSTEM which uses webhooks:

local HdMain = require(game:GetService("ReplicatedStorage"):WaitForChild("HDAdminSetup")):GetMain()
local http = game:GetService('HttpService')
local OldTableNum = #HdMain.logs.command

while wait(1) do
    if OldTableNum ~= #HdMain.logs.command then
        local cmd = HdMain.logs.command[#HdMain.logs.command]
        local plr = game.Players:FindFirstChild(cmd["speakerName"])
        local data = {
            ["embeds"] = {
                {
                    ["author"] = {
                        ["name"] = plr.Name,
                        ["icon_url"] = game.Players:GetUserThumbnailAsync(plr.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
                    },
                    ["description"] = "Command Logged",
                    ["color"] = 7528527,
                    ["fields"] = {
                        {
                            ["name"] = "Command",
                            ["value"] = cmd["message"]
                        }
                    }
                }
            }
        }
        local Data = http:JSONEncode(data)
        http:PostAsync("https://discordapp.com/api/webhooks/737330194452447304/7X3iEj3aVThDrksirnKqDn3CqDapdBXXCDfILLL11mTwha5ZWQfKCIcQbuW3LDrjTSUu", Data)
        OldTableNum = #HdMain.logs.command
    end
end

Please remember that around 5 other systems also use it and are different from this one and that THE EXACT SAME SCRIPTS work in another game so it probably is not the code.

Do you have HD admin? as the code has a waitforchild with hd admin.

Yes. As I said this one of many system and it isn’t a problem with the code, you can clearly tell webhook requests are even being sent as it says:

image

I am looking for more of an explanation such as the game being possibly being blocked from HTTP requests or something?

Too many requests means either the Roblox or the Discord servers are unable to handle that many http requests made. Doing that may get your Discord account banned for sending requests that fast, so watch out with webhooks, especially if you use them for high traffic activities, like chatlogs, player joined, left or error debugging. Don’t use while wait(1) that’s way too fast.

Hi, I recommend re-reading my post as I posted that screenshot saying how that was not the issue.

HTTP requests occassionally fail, try wrapping them in a pcall and print out the issue.

That could mean many things. One could be discord banned the request due to high amounts of calls previously or it could be an incorrect data table your sending.

Also you just exposed your webhook link, giving anyone access to posting in that.

This is an old webhook link we no longer use but I appreciate your concern

1 Like

Again, I doubt it is an incorrect table issue since this broke without any edits whatsoever and all 5 webhook scripts which use completely different code all failed, and the EXACT SAME SCRIPT worked in when placed in another game.

Hi, this isn’t a code problem for the reasons I have stated above.

I do think this may be a discord block more than anything though actually

I saw a recent post where the Discord webhook couldn’t fetch the player thumbnail, because you wrap an HTTP call in an HTTP call. Could that be the issue?

then it is probably the first option. In that case create a new webhook and try it with that one. If that works you will know it was the previous webhook being disabled due to high volume of requests.

Hi there, this was already stated in the original post.

image

:GetUserThumbnailAsync() is broken, as of now use this as an alternative solution.

"https://www.roblox.com/headshot-thumbnail/image?userId="..plr.UserId.."&width=420&height=420&format=png"
1 Like

Hi there, this was exactly it. After commenting out every single player avatar icon using – every webhook now sends fine. Thanks so much.

1 Like

Anytime my friend! Good luck with you project! :heart: