diff options
author | 2019-01-03 19:29:50 +0100 | |
---|---|---|
committer | 2019-01-03 19:29:50 +0100 | |
commit | f0078841f4f4c48b04478c5de2cbbf32f0839523 (patch) | |
tree | ad8780f8f8b2f74fef6040a0be589dcf3cac9f2e | |
parent | Remove useless `chunk_by` function. (diff) |
Update users who joined and left.
-rw-r--r-- | bot/cogs/sync/syncers.py | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/bot/cogs/sync/syncers.py b/bot/cogs/sync/syncers.py index 57df2c519..1ff04e1d8 100644 --- a/bot/cogs/sync/syncers.py +++ b/bot/cogs/sync/syncers.py @@ -62,14 +62,16 @@ async def sync_roles(bot: Bot, guild: Guild): ) -def get_users_for_update( +def get_users_for_sync( guild_users: Dict[int, User], api_users: Dict[int, User] ) -> ValuesView[User]: """ Obtain a set of users to update on the website. """ + users_to_create = set() users_to_update = set() + for api_user in api_users.values(): guild_user = guild_users.get(api_user.id) if guild_user is not None: @@ -79,7 +81,14 @@ def get_users_for_update( # User left api_user._replace(in_guild=False) users_to_update.add(guild_user) - return users_to_update + + new_user_ids = set(guild_users.keys()) - set(api_users.keys()) + for user_id in new_user_ids: + # User joined + new_user = guild_users[user_id] + users_to_create.add(new_user) + + return users_to_create, users_to_update async def sync_users(bot: Bot, guild: Guild): @@ -104,7 +113,22 @@ async def sync_users(bot: Bot, guild: Guild): ) for member in guild.members } - users_to_update = get_users_for_update(guild_users, api_users) + users_to_create, users_to_update = get_users_for_sync(guild_users, api_users) + log.info("Creating a total of `%d` users on the site.", len(users_to_create)) + for user in users_to_create: + await bot.api_client.post( + 'bot/users', + json={ + 'avatar_hash': user.avatar_hash, + 'discriminator': user.discriminator, + 'id': user.id, + 'in_guild': user.in_guild, + 'name': user.name, + 'roles': list(user.roles) + } + ) + log.info("User creation complete.") + log.info("Updating a total of `%d` users on the site.", len(users_to_update)) for user in users_to_update: if user is None: # ?? |