aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeLines
* Antimalware: fix paste service URL showing replacement fieldGravatar MarkKoz2019-12-03-1/+1
|
* Allow snekbox in esoteric-python channel (#675)Gravatar scragly2019-12-02-4/+15
|\ | | | | Allow snekbox in esoteric-python channel
| * Allow snekbox in esoteric-python channelGravatar MarkKoz2019-12-01-4/+15
|/ | | | | * Add a hidden_channels parameter to in_channel decorator to hide channels from the InChannelCheckFailure error message.
* Merge pull request #671 from Denayder/masterGravatar Leon Sandøy2019-11-30-23/+21
|\ | | | | Update antimalware.py to be more consistent with other information messages & improve code a slight bit
| * Merge branch 'master' into masterGravatar Leon Sandøy2019-11-30-82/+69
| |\ | |/ |/|
* | Change `on_message_edit` - only show differences, highlighted in… (#646)Gravatar scragly2019-11-30-82/+69
|\ \ | | | | | | | | | | | | Change `on_message_edit` - only show differences, highlighted in blue with hyperlink Co-authored-by: Leon Sandøy <[email protected]>
| * \ Merge branch 'master' into message-edit-hyperlinkGravatar scragly2019-11-30-919/+2770
| |\ \ | |/ / |/| |
| * | Update bot/cogs/moderation/modlog.pyGravatar Leon Sandøy2019-11-30-1/+1
| | |
| * | Renamed variables to be more explicit, added type hinting for ↵Gravatar Shirayuki Nekomata2019-11-16-24/+24
| | | | | | | | | | | | `content_before` and `content_after`
| * | Condensed logic, now only check for `add` `remove` `same` diff_type only.Gravatar Shirayuki Nekomata2019-11-14-8/+6
| | |
| * | Switched to using list instead of `str.replace()` for much better control ↵Gravatar Shirayuki Nekomata2019-11-13-10/+13
| | | | | | | | | | | | over each word.
| * | Merged `else` and its single `if`, changed style to be more consistentGravatar Shirayuki Nekomata2019-11-06-7/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Following Mark's reviews: - The single `if` inside the `else` can be merged with its `else` - this will reduce the level of complexity and indentation. - Changed from style ```py new = ('hello' 'world') ``` to ```py new = ( 'hello' 'world' ) ``` to be more consistent with the rest of the code
| * | Changed link used in hyperlinkGravatar Shirayuki Nekomata2019-11-05-2/+2
| | | | | | | | | | | | - A simple `http://.z` will show properly for PC client, but for android it completely broke -> changed to `http://o.hi` - minimum link to make discord think it's a link.
| * | remove unneccessary elseGravatar Shirayuki Nekomata2019-11-05-4/+2
| | |
| * | un-monstrosify codeGravatar Shirayuki Nekomata2019-11-05-9/+15
| | | | | | | | | | | | ... I think?
| * | Merge before & after response, show only differencesGravatar Shirayuki Nekomata2019-11-03-15/+28
| | | | | | | | | | | | | | | | | | - Merged `before_response` and `after_response`. - Only show the differences between `before.clean_content` and `after.clean_content` - Included a `jump to message` link.
| * | RefactorGravatar Shirayuki Nekomata2019-11-03-64/+32
| | | | | | | | | | | | Using ternary to avoid if else
| | * Merge branch 'master' into masterGravatar Leon Sandøy2019-11-30-37/+968
| | |\ | |_|/ |/| |
* | | Merge pull request #621 from python-discord/duck_pondGravatar Leon Sandøy2019-11-30-37/+968
|\ \ \ | | | | | | | | Duck pond!
| * | | Apply review comments to duckpond's unit testsGravatar Sebastiaan Zeeff2019-11-27-72/+128
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://github.com/python-discord/bot/pull/621 I've changed to unit tests according to the comments made on the issue. Most changes are straightforward enough, but, for context, see the PR linked above.
| * | | Move duckpond payload emoji check to method to create testable unitGravatar Sebastiaan Zeeff2019-11-27-6/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I moved the check that tests if a payload contains a duck emoji to a separate method. This makes it easier to test this part of the code as a separate unit than when it's contained in the larger event listener. In addition, I kaizened the name `relay_message_to_duckpond` to the less verbose `relay_message`; that's already clear enough.
| * | | Apply suggestions from code reviewGravatar Sebastiaan Zeeff2019-11-16-4/+3
| | | | | | | | | | | | Co-Authored-By: Mark <[email protected]>
| * | | Add unit tests with full coverage for `bot.cogs.duck_pond`Gravatar Sebastiaan Zeeff2019-11-15-159/+490
| | | | | | | | | | | | | | | | | | | | This commit adds unit tests that provide a full branch coverage of the `bot.cogs.duck_pond` file.
| * | | Add MockAsyncWebhook to mock `discord.Webhook` objectsGravatar Sebastiaan Zeeff2019-11-15-0/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | I have added a mock type to mock `discord.Webhook` instances. Note that the current type is specifically meant to mock webhooks that use an AsyncAdaptor and therefore has AsyncMock/coroutine mocks for the "maybe-coroutine" methods specified in the `discord.py` docs.
| * | | Adjust MockReaction for new AsyncIteratorMock protocolGravatar Sebastiaan Zeeff2019-11-15-3/+1
| | | | | | | | | | | | | | | | | | | | The new AsyncIteratorMock no longer needs an additional method to be used with a Mock object.
| * | | Add MockUser to mock `discord.User` objectsGravatar Sebastiaan Zeeff2019-11-15-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I have added a special mock that follows the specifications of a `discord.User` instance. This is useful, since `Users` have less attributes available than `discord.Members`. Since this difference in availability of information can be important, we should not use a `MockMember` to mock a `discord.user`.
| * | | Add `return_value` support and assertions to AsyncIteratorMockGravatar Sebastiaan Zeeff2019-11-15-4/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The AsyncIteratorMock included in Python 3.8 will work similarly to the mocks of callabes. This means that it allows you to set the items it will yield using the `return_value` attribute. It will also have support for the common Mock-specific assertions. This commit introduces some backports of those features in a slightly simplified way to make the transition to Python 3.8 easier in the future.
| * | | 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
| |\ \ \
| * | | | Add tests for on_raw_reaction_add.Gravatar Leon Sandøy2019-11-12-14/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Basically I suck at this and I can't get this return_value thing to work. I'll have Ves look at it to resolve it. As of right now, multiple tests are failing.
| * | | | Implement a mixed duck test.Gravatar Leon Sandøy2019-11-11-10/+20
| | | | | | | | | | | | | | | | | | | | | | | | | Also gets started setting up for the final tests, which will require more mockwork.
| * | | | Adding ducky count tests and a new AsyncIteratorMockGravatar Leon Sandøy2019-11-11-15/+93
| | | | |
| * | | | Test is_staff and has_green_checkmark.Gravatar Leon Sandøy2019-11-03-17/+35
| | | | |
| * | | | Resolving merge conflicts from masterGravatar Leon Sandøy2019-11-03-197/+277
| |\ \ \ \
| * | | | | Figure out which tests we need.Gravatar Leon Sandøy2019-10-31-2/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds empty tests for all the tests I'd like to add to this pull request. It also adds a few more duckies to the emoji constant list, and adds a single line of clarification to the testing readme.
| * | | | | Merge branch 'duck_pond' of github.com:python-discord/bot into duck_pondGravatar Leon Sandøy2019-10-27-1/+1
| |\ \ \ \ \
| | * | | | | Improve the setup() docstringGravatar Leon Sandøy2019-10-27-1/+1
| | | | | | | | | | | | | | | | | | | | | Co-Authored-By: Mark <[email protected]>
| * | | | | | Adding kosas additional ducks to default-configGravatar Leon Sandøy2019-10-27-3/+8
| | | | | | |
| * | | | | | Addressing review by Mark.Gravatar Leon Sandøy2019-10-27-89/+42
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This refactors the duck pond cog to have fewer redundancies, removes some unused features (like supporting reaction_list in the count_duck and has_green_checkbox helpers), and makes other various minor (mostly cosmetic) improvements.
| * | | | | Fix broken constant testsGravatar Leon Sandøy2019-10-27-5/+4
| | | | | |
| * | | | | Add correct values for constants from production server.Gravatar Leon Sandøy2019-10-27-2/+2
| | | | | |
| * | | | | Appease the linterGravatar Leon Sandøy2019-10-27-6/+13
| | | | | |
| * | | | | Add duck_pond cog.Gravatar Leon Sandøy2019-10-27-0/+207
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This cog will listen for duck reactions on any message, and then: - If the reaction was added by a staff member - and the reaction was a duck - and the message has not already been added to the #duck-pond It will add the message to the #duck-pond and then add a green checkbox to the original message to indicate that the message has been ponded. Messages are added to the #duck-pond via webhook, so that they can retain the appearance of having their original authors. Once this checkmark has been added, the message will not be processed in the future. If the checkmark is removed and there are more than ducks_required ducks on the message, the bot will automatically add the checkmark back. However, if all reactions are removed, the bot does not have a countermeasure for this. In order to implement a countermeasure, it would be necessary to involve the API and the database.
| * | | | | Add duck-pond constants.Gravatar Leon Sandøy2019-10-27-29/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds the emojis, the channel, and the configuration needed for the duck-pond feature. This is added both to config-default.yml, and to the constants.py file.
| | | | | * Make requested tweaks: Use URL constant from constants.py, re-add try/except ↵Gravatar Deniz2019-11-25-15/+17
| | | | | | | | | | | | | | | | | | | | | | | | block and implement the changes requested by Ava
| | | | | * Update PASTE_URL constant to be pydis instead of pythondiscordGravatar Deniz2019-11-25-1/+1
| | | | | |