EssentialsX / Essentials

The modern Essentials suite for Spigot and Paper.
https://essentialsx.net
GNU General Public License v3.0
1.94k stars 977 forks source link

EssentialsX Discord messages are very behind when chat is spammed #5265

Open ayunami2000 opened 1 year ago

ayunami2000 commented 1 year ago

Type of bug

Exploit, Other unexpected behaviour

/ess dump all output

Creating server dump... Error while creating dump <html> <head><title>413 Request Entity Too Large</title></head> <body> <center><h1>413 Request Entity Too Large</h1></center> <hr><center>nginx</center> </body> </html>

Error log (if applicable)

No response

Bug description

When someone spams chat (like REALLY spams chat), EssentialsXDiscord lags behind a TON. Like, maybe 5-15 minutes or so behind I'd say. It just slooooowly sends every single spammed chat message until it has gotten through them all. I'd like there to be at least some sort of queue size limit where it doesn't send some messages.

Steps to reproduce

  1. Spam messages, e.g. 10-200 per second or something like that, idk.
  2. Check discord.

Expected behaviour

Discord chat should return to normal immediately upon spam ending.

Actual behaviour

Discord chat proceeds to send each and every single message, no matter how many there are, until it gets through them ALL. And it does this SLOWLY, so that a backlog of messages is formed.

also there is no text box below for the "in the text box below, you can attach any relevant screenshots..."

Also I'm running the latest stable EssentialsX build. Let me know if this behavior has changed on the dev builds!

bee1850 commented 1 year ago

I am pretty sure this is because of ratelimiting on Discord's side. Essentials cannot really do anything about that besides maybe filtering out Spammed Messages.

ayunami2000 commented 1 year ago

I am pretty sure this is because of ratelimiting on Discord's side. Essentials cannot really do anything about that besides maybe filtering out Spammed Messages.

I'd suggest bundling multiple chat messages together in one message from the bot

JRoy commented 1 year ago

I am pretty sure this is because of ratelimiting on Discord's side. Essentials cannot really do anything about that besides maybe filtering out Spammed Messages.

I'd suggest bundling multiple chat messages together in one message from the bot

This is why they're behind, the bundler waits for a delay or if it reached the maximum message length before sending them out. We'd probably need to start skipping messages if the queue gets too big

ayunami2000 commented 1 year ago

I am pretty sure this is because of ratelimiting on Discord's side. Essentials cannot really do anything about that besides maybe filtering out Spammed Messages.

I'd suggest bundling multiple chat messages together in one message from the bot

This is why they're behind, the bundler waits for a delay or if it reached the maximum message length before sending them out. We'd probably need to start skipping messages if the queue gets too big

I've not seen a single message get bundled with another on my server.

JRoy commented 1 year ago

I am pretty sure this is because of ratelimiting on Discord's side. Essentials cannot really do anything about that besides maybe filtering out Spammed Messages.

I'd suggest bundling multiple chat messages together in one message from the bot

This is why they're behind, the bundler waits for a delay or if it reached the maximum message length before sending them out. We'd probably need to start skipping messages if the queue gets too big

I've not seen a single message get bundled with another on my server.

Then you're not sending messages fast enough

ayunami2000 commented 1 year ago

I am pretty sure this is because of ratelimiting on Discord's side. Essentials cannot really do anything about that besides maybe filtering out Spammed Messages.

I'd suggest bundling multiple chat messages together in one message from the bot

This is why they're behind, the bundler waits for a delay or if it reached the maximum message length before sending them out. We'd probably need to start skipping messages if the queue gets too big

I've not seen a single message get bundled with another on my server.

Then you're not sending messages fast enough

No I mean, I think something's wrong with the code to check when it's too fast and to bundle them in bulk: image These were all sent insanely fast (all in this screenshot in less than a second) in-game, but only showed up in the Discord mirror super slowly.

JRoy commented 1 year ago

Oh you're talking about chat messages. In that case, messages should probably be batched here too.