aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeLines
* Sync tests: test empty diff for identical usersGravatar MarkKoz2020-02-12-8/+8
|
* Sync tests: work around @everyone role being added by MockMemberGravatar MarkKoz2020-02-12-2/+3
|
* Sync tests: fix mismatched attributes when creating a mock userGravatar MarkKoz2020-02-12-0/+3
|
* Sync tests: fix fake_user fixtureGravatar MarkKoz2020-02-12-7/+9
|
* Sync tests: test empty diff for no usersGravatar MarkKoz2020-02-12-6/+9
|
* Sync tests: add fixture to get a guild with membersGravatar MarkKoz2020-02-12-1/+19
|
* Sync tests: rename user sync test caseGravatar MarkKoz2020-02-12-2/+2
|
* Sync tests: test syncs with multiple rolesGravatar MarkKoz2020-02-12-15/+37
|
* Sync tests: test API requests for role syncingGravatar MarkKoz2020-02-12-1/+34
|
* Sync tests: create separate role test cases for diff and sync testsGravatar MarkKoz2020-02-12-2/+10
|
* Sync tests: remove guild_roles lists and assign roles to variablesGravatar MarkKoz2020-02-12-14/+8
| | | | | Makes the creation of the expected diff clearer since the variable has a name compared to accessing some index of a list.
* Sync tests: remove diff test for updated and new roles togetherGravatar MarkKoz2020-02-12-19/+0
| | | | | Redundant since test_diff_for_new_updated_and_deleted_roles tests all 3 types together.
* Sync tests: test diff for all 3 role changes simultaneouslyGravatar MarkKoz2020-02-12-21/+17
|
* Sync tests: test diff for deleted rolesGravatar MarkKoz2020-02-12-17/+10
|
* Sync tests: test diff for new rolesGravatar MarkKoz2020-02-12-20/+15
|
* Sync tests: create a role in setUp to use as a constantGravatar MarkKoz2020-02-12-6/+5
|
* Sync tests: test diff for updated rolesGravatar MarkKoz2020-02-12-27/+16
|
* Sync tests: test empty diff for identical rolesGravatar MarkKoz2020-02-12-8/+11
|
* Sync tests: fix creation of MockRolesGravatar MarkKoz2020-02-12-3/+4
| | | | Role was being accessed like a class when it is actually a dict.
* Sync tests: add fixture to create a guild with rolesGravatar MarkKoz2020-02-12-1/+21
|
* Sync tests: rename the role syncer test caseGravatar MarkKoz2020-02-12-1/+1
|
* Tests: add a MockAPIClientGravatar MarkKoz2020-02-12-0/+18
|
* Sync: handle API errors gracefullyGravatar MarkKoz2020-02-12-10/+21
| | | | | | | The whole sync is aborted when an error is caught for simplicity's sake. The sync message is edited to display the error and the traceback is logged. To distinguish an error from an abort/timeout, the latter now uses a warning emoji while the former uses the red cross.
* Sync: mention core devs when results are shown & fix missing spaceGravatar MarkKoz2020-02-12-6/+8
|
* Sync: split _confirm() into two functionsGravatar MarkKoz2020-02-12-10/+32
| | | | | | One is responsible for sending the confirmation prompt while the other waits for the reaction. The split allows for the confirmation prompt to be edited with the results of automatic syncs too.
* Sync: keep the mention for all edits of the confirmation promptGravatar MarkKoz2020-02-12-4/+6
| | | | This makes it clearer to users where the notification came from.
* Sync: add trace and debug loggingGravatar MarkKoz2020-02-12-1/+16
|
* Sync: fix confirmation reaction checkGravatar MarkKoz2020-02-12-5/+10
| | | | | | | * Ignore bot reactions * Check for core dev role if sync is automatic * Require author as an argument to _confirm() so it can be compared against the reaction author
* Sync: remove author mention from confirm promptGravatar MarkKoz2020-02-12-2/+2
|
* Sync: fix overwriting message with None after editing itGravatar MarkKoz2020-02-12-1/+1
|
* Sync: fix passing context instead of message to _confirm()Gravatar MarkKoz2020-02-12-4/+5
| | | | * Mention possibility of timing out as a reason for aborting a sync
* Sync: fix missing await for fetch_channelGravatar MarkKoz2020-02-12-1/+1
|
* Sync: allow for None values in DiffsGravatar MarkKoz2020-02-12-4/+4
|
* Sync: make Role, User, and Diff privateGravatar MarkKoz2020-02-12-15/+15
|
* Sync: remove generic type from DiffGravatar MarkKoz2020-02-12-19/+10
| | | | | | | | | | It doesn't play along well with NamedTuple due to metaclass conflicts. The workaround involved created a NamedTuple-only base class, which does work but at the cost of confusing some static type checkers. Since Diff is now an internal data structure, it no longer really needs to have precise type annotations. Therefore, a normal namedtuple is adequate.
* Sync: move sync logic into Syncer base classGravatar MarkKoz2020-02-12-93/+54
| | | | | | | | | | | | The interface was becoming cumbersome to work with so it was all moved to a single location. Now just calling Syncer.sync() will take care of everything. * Remove Optional type annotation from Diff attributes * _confirm() can edit the original message and use it as the prompt * Calculate the total diff and compare it against the max before sending a confirmation prompt * Remove abort message from sync(); _confirm() will handle that
* Sync: prompt to confirm when diff is greater than 10Gravatar MarkKoz2020-02-12-37/+158
| | | | | | | | | | | The confirmation prompt will be sent to the dev-core channel or the specified context. Confirmation is done via reactions and waits 5 minutes before timing out. * Add name property to Syncers * Make _get_diff private; only sync() needs to be called now * Change spelling of synchronize to synchronise * Update docstrings
* Sync: create classes for syncersGravatar MarkKoz2020-02-12-242/+158
| | | | | | | | | Replaces the functions with a class for each syncer. The classes inherit from a Syncer base class. A NamedTuple was also created to replace the tuple of the object differences that was previously being returned. * Use namedtuple._asdict to simplify converting namedtuples to JSON
* Sync: support sending messages to a context in sync()Gravatar MarkKoz2020-02-12-17/+11
|
* Sync: support multiple None totals returns from a syncerGravatar MarkKoz2020-02-12-10/+7
|
* Sync: create function for running a single syncerGravatar MarkKoz2020-02-12-22/+24
|
* Sync: refactor cogGravatar MarkKoz2020-02-12-25/+26
| | | | | | | | * Use ID from constants directly instead of SYNC_SERVER_ID * Use f-strings instead of %s for logging * Fit into margin of 100 * Invert condition to reduce nesting * Use Any instead of incorrect function annotation for JSON values
* API: create request function which has a param for the HTTP methodGravatar MarkKoz2020-02-12-18/+10
| | | | Reduces code redundancy.
* API: define functions with keyword-only argumentsGravatar MarkKoz2020-02-12-10/+10
| | | | This seems to have been the intent of the original implementation.
* Constants: add dev-core channel and check mark emojiGravatar MarkKoz2020-02-12-0/+4
|
* Use wait_until_guild_available instead of wait_until_readyGravatar MarkKoz2020-02-12-13/+13
| | | | It has a much better guarantee that the cache will be available.
* Bot: make the connector attribute privateGravatar MarkKoz2020-02-12-4/+4
|
* Bot: add wait_until_guild_availableGravatar MarkKoz2020-02-12-0/+39
| | | | | | | | | This coroutine waits until the configured guild is available and ensures the cache is present. The on_ready event is inadequate because it only waits 2 seconds for a GUILD_CREATE gateway event before giving up and thus not populating the cache for unavailable guilds.
* Merge pull request #747 from mosguinz/pagniation-fixGravatar Sebastiaan Zeeff2020-02-12-1/+1
|\ | | | | Fix pagniation module for "last page" reaction
| * Fix pagniation module for "last page" reactionGravatar mosguinz2020-02-12-1/+1
|/ | | | Fixes #746.