WebhookProxy | Discord webhooks go brrrrrrr

Hey all, I might be about to completely and utterly break everything whilst I perform an update to how the anti-abuse works. This is mainly to permit scalability and to make the proxy stateless (wow, cool buzz words!). I’m trying to avoid storing state in the app and moving to Redis for caching.

If everything goes wrong, I’ll revert it as soon as possible. Don’t worry if your webhooks break for a short amount of time.

This should now be complete. Nothing went absolutely horribly wrong, and the proxy is now running two processes instead of one.

However, please message me immediately if you see any quirks or falsebans.

1 Like

Hi everyone,

I found a fatal bug in the anti-abuse measures I put in place relating to ratelimits. I have fixed the bug in the latest commit, and as an apology I have unbanned all webhooks affected by the anti-abuse for ratelimit violations.

To keep it short, I was accidentally using the same Redis key for two operations: ratelimit violation tracking and ratelimit reset time. This would mean the proxy thought your webhooks were millions of requests over the threshold for bans.

On self hosted instances with autoBlock turned off (or prior to the Redis migration), this will not affect you and is an optional update, however I recommend updating anyway just in case that you start to use auto blocking.

I’m sorry if this affected your webhooks.

3 Likes

It does not seem to be working for me.

Edit: I inputted “webhook.lewistehminerz.de” instead of “webhook.lewistehminerz.dev” lol. Works fine now.

1 Like

Let me answer that for you, most people use discord literally guided is not really that used. To be honest it was a big swing and miss.

1 Like

In my eyes, that’s better, Less latency and traffic for our http requests to get messed about on.
I use guilded for developing, not for communication or chat. It creates two separate channels and can help organization of the game development.

  • Guilded has a ton more useful channels.
1 Like

Any plans on making this into a Docker?
I use Docker a lot :slight_smile:

1 Like

Docker containers aren’t my forte and I never planned to make this into a containerised app but I can give it a shot. Can you live with docker-compose?

E: Looks like I’d have to rewrite parts of the codebase to support this. I’ll put it on the backburner for now.

2 Likes

This is how i normally set up my dockers.
Not sure if docker-compose is the same.

PS: Sometimes it’s also best to include port 80 = choose.
That way we can use what port we need :slight_smile:

Can you pls tell me how to use this proxy in my code ?
Do I need to add this or what I need to do ?

And how do I get the webhook id ?
Just by copying the url of the webhook and paste it up in the chrome ?

There’s a guide on the site but I’ll put it here too.

If you have a piece of code that looks like this:

local httpService = game:GetService("HttpService")

httpService:PostAsync("https://discord.com/api/webhooks/{WEBHOOK_ID}/{WEBHOOK_TOKEN}",
	httpService:JSONEncode({
		content = "Hello, world!"
	})
)

You need to change discord.com to webhook.lewistehminerz.dev. After that it will work as normal.

You can optionally use the module I wrote which hides away the interaction with the proxy and gives a niceish API. The id and token are in the URL already; the ID is the numbers after /api/webhooks and the token is after the ID.

1 Like

Thankyou for the explanation @lewisakura

But I have another doubt,
After the link, there is no numbers, there are only text like webhook id and token
This one, {WEBHOOK_ID}/{WEBHOOK_TOKEN}

That’s just filler for the example. You’d use your actual webhook stuff there. E.g., https://webhook.lewistehminerz.dev/api/webhooks/1234567891234567/jsdnfjnsdkjfnsdnfnsjdfjksndfjn.

1 Like

Like the ID and TOKEN of my webhook @lewisakura

This is what I asked before @lewisakura ?

Yes? I don’t particularly understand what you’re asking. If you have your webhook URL already, you can just copy the ID and token from there.

Ok fine, Thankyou for the clarification
Sorry for not sending a meaning full sentence. My keypad glitches sometimes.

Is this webhook can be used for feedback forms ?
And in case if I add your proxy in my feedback from code, only changing the url is enough in my code or I need to create a seperate proxy server in order to receive the feedback from the users
?

1 Like