|  | Commit message (Collapse) | Author | Age | Lines | 
|---|
| | 
| 
| 
| 
| | A mutex is the same thing as a lock. The former is a relatively esoteric
contraction, so the latter is preferred. | 
| | 
| 
| 
| | It was not being used anywhere. | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | Concerns were raised over possible race conditions due `asyncio.Lock`
internally awaiting coroutines. Does a mere `await` suspend the current
coroutine, or does it have to actually await something asynchronous,
like a future?
Avoid answering that question by doing away with the awaits, which
aren't necessary but are there as a consequence of using `asyncio.Lock`.
Instead, add a custom `LockGuard` object to replace the previous locks. | 
| | 
| 
| 
| | Clarify the significance of the argument being passed. | 
| | 
| 
| 
| 
| | The annotation was previously changed on the basis of an incorrect
return annotation PyCharm inferred for `check()`. | 
| | 
| 
| 
| 
| | The exception it raises reads better if the singular form of the word
is used. | 
| | 
| 
| 
| 
| | Silent failure is confusing to users. Showing an error message clears up
why nothing happened with their command. | 
| | |  | 
| | 
| 
| 
| 
| | The exception will facilitate user feedback for commands which use the
decorator. | 
| | |  | 
| | 
| 
| 
| 
| | Instead of taking a callable, this wrapper just takes a name or position
to get the resource ID. | 
| | |  | 
| | |  | 
| | 
| 
| 
| 
| | Explicit is better than implicit, and this default value wasn't much of
a convenience. | 
| | 
| 
| 
| 
| | Replace the `_get_arg_value` call with `function.get_arg_value` cause
the latter makes use of bound arguments, which are more accurate. | 
| | |  | 
| | |  | 
| | 
| 
| 
| 
| 
| | This fixes race conditions between editing, deleting, and sending a
reminder. If one operation is already happening, the others will be
aborted. | 
| | 
| 
| 
| 
| | This is a more advanced version meant to eventually replace the
`_get_arg_values` in decorators.py. | 
| | 
| 
| 
| 
| | Bound arguments are more convenient to work with than the raw args
and kwargs. | 
| | |  | 
| | |  | 
| | |  | 
| | |  | 
| | 
| 
| 
| 
| 
| 
| 
| | Supporting ID retrieval by arg name or position made for a confusing
interface. I also doubt it would have been used much. A callable can
achieve the same thing, albeit with a little more code.
Now the decorator instead supports passing an ID directly or a callable. | 
| | 
| 
| 
| 
| | This will be used to prevent race conditions on a resource by stopping
all other access to the resource once its been acquired. | 
| | |  | 
| | |  | 
| | |  | 
| | 
| 
| 
| | It's fine to accept an int since it'll get converted to a string anyway. | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | Only one call was benefiting from that function also cancelling the
task. Therefore, the function was redundant and has been replaced with
a direct request to delete.
This change has the consequence of also fixing reminder tasks cancelling
themselves. That issue was potentially suppressing errors (such as the
duplicate DELETE request which was fixed earlier). Under normal
circumstances, the scheduler will automatically removed finished tasks
so tasks won't need to cancel/remove themselves. | 
| | 
| 
| 
| 
| | `send_reminder` already deletes the reminder so it's redundant to
delete it in the scheduled task too. | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | This adds a little bit of logic to the Help Channel `init_available`
coroutine, which runs when the cog loads. This ensures that if there are
more help channels in available than there should be, we remove the
superfluos ones.
Previously, if the bot started with too many channels, it would maintain
and defend that excessive amount. This is because we never actually
count the number of channels before adding in new available channels
whenever one disappears.
If we ever get too many available channels in the future, this can be
solved by simply reloading this cog. | 
| |\  
| | 
| | | Change regex so it catches new discord URL | 
| | | 
| | 
| | 
| | | requested by lemon | 
| | | |  | 
| | | |  | 
| |/ |  | 
| |\  
| | 
| | | Fix channel moving incase `message.pin` fails | 
| |/ |  | 
| |\  
| | 
| | | Don't ping everyone in #mod-alerts when tripping filter via DMs. | 
| |/  
|   
|   
|   
|   
|   
|   
|   
| | We don't need a ping in #mod-alerts whenever someone is tripping a
filter (like invites or bad language) in a DM to the bot. We can still
send an embed, so that we can action it, but there is no urgent need to
respond if it's just a direct message to the bot.
This is particularly true now that we have #dm-log. | 
| |\  
| | 
| | | Help System: Implement question message pinning | 
| | |\  
| |/  
|/| |  | 
| |\ \ |  | 
| | | | |  | 
| |/ / |  | 
| | | |  | 
| | | 
| | 
| | 
| | | I've updated the IDs of the two Code Jam Roles to the
newly create roles we have. | 
| | | 
| | 
| | 
| | 
| | 
| | 
| | 
| | | Python joins two string adjacent string literals implicitly, which may
cause unintended side effects when used with certain string methods.
>>> 'A' ' '.join(['1', '2', '3'])
'1A 2A 3' |