WebhookProxy | Discord webhooks go brrrrrrr

Thank you this has been a life saver for group

1 Like

I’ll be hosting your proxy on rblx-discord-webhook.us-3.evennode.com . That will save time on behalf of game developers who would have to host it themselves.

https://webhook.lewistehminerz.dev/ exists.

Works great now. Thanks for the effort dude! I really appreciate it

1 Like

Hey all,

I’m experimenting with a new feature. If you put /queue onto the end of your webhook URLs, your messages will be put into a RabbitMQ queue instead of being sent directly to Discord.

These queued messages are guaranteed to be sent, but are not guaranteed to be in order (though I try, promise!). If order matters, this isn’t for you.

Speaking of ratelimits, there is a much higher ratelimit for queueing messages rather than sending them directly: 10/1s. Compared to Discord’s 5/2s, this is very generous, and it doesn’t even stop your requests if you hit it, it just slows them down. Many benefits with few drawbacks!

Oh, right, if you use ?wait=true, that doesn’t work with this. You should treat this as fire-and-forget. If you want message data back, you can’t use the queue system.

Of course, if this system doesn’t end up panning out I’ll provide a one week notice that I’ll be removing it. However, I have high hopes, and hopefully you guys will get some use out of it, especially if you get ratelimited a lot.

Have fun! As usual, report any issues here or on GitHub.

4 Likes

Thank you for this, I use webhooks for game analytics and I was worried that I wouldn’t be able to do that anymore.

1 Like

I’m back~

I got bored, have this module:
https://gist.github.com/LewisTehMinerz/5308748d2d65a195ff580d4b9a54845f

It should make it a bit simpler to send messages.

local proxy = Proxy.new(id, token)

proxy:Send({ content = "abc" }, false)
proxy:Queue({ content = "abc" })

… will send abc to the webhook, both directly and via the queue system.

As usual, report any issues here or on GitHub.

I wouldn’t count on that, like come on, it’s Roblox we are talking about here😂.

I suggest adding rate limits so people can’t spam.

There already are! :wink:

The proxy forces you to comply to the ratelimit (by not sending requests after you hit it) or you risk getting blocked permanently (or of course until I unblock you). The new experimental queue system allows you to send a lot more requests (10/1s) and it puts them into a queue for them to be sent by a processor later.

2 Likes

Where do I find a Webhook Token?

If you’re using the module I made, it’s the second part of the URL:

/api/webhooks/<id>/<token>

1 Like

will you ever make one that works with bots and stuff

Thanks a lot for this! Was very annoyed when discord banned webhooks, and now I can finally begin receiving feedback again.

1 Like

For bots? I’m not quite sure I understand.

like you could send messages to a discord bot from roblox before they blocked the requests from roblox
so maybe a proxy for that too?

This is specifically for webhooks. I doubt I will make a proxy for that mainly because of potential abuse. Webhooks are restricted to one channel, bots tend to be able to post in a lot of places.

Thanks for answering my question!

If your webhooks have stopped working…

Discord had some sort of outage recently (relating to Google Cloud possibly?) that caused a lot of API endpoints to return 404. This appears to have included the webhook API endpoint. WebhookProxy is built to automatically ban webhooks that are considered nonexistent (so a 404 response) which may have led to falsebans. I have unbanned a few webhooks that may have been caught by this, but feel free to message me your webhook IDs if you got caught in this.

Cheers.

When I send a post request to the proxy, it returns some data when it’s successful.

{"proxy":true,"message":"Queued successfully."}

What does it return when the webhook has reached the limit? The reason why I’m asking is because I’m trying to detect when the webhook has reached the limit, and then not send any messages until the limit has been reset. (If I send 10 messages in one second using the queue, wait 1 second before sending more messages)

And I don’t want to get my webhook banned for purposly trying to reach / break the limit to see what PostAsync returns when the limit has been reached.

Makes sense, thanks for reporting the outage, I thought there was something in my code that was breaking it.

Is that a Transformer character?
Man I’m acting like a child

sorry for bumping i hate myself

1 Like