Skip to content
Permalink
Branch: master
Commits on Oct 8, 2019
  1. Ensure display name changes are logged

    SebastiaanZ committed Oct 8, 2019
    #489
    
    Recently, we discovered that not all display name changes were logged
    to the #user-log channel. This problem was caused by the `old_value`
    or the `new_value` showing up as `None` when a user sets or removes a
    guild-specific nickname. Since we ignore changes where one of the two
    values is `None`, we did not log these `None->nick` or `nick->None`
    events.
    
    Since we are mainly interested in the display name of the user, and
    the display name is equal to the user's guild-specific nickname if
    they have set one and otherwise their username, I made the following
    changes:
    
    - Add logging of changes in the display names of members.
    
    - Ignore nick-specific changes completely, since these changes are
      already captured by the changes in the display name we now log.
    
    This closes #489
  2. Show infraction reason when the bot is the actor

    SebastiaanZ committed Oct 8, 2019
    #476
    
    We recently decided to hide the reason in the confirmation message
    the bot sends after applying an infraction. In most situations, this
    makes sense, since the message containing the invocation command
    already contains the reason.
    
    However, if the infraction was triggered by the bot itself (e.g., an
    antispam trigger), this means that we're missing information that
    provides context to the infraction.
    
    This commit adds the reason back to the confirmation message, but
    only if the actor of the infraction was the bot itself.
    
    Closes #476
  3. Set bot as actor of antispam infractions

    SebastiaanZ committed Oct 8, 2019
    As mentioned in #476, the bot currently sets the actor of infractions
    applied due to an antispam rule trigger to the offending member. The
    reason is that we get a `Context` object from the message that
    triggered the antispam rule, which was sent by the offender.
    
    I've changed it by patching both available author attributes,
    `Context.author` and `Context.message.author` with the bot user.
  4. Merge pull request #462 from python-discord/moderation-cleanup

    SebastiaanZ committed Oct 8, 2019
    Refactors the moderation utilities.
  5. Merge branch 'master' into moderation-cleanup

    SebastiaanZ committed Oct 8, 2019
Commits on Oct 3, 2019
  1. Check if tzinfo is None in ISODateTime test

    SebastiaanZ committed Oct 3, 2019
    As we have decided that the converter should return naive datetime
    objects, we should explicitly test that datetime strings with a
    timezone offset are still converted to a naive datetime object. I
    have done this by adding a `tzinfo is None` assertion.
Commits on Oct 2, 2019
  1. Make ISODateTime return tz-unaware datetime

    SebastiaanZ committed Oct 2, 2019
    The parser we use, `dateutil.parsers.isoparse` returns a timezone-
    aware or timezone-unaware `datetime` object depending on whether or
    not the datetime string included a timezone offset specification.
    
    Since we can't compare tz-aware objects to tz-unaware objects it's
    better to make sure our converter is consistent in the type it will
    return.
    
    For now, I've chosen to return tz-unaware datetime objects, since
    `discord.py` also returns tz-unaware datetime objects when accessing
    datetime-related attributes of objects. Since we're likely to compare
    "our" datetime objects to discord.py-provided datetime objects, I
    think that's the most parsimonious option for now.
    
    Note: It's probably a good idea to open a larger discussion about
    using timezone-aware datetime objects throughout the library to
    avoid a UTC-time being interpreted as localtime. This will require
    a broader discussion than this commit/PR allows, though.
  2. Remove angle brackets from ISODateTime docstring

    SebastiaanZ committed Oct 2, 2019
    This commit removes the angle brackets from the url in the docstring
    of `ISODateTime.convert`. The reason: it's ugly.
  3. Apply docstring review suggestion

    SebastiaanZ and MarkKoz committed Oct 2, 2019
    Co-Authored-By: Mark <kozlovmark@gmail.com>
  4. Fix `cog_unload` bug in WatchChannel ABC

    SebastiaanZ committed Oct 2, 2019
    #482
    
    There was small bug in the `cog_unload` method of the WatchChannel
    ABC in `bot.cogs.watchchannels.watchchannel`. The problem was that it
    tries to check if the Task assigned to `self._consume_task` is done
    by accessing its `done` method. However, if a watch channel has not
    yet relayed messages after the bot has started, it will not have a
    consumption task yet, meaning this `_consume_task` attribute will be
    assigned to `None`.
    
    The solution is to change the `if` condition to:
    
      `if self._consume_task and not self._consume_task.done():`
    
    This commit closes #482
Commits on Oct 1, 2019
  1. Remove surplus quotation mark in class docstring

    SebastiaanZ and sco1 committed Oct 1, 2019
    Co-Authored-By: S. Co1 <sco1@users.noreply.github.com>
  2. Make `!tags edit` use PATCH to update tags

    SebastiaanZ committed Oct 1, 2019
    #474
    
    This commit makes sure we're using the PATCH method to update tags,
    instead of the POST method. The problem was that the `!tags edit`
    command was an alias of `!tags set`, which uses the POST method to
    post new tags to the API.
    
    However, when a tag with a given name already exists, the API will
    refuse a POST request in an attempt to update it; we need to use the
    PATCH method to the `bot/tags/{tag_name}` endpoint instead.
    
    I fixed this by creating a separate subcommand, `!tags edit`, that
    uses the correct PATCH method to update an existing tag.
    
    This commit closes #474
  3. Add converter for ISO-formatted datetime strings

    SebastiaanZ committed Oct 1, 2019
    Related to #458
    
    This commit adds a converter that automatically parses ISO-formatted
    datetime strings and returns a `datetime.datetime` object. It uses
    `dateutil.parser.isoparse` to do the heavy lifting, so it supports
    the same formats as this method.
    
    In addition, I have added tests that ensure that it accepts certain
    formats and added a description of these 'guaranteed' formats to the
    `ISODate.convert` docstring.
    
    This commit should make it easy to implement #485
You can’t perform that action at this time.