| Commit message (Collapse) | Author | Lines |
|
|
|
|
|
The output can't be sent to discord, but it won't affect anything in the
paste service and can safely be uploaded to it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
There's not a lot of activity in our duckpond at the moment. To activate
our duckies, I've decreased the duckpond threshold to 4. This means that
a message will now be relayed once it's been ducked four times.
Let's get all of our ducks in a row.
Signed-off-by: Sebastiaan Zeeff <[email protected]>
|
|
This commit adds a command that allows admins to manually relay a
message to the duckpond, regardless of duck counts and the checks done
in the reaction event handler.
Signed-off-by: Sebastiaan Zeeff <[email protected]>
|
|
I've created a helper for duckpond's relay feature to allow me to use it
separately from the command we're planning to add to the Cog. I opted
not to include the lock in the original relay method to separate the
logic more clearly.
Signed-off-by: Sebastiaan Zeeff <[email protected]>
|
|
I've removed the unit tests for duckpond in concordance with the new
policy for writing unit tests for the bot The tests were unnecessarily
complicated, difficult to maintain, and slowed development.
Signed-off-by: Sebastiaan Zeeff <[email protected]>
|
|
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]>
|
|
As we're now planning on using Redis in multiple applications, it's
important to minimize the risk of namespace collisions between different
applications.
The `async-rediscache` packages allows us to set a global namespace on
an application level. I've chosen "bot" as the namespace for this
application, which means all individual namespaces will automatically be
prefixed by `bot.` whenever they are accessed.
Signed-off-by: Sebastiaan Zeeff <[email protected]>
|
|
As we're now using the `async-rediscache` package, it's no longer
necessary to keep the `RedisCache` defined in `bot.utils.redis_cache`
around.
I've removed the file containing it and the tests written for it.
Signed-off-by: Sebastiaan Zeeff <[email protected]>
|
|
I've migrated our redis caches over to the async-rediscache package that
we've recently released (https://git.pydis.com/async-rediscache). The
main functionality remains the same, although the package handles some
things, like getting the active session, differently internally.
The main changes you'll note for our bot are:
- We create a RedisSession instance and ensure that it connects before
we even create a Bot instance in `__main__.py`.
- We are now actually using a connection pool instead of a single
connection.
- Our Bot subclass now has a new required kwarg: `redis_session`.
- Bool values are now properly converted to and from typestrings.
In addition, I've made sure that our MockBot passes a MagicMock for the
new `redis_session` kwarg when creating a Bot instance for the spec_set.
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.
|
|
|
|
|
|
|
|
Make their names more in line with `has_any_role` for consistency.
|
|
|
|
Use `has_any_role` to reduce redundancy.
Because discord.py always makes a check's predicate a coroutine, the
checks now have to be awaited.
|
|
The feature will be moved to the filtering cog.
|
|
In some places, it's more appropriate than using with_role_check since
it will raise CheckFailures. This applies to `cog_check`s and other
things which effectively act as command checks.
|
|
|
|
`with_role` is obsolete because discord.py provides `has_any_role`.
|
|
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]>
|