aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeLines
* Move payload checks to start of DuckPond.on_raw_reaction_addGravatar Sebastiaan Zeeff2019-11-15-7/+7
| | | | | | | | | The `DuckPond.on_raw_message_add` event listener makes an API call to fetch the message the reaction was added to. However, we don't need to fetch the message if the reaction that was added is not relevant to the duck pond. To prevent such unnecessary API calls, I have moved the code that checks for the relevance of the reaction event to before the code that fetches the message.
* Refactor DuckPond msg relay to separate methodGravatar Sebastiaan Zeeff2019-11-15-29/+33
| | | | | | | | | | | | To allow for separate testing of the code that relays messages to the duck pond, I have moved this part of the code from the event listener to a separate method. The overall logic has remained unchanged. In addition, I've kaizened to things: - Removed unnecessary f-string without interpolation; - Removed double negative (not item not in list)
* Check only for bot's green checkmark in DuckPondGravatar Sebastiaan Zeeff2019-11-15-4/+5
| | | | | | | | | | Previously, the presence of any green checkmark as a reaction would prevent a message from being relayed to the duck pond, regardless of the actor of that reaction. Since we only want to check if the bot has already processed this message, we should check for a checkmark added by the bot. This commit adds such a user check.
* Add MockAttachment type and attachments default for MockMessageGravatar Sebastiaan Zeeff2019-11-14-1/+16
| | | | | | | | | | | | | As stated from the start, our intention is to add custom mock types as we need them for testing. While writing tests for DuckPond, I noticed that we did not have a mock type for Attachments, so I added one with this commit. In addition, I think it's a very sensible for MockMessage to have an empty list as a default value for the `attachements` attribute. This is equal to what `discord.Message` returns for a message without attachments and makes sure that if you don't explicitely add an attachment to a message, `MockMessage.attachments` tests as falsey.
* Add bot=False default value to MockMemberGravatar Sebastiaan Zeeff2019-11-14-1/+1
| | | | | | | | | | | | | | | | | By default, a mocked value is considered `truthy` in Python, like all non-empty/non-zero/non-None values in Python. This means that if an attribute is not explicitly set on a mock, it will evaluate at as truthy in a boolean context, since the mock will provide a truthy mocked value by default. This is not the best default value for the `bot` attribute of our MockMember type, since members are rarely bots. It makes much more intuitive sense to me to consider a member to not be a bot, unless we explicitly set `bot=True`. This commit sets that sensible default value that can be overwritten by passing `bot=False` to the constructor or setting the `object.bot` attribute to `False` after the creation of the mock.
* Merging in masterGravatar Leon Sandøy2019-11-13-756/+1396
|\
| * Enhancements for `tests.helpers` and our test suite (#660)Gravatar scragly2019-11-14-157/+134
| |\ | | | | | | | | | | | | Enhancements for `tests.helpers` and our test suite Co-authored-by: null <[email protected]>
| | * Merge branch 'master' into unittest-helpers-improvementsGravatar scragly2019-11-14-36/+167
| | |\ | | |/ | |/|
| * | Merge pull request #656 from python-discord/checkpoint-changesGravatar Mark2019-11-10-22/+53
| |\ \ | | | | | | | | Forward pings in checkpoint to mod-alerts and reword periodic checkpoint ping
| | * \ Merge branch 'master' into checkpoint-changesGravatar Mark2019-11-10-540/+677
| | |\ \ | | |/ / | |/| |
| * | | Merge pull request #641 from kwzrd/unittest-linksGravatar Mark2019-11-08-0/+101
| |\ \ \ | | | | | | | | | | Add unit test for links antispam rule
| | * \ \ Merge branch 'master' into unittest-linksGravatar Mark2019-11-08-608/+1193
| | |\ \ \ | | |/ / / | |/| | |
| * | | | Merge pull request #653 from python-discord/talent-poolingGravatar Sebastiaan Zeeff2019-11-08-14/+13
| |\ \ \ \ | | | | | | | | | | | | Allow helpers to nominate people
| | * | | | Refactor bigbrother to use constantsGravatar kosayoda2019-11-08-5/+5
| | | | | |
| | * | | | Allow helpers to nominate peopleGravatar kosayoda2019-11-08-9/+8
| |/ / / /
| | * | | Update docstring to use asterisks when referring to argument namesGravatar kwzrd2019-11-08-1/+1
| | | | | | | | | | | | | | | Co-Authored-By: Kyle Stanley <[email protected]>
| | * | | Add whitespace for readability, consistency & allureGravatar kwzrd2019-11-08-0/+1
| | | | |
| | * | | Adjust case to only test a single aspectGravatar kwzrd2019-11-02-1/+1
| | | | |
| | * | | Annotate unclear test cases with inline commentsGravatar kwzrd2019-11-02-2/+2
| | | | |
| | * | | Add two more test cases for links rule unit testGravatar kwzrd2019-11-01-0/+7
| | | | |
| | * | | Add unit test for links antispam ruleGravatar kwzrd2019-11-01-0/+93
| | | | |
| | | * | [kaizen] Remove now duplicate channel checkGravatar Derek2019-11-09-19/+18
| | | | | | | | | | | | | | | | | | | | Unindent subsequent lines after check
| | | * | Forward user/role pings in checkpoint to mod-alertsGravatar Derek2019-11-09-2/+34
| | | | | | | | | | | | | | | | | | | | [kaizen] limit on_message listener to verification channel
| | | * | Reword periodic #checkpoint messageGravatar Derek2019-11-04-1/+1
| | | | |
| | | | * Prevent await warnings for MockBot's create_taskGravatar Sebastiaan Zeeff2019-11-13-1/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the coroutine object passed to `MockBot.loop.create_task` would trigger a `RuntimeWarning` for not being awaited as we do not actually create a task for it. To prevent these warnings, coroutine objects passed will now automatically be closed.
| | | | * Prevent setting unknown attributes on d.py mocksGravatar Sebastiaan Zeeff2019-11-13-158/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Our custom `discord.py` now follow the specifications of the object they are mocking more strictly by using the `spec_set` instead of the `spec` kwarg to initialize the specifications. This means that trying to set an attribute that does not follow the specifications will now also result in an `AttributeError`. To make sure we are not trying to set illegal attributes during the default initialization of the mock objects, I've changed the way we handle default values of parameters. This does introduce a breaking change: Instead of passing a `suffix_id`, the `id` attribute should now be passed using the exact name. `id`. This commit also makes sure existing tests follow this change.
| | | | * Allow `name` attribute to be set during Mock initGravatar Sebastiaan Zeeff2019-11-13-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `name` keyword argument has a special meaning for the default mockobjects provided by `unittest.mock`. This means that by default, the common d.py `name` attribute can't be set during initalization of one of our custom Mock-objects by passing it to the constructor. Since it's unlikely for us to make use of the special `name` feature of mocks and more likely to want to set the d.py `name` attribute, I added special handling of the `name` kwarg.
| | | | * Prevent unwanted logging while running testsGravatar Sebastiaan Zeeff2019-11-13-1/+14
| | |_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, logging messages would output to std.out. when running individual test files (instead of running the entire suite). To prevent this, I've added a `for`-loop to `tests.helpers` that sets the level of all registered loggers to `CRITICAL`. The reason for adding this to `tests.helpers` is simple: It's the most common file to be imported in individual tests, increasing the chance of the code being run for individual test files. A small downside of this way of handling logging is that when we are trying to assert logging messages are being emitted, we need to set the logger explicitly in the `self.assertLogs` context manager. This is a small downside, though, and probably good practice anyway. There was one test in `tests.bot.test_api` that did not do this, so I have changed this to make the test compatible with the new set-up.
| * | | Merge pull request #618 from python-discord/schedule-superstarifyGravatar S. Co12019-11-04-526/+563
| |\ \ \ | | |_|/ | |/| | Schedule superstarify infractions for expiration
| | * | Merge branch 'master' into schedule-superstarifyGravatar S. Co12019-11-04-260/+838
| | |\ \ | | |/ / | |/| |
| * | | User command enhancements (#637)Gravatar scragly2019-11-04-62/+552
| |\ \ \ | | | | | | | | | | | | | | | | | | | | User command enhancements Co-authored-by: null <[email protected]>
| | * \ \ Merge branch 'master' into user-command-enhancementsGravatar scragly2019-11-04-7/+66
| | |\ \ \ | | |/ / / | |/| | |
| * | | | Change invite filter message to accurately reflect the new rulesGravatar kosayoda2019-11-04-1/+1
| | | | |
| * | | | Merge pull request #648 from python-discord/user-status-summaryGravatar Mark2019-11-03-1/+9
| |\ \ \ \ | | | | | | | | | | | | Show custom statuses in !user output
| | * \ \ \ Merge branch 'master' into user-status-summaryGravatar Mark2019-11-03-3/+53
| | |\ \ \ \ | | |/ / / / | |/| | | |
| | * | | | Show custom statuses in !user outputGravatar Jeremiah Boby2019-11-03-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | Resolves #647
| | | * | | Enhance the output of the user commandGravatar Sebastiaan Zeeff2019-10-31-62/+552
| | | | |/ | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://github.com/python-discord/bot/issues/628 https://github.com/python-discord/bot/issues/339 This commit introduces several changes to the output of the `!user` command for moderation staff. The output for regular users has not changed. Changes: - When issued in a moderation channel, the infraction count of the user will now be broken down by type as described in #339. This allows moderators to get a quicker overview of someone's history by providing more information. The command will display the total number of infractions per type, with the number of active infractions in parentheses behind it if there are any. This change also means that there no longer a need for the `hidden` parameter: When issued in a moderation channel, hidden infractions are included by default; when issued outside of a mod channel, the command will be equal to what a regular user would get. In addition to broken-down infraction info, the command now also shows information about the nominations of a user when it's issued inside of a moderation channel. - The code has been refactored to smaller units that take care of a single action to make unit testing easier. I have included tests that cover the command and all of the new helper methods. Tests for the other methods/commands in the cog will be added in the specific issue calling for tests for this cog (#581) This commit closes #628 and closes #339
| | | | * Superstarify: return None in _pardon_action for supported typesGravatar MarkKoz2019-10-25-1/+4
| | | | |
| | | | * Moderation: make infraction notification embed title lowercaseGravatar MarkKoz2019-10-25-1/+1
| | | | |
| | | | * Moderation: remove full stops from pardon embed titlesGravatar MarkKoz2019-10-25-2/+2
| | | | |
| | | | * Superstarify: make mod log title lowercase for consistencyGravatar MarkKoz2019-10-25-1/+1
| | | | |
| | | | * Superstarify: make the apply embed colour goldGravatar MarkKoz2019-10-25-9/+11
| | | | |
| | | | * Superstarify: fix incorrect infraction type check in _pardon_actionGravatar MarkKoz2019-10-25-1/+1
| | | | |
| | | | * InfractionScheduler: remove redundant loggingGravatar MarkKoz2019-10-25-3/+0
| | | | |
| | | | * Superstarify: save the old nickname before editing itGravatar MarkKoz2019-10-25-2/+3
| | | | |
| | | | * Superstarify: negate active infractions check in on_member_updateGravatar MarkKoz2019-10-25-1/+1
| | | | |
| | | | * Superstarify: fix mod log mentionGravatar MarkKoz2019-10-25-1/+1
| | | | |
| | | | * Superstarify: fit within 100 columns & use double quotesGravatar MarkKoz2019-10-25-7/+13
| | | | |
| | | | * Superstarify: refactor on_member_update eventGravatar MarkKoz2019-10-25-39/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Use notify_infraction to be more consistent * Add an audit log reason to the member edit * Simplify docstring * Simplify log message
| | | | * Superstarify: ignore member update event when applyingGravatar MarkKoz2019-10-25-0/+1
| | | | |