| Commit message (Collapse) | Author | Lines |
|
Our duckpond suffered from a race condition: If multiple raw reaction
events were received in quick succession and a message had enough ducks
to take it over the duckpond threshold, the message would be relayed
multiple times.
The reason this happened is because the green checkmark emoji that stops
a message from being relayed multiple times is only added after the
message has been relayed. This means that multiple event triggers can
make it past the green checkmark check before any of them has a chance
to add a green checkmark.
The solution was to create a relay lock that needs to be acquired before
checking for the presence of a green checkmark and is only released
after adding a green checkmark. This prevents multiple events from
making it past the sentinel check.
As our Cogs are potentially initialized before the event loop is
created, the lock is load lazily when needed.
Signed-off-by: Sebastiaan Zeeff <[email protected]>
|
|
As announcements already get a lot of exposure and have a high risk of
getting "ducked", duckpond will now ignore those channels and never
relay those announcements to our duckpond.
Signed-off-by: Sebastiaan Zeeff <[email protected]>
|
|
Some of our members have expressed concern that their messages would be
"ducked" by staff members and relayed to the staff-only duckpond. Since
duckpond is supposed to be a funny, staff-only affair, I've made
duckpond ignore messages from non-staff members.
Signed-off-by: Sebastiaan Zeeff <[email protected]>
|
|
Instead of maintaining a list of duckpond IDs manually, it's a much
better idea to detect ducky emojis dynamically using the new emoji name
grouping we've introduced: All emojis that start with `ducky_` will now
be counted as a duckpond ducky.
The unicode duck emoji obviously still counts in addition to custom
emojis with the `ducky_` prefix.
Signed-off-by: Sebastiaan Zeeff <[email protected]>
|
|
|
|
|
|
|
|
After moving constants to config, the docstring references were not
updated accordingly, and remained uppercase.
This commit also removed the redundant list indentation.
|
|
|
|
As there are a few bugs in the implementation, I've temporarily disabled
the at-everyone ping filter in the AntiSpam cog. We can disable it after
we've fixed the bugs.
Signed-off-by: Sebastiaan Zeeff <[email protected]>
|
|
On some devices the markdown gets rendered improperly,
leaving the asterisks in the message without bolding.
|
|
Our AntiSpam cog suffers from a race condition that causes it to try and
infract the same user multiple times. As that happens frequently with
the burst_shared filter, it means that our bot joins in and starts
spamming the channel with error messages.
Another issue is that burst_shared may cause our bot to send a lot of
DMs to a lot of different members. This caused our bot to get a DM ban
from Discord after a recent `everyone` ping incident.
I've decided to disable the `burst_shared` filter by commenting out the
relevant lines but leave the code in place otherwise. This means we
still have the implementation handy in case we want to re-enable it on
short notice.
Signed-off-by: Sebastiaan Zeeff <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Changed the regex to not punish users who have text other than
`@everyone` in their codeblocks.
Multiline codeblocks can now have `@everyone` in them.
|
|
Removed redundant comments.
Switched to regex to avoid punishing users for putting `@everyone`
in codeblocks.
Changed log message since this isn't a anti-spam rule based off
of frequency.
Added check for `<@&{guild_id}>` ping, also checks for codeblocks.
|
|
|
|
The NEGATIVE_REPLIES header is now the title of the embed.
|
|
Changed cryptic variable name.
Changed ping response to use `bot.constants.NEGATIVE_REPLIES`.
Changed ping repsonse to only ping user once.
|
|
Seperated the member count by commas every three digits.
|
|
Changed the message to say the raw member count, not just thousands.
Also cleaned up some unused variables and imports in the file.
|
|
Switched from string.format to f-string for server member count.
|
|
The you can view the embed text in the `everyone_ping.py` file.
The embed also now sends in the server instead of a DM.
|
|
Removed a debug `print` statement, fixed a spelling mistake.
Also added a comment for the DM string.
|
|
When a user pings the everyone role, they now get an embed explaining
why what they did was wrong.
The ping detection was also fixed to not thing that every message was a
ping (changed form `>=` to `>`).
|
|
Changed the method of checking for an everyone ping.
Also changed the config to act as `min pings` instead
of `ping enabled/disabled`.
|
|
The `max` and `interval` values were required, so they were added to
the config file and the rule was modified to accept these new values.
|
|
Added mapping to anti-spam cog, then also edited __init__ in the rules
folder to expose the apply function.
|