|  | Commit message (Collapse) | Author | Age | Lines | 
|---|
| ... |  | 
| | | | | | | | | | | | | | | | | | | |  | 
| | | | | | | | | | | | | | | | | | | |  | 
| | | |_|_|_|_|_|_|_|_|_|_|_|_|_|/ /  
| |/| | | | | | | | | | | | | | | |  | 
| | | |/ / / / / / / / / / / / / /  
| |/| | | | | | | | | | | | | |   
| | | | | | | | | | | | | | | | | Negative indexing starts at -1, not 0, meaning lower bound should be -1 * len(zen_lines), not -1 * upper_bound. | 
| | | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | | To mimic the same behaviour, setting all of the loggers to the trace level
was changed to a "*" prefix without looking at other contents instead of
setting it exactly to "ROOT" or "*" | 
| | | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | | Because coloredlogs' install changes the level of the root handler, the
setLevel call had to be moved to after the install. | 
| | | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | | Co_authored-by: Numerlor <[email protected]> | 
| | | | | | | | | | | | | | | | | |  | 
| | | | | | | | | | | | | | | | | |  | 
| | | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | | Utility functions such as hasattr or getattr except __getattribute__ to raise AttributeError not KeyError. This commit also lowers the logging level of the error message to info since it is up to the caller to decide if this is an expected failure or not. | 
| | | | | |\ \ \ \ \ \ \ \ \ \ \ \  
| | |_|_|/ / / / / / / / / / / /  
| |/| | | | | | | | | | | | | | |  | 
| | | | | |\ \ \ \ \ \ \ \ \ \ \ \ |  | 
| | | | | | | | | | | | | | | | | | |  | 
| | | | | | | | | | | |/ / / / / / |  | 
| | | | | | | | | | | | | | | | | |  | 
| | | | | | | | | | | | | | | | | |  | 
| | | | | | | | | | | | | | | | | |  | 
| | |_|_|_|_|_|_|_|_|/ / / / / /  
|/| | | | | | | | | | | | | | |  | 
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \  
| |/ / / / / / / / / / / / / /  
|/| | | | | | | | | | | | | | | List non staff with stream perms | 
| | | | | | | | | | | | | | | | |  | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | Co-authored-by: Matteo Bertucci <[email protected]> | 
| | | | | | | | | | | | | | | | |  | 
| | | | | | | | | | | | | | | | |  | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | This is useful to audit users who still have the permission to stream. I have chosen to also
sort and paginate the embed to make it easier to read. The sorting is based on how long until
the user's streaming permissions are revoked, with permanent streamers at the end. | 
| |/ / / / / / / / / / / / / /  
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | | | Previously any staff member (including helpers) could use the stream commands. | 
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \  
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | Allow eval almost everywhere | 
| | |\ \ \ \ \ \ \ \ \ \ \ \ \ \  
| |/ / / / / / / / / / / / / /  
|/| | | | | | | | | | | | | | |  | 
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \  
| |_|_|/ / / / / / / / / / / /  
|/| | | | | | | | | | | | | | | Add custom command checks tag | 
| | |\ \ \ \ \ \ \ \ \ \ \ \ \ \  
| |/ / / / / / / / / / / / / /  
|/| | | | | | | | | | | | | | |  | 
| | | | | | | | | | | | | | | | |  | 
| | | | | | | | | | | | | | | | |  | 
| | | | | | | | | | | | | | | | |  | 
| | | | | | | | | | | | | | | | |  | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | This creates a new baseclass called ContextCheckFailure, and the new error as well as InWhitelistCheckFailure now derive it. | 
| | |/ / / / / / / / / / / / /  
|/| | | | | | | | | | | | |   
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | | | Adds a check to blacklist a command only in a specific context, with an option for a role override. The check is applied to the eval command to blacklist it only from python-general. | 
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \  
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | Branding: correct broken timestamp persistence & improve cosmetics | 
| | |\ \ \ \ \ \ \ \ \ \ \ \ \ \  
| |/ / / / / / / / / / / / / /  
|/| | | | | | | | | | | | | | |  | 
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \  
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | | python-discord/bug/filters/902/antispam-punish-once
AntiSpam: prevent attempts to punish a user multiple times | 
| | |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \  
| |/ / / / / / / / / / / / / / /  
|/| | | | | | | | | | | | | | | |  | 
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  
| | | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | | | Use a paginated embed to output multiple snowflakes | 
| | |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  
| |/ / / / / / / / / / / / / / / /  
|/| | | | | | | | | | | | | | | | |  | 
| |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  
| |_|_|_|_|/ / / / / / / / / / / /  
|/| | | | | | | | | | | | | | | | | Catch NotFound errors when trying to delete the invocation message when cleaning | 
| |/ / / / / / / / / / / / / / / /  
| | | | | | | | | | | | | | | |   
| | | | | | | | | | | | | | | |   
| | | | | | | | | | | | | | | |   
| | | | | | | | | | | | | | | | | This often happens during a raid, when an int e script is added to ban & clean messages. Since the invocation
message will be deleted on the first run, we should except subsequent NotFound errors. | 
| | | | | | | | | | | | | | | | | |  | 
| | | | | | | | | | | | | | | | | |  | 
| |/ / / / / / / / / / / / / / /  
| | | | | | | | | | | | | | |   
| | | | | | | | | | | | | | |   
| | | | | | | | | | | | | | |   
| | | | | | | | | | | | | | |   
| | | | | | | | | | | | | | | | Previously each snowflake passed to the command would have their own embed, which may cause
the bot to send many embeds if a staff unknowingly passed it a bunch of snowflakes. This change
makes sure that we don't run into rate limits on the bot by sending all of the snowflakes in one embed. | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | Name the tasks and use `scheduling.create_task` to ensure exceptions
are caught. | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | A user may manage to send multiple message that violate filters before
the mute is applied. Because of a race condition, subsequent punish
attempts did not detect the mute role exists and therefore proceeded
to apply another mute.
To avoid the race condition, abort any subsequent punish attempts while
one is already ongoing for a given user. It could be possible to wait
instead of abort, but the first attempt failing very likely means
subsequent attempts would fail too.
Fixes #902 | 
| | | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | 
| | | | | | | | | | | | | | | | Instead of:
  'January 1 - January 1'
Do:
  'January 1' | 
| | |/ / / / / / / / / / / / /  
|/| | | | | | | | | | | | |   
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | |   
| | | | | | | | | | | | | | | Using `datetime.utcnow` produces a tz-naive object. When converting
the object into a POSIX timestamp (L212), the library then converts
the naive object into UTC, which will offset it unless the local
timezone is UTC. We prevent this behaviour by using an Arrow repr
instead, which is by default tz-aware. Since the object already
knows it is in UTC, it does not shift when converting to a timestamp.
Because L233 used `fromtimestamp` rather than `utcfromtimestamp`,
the timestamp then got converted back into local time, canceling
the previous error. Therefore, the bug wasn't observable from logs,
as the times looked correct, but were being stored incorrectly.
By using `Arrow.utcfromtimestamp`, the created object will be aware
of being UTC again, which is more safe. |