| Commit message (Collapse) | Author | Age | Lines |
| ... | |
| | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
If asyncio's debug mode is enabled, the asyncio logger's level gets set
to DEBUG. While other features of the debug mode are useful, the DEBUG
log level spams generally irrelevant stuff.
|
| | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
Place a channel-specific lock on `unclaim_channel`. If both the dormant
task and the command simultaneously unclaim a channel, one of them will
silently be aborted.
Fix #1341
|
| | | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
Booleans are less error-prone than strings.
|
| | | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
Ensure the cancellation will be under the lock once the lock is added.
|
| | | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
Referencing internal functions in public-facing documentation is not
helpful to users.
|
| | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
If the lock causes the function to abort, a new channel shouldn't be
made available. However, the only way to know it's aborted from the
outside would be through a return value or global variable. Neither seem
as nice as just just using `create_task` within the lock to avoid
having `move_to_available` hold the lock.
|
| | | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
Normally exceptions are only logged when tasks are garbage collected.
This wrapper will allow them to be logged immediately through a done
callback. This is similar to how the Scheduler logs errors.
|
| | | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
The race condition is when a user claims a channel while their other
channel is being unclaimed. Specifically, it's while their cooldown is
being removed.
The lock ensures that either the cooldown will be re-applied after it's
removed or that it won't be removed since `unclaim_channel` will see the
user has another claimed channel.
|
| | | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
It's been determined that asyncio.Lock is safe to use in such manner.
Therefore, replace LockGuard entirely with asyncio.Lock.
|
| | | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
Narrow the scope of `move_to_dormant` to just moving the channel.
Following the design of `claim_channel`, make `unclaim_channel` handle
cooldowns and unpinning.
|
| | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
Move significant code related to stats to a separate module.
|
| | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
It's conceivable for a user to be able to quickly send a message in all
available channels before the code has a chance to add the cooldown
role.
Place a lock on the author to prevent the claim code from running
multiple times for the same user.
|
| | | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
It feels safer to do this since the init task moves channels to
different categories and the listeners check if channels are in certain
categories.
|
| | | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
Use the `lock_arg` decorator to keep a separate lock for each channel
rather than a single lock used by all messages. Separate the core logic
in `on_message` into a separate function to facilitate the use of
`lock_arg` - not everything in `on_message` needs to be under the lock.
|
| | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | |
|
| | | | | |\ \ \ \ \ \ \ \ \ |
|
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
We do not have the Developers role anymore, so there's no such thing as
verified/unverified members.
|
| | | | | |\ \ \ \ \ \ \ \ \ \
| | | | | | |_|_|/ / / / / /
| | | | | |/| | | | | | | | |
|
| | | | | |\ \ \ \ \ \ \ \ \ \ |
|
| | | | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | |
Includes useful information like the number of nominated/watched
members, number of unverified members, defcon status etc.
Will not show up if the command is ran outside of a moderation channel.
|
| | | | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | |
Rather than do two passes over the channels, a single loop is used to
collect all the channel counts into a single dictionary.
The get_channel_type_counts method now returns a dictionary of channel
to count, allowing the caller liberty to format the values.
|
| | | | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | |
Mirrors the changes from config-default.yml to constants.py.
|
| | |_|_|_|_|_|_|/ / / / / / /
|/| | | | | | | | | | | | | |
|
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \
| |/ / / / / / / / / / / / /
|/| | | | | | | | | | | | | |
|
| | |\ \ \ \ \ \ \ \ \ \ \ \ \
| |/ / / / / / / / / / / / /
|/| | | | | | | | | | | | | |
|
| | |_|_|_|_|_|_|_|/ / / / /
|/| | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | | |
Fixes BOT-KX
|
| | |\ \ \ \ \ \ \ \ \ \ \ \
| | | |_|_|_|/ / / / / / /
| | |/| | | | | | | | | | |
|
| | |\ \ \ \ \ \ \ \ \ \ \ \ |
|
| | | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
This prevents weird fuzz matches like `!role a b c d` working.
|
| | | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
An arbitrary cutoff score of 80 is chosen because it works. A bug in
the test for the same command is also fixed.
|
| | | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | | |
|