diff --git a/disco/api/client.py b/disco/api/client.py index 289583c..c3cde29 100644 --- a/disco/api/client.py +++ b/disco/api/client.py @@ -230,7 +230,7 @@ class APIClient(LoggingClass): self.http(route, obj) def channels_messages_reactions_delete_all(self, channel, message): - self.http(Routes.CHANNEL_MESSAGES_REACTIONS_DELETE_ALL, dict(channel=channel, message=message)) + self.http(Routes.CHANNELS_MESSAGES_REACTIONS_DELETE_ALL, dict(channel=channel, message=message)) def channels_permissions_modify(self, channel, permission, allow, deny, typ, reason=None): self.http(Routes.CHANNELS_PERMISSIONS_MODIFY, dict(channel=channel, permission=permission), json={ @@ -291,6 +291,29 @@ class APIClient(LoggingClass): r = self.http(Routes.GUILDS_DELETE, dict(guild=guild)) return Guild.create(self.client, r.json()) + def guilds_create( + self, + name=None, + region=None, + icon=None, + verification_level=None, + default_message_notifications=None, + explicit_content_filter=None, + roles=None, + channels=None): + + r = self.http(Routes.GUILDS_CREATE, json=optional( + name=name, + region=region, + icon=icon, + verification_level=verification_level, + default_message_notifications=default_message_notifications, + explicit_content_filter=explicit_content_filter, + roles=roles, + channels=channels + )) + return Guild.create(self.client, r.json()) + def guilds_channels_list(self, guild): r = self.http(Routes.GUILDS_CHANNELS_LIST, dict(guild=guild)) return Channel.create_hash(self.client, 'id', r.json(), guild_id=guild) @@ -375,6 +398,10 @@ class APIClient(LoggingClass): r = self.http(Routes.GUILDS_BANS_LIST, dict(guild=guild)) return GuildBan.create_hash(self.client, 'user.id', r.json()) + def guilds_ban_get(self, guild, user): + r = self.http(Routes.GUILDS_BAN_GET, dict(guild=guild, user=user)) + return GuildBan.create(self.client, r.json()) + def guilds_bans_create(self, guild, user, delete_message_days=0, reason=None): self.http(Routes.GUILDS_BANS_CREATE, dict(guild=guild, user=user), params={ 'delete-message-days': delete_message_days, @@ -451,10 +478,18 @@ class APIClient(LoggingClass): r = self.http(Routes.GUILDS_INVITES_LIST, dict(guild=guild)) return Invite.create_map(self.client, r.json()) + def guilds_vanity_url_get(self, guild): + r = self.http(Routes.GUILDS_VANITY_URL_GET, dict(guild=guild)) + return Invite.create(self.client, r.json()) + def guilds_webhooks_list(self, guild): r = self.http(Routes.GUILDS_WEBHOOKS_LIST, dict(guild=guild)) return Webhook.create_map(self.client, r.json()) + def guilds_emoji_get(self, guild, emoji): + r = self.http(Routes.GUILDS_EMOJI_GET, dict(guild=guild, emoji=emoji)) + return GuildEmoji.create(self.client, r.json()) + def guilds_emojis_list(self, guild): r = self.http(Routes.GUILDS_EMOJIS_LIST, dict(guild=guild)) return GuildEmoji.create_map(self.client, r.json()) diff --git a/disco/api/http.py b/disco/api/http.py index 03d2aed..a680e80 100644 --- a/disco/api/http.py +++ b/disco/api/http.py @@ -65,6 +65,7 @@ class Routes(object): # Guilds GUILDS = '/guilds/{guild}' GUILDS_GET = (HTTPMethod.GET, GUILDS) + GUILDS_CREATE = (HTTPMethod.POST, '/guilds') GUILDS_MODIFY = (HTTPMethod.PATCH, GUILDS) GUILDS_DELETE = (HTTPMethod.DELETE, GUILDS) GUILDS_CHANNELS_LIST = (HTTPMethod.GET, GUILDS + '/channels') @@ -78,6 +79,7 @@ class Routes(object): GUILDS_MEMBERS_ME_NICK = (HTTPMethod.PATCH, GUILDS + '/members/@me/nick') GUILDS_MEMBERS_KICK = (HTTPMethod.DELETE, GUILDS + '/members/{member}') GUILDS_BANS_LIST = (HTTPMethod.GET, GUILDS + '/bans') + GUILDS_BAN_GET = (HTTPMethod.GET, GUILDS + '/bans/{user}') GUILDS_BANS_CREATE = (HTTPMethod.PUT, GUILDS + '/bans/{user}') GUILDS_BANS_DELETE = (HTTPMethod.DELETE, GUILDS + '/bans/{user}') GUILDS_ROLES_LIST = (HTTPMethod.GET, GUILDS + '/roles') @@ -88,6 +90,7 @@ class Routes(object): GUILDS_PRUNE_COUNT = (HTTPMethod.GET, GUILDS + '/prune') GUILDS_PRUNE_BEGIN = (HTTPMethod.POST, GUILDS + '/prune') GUILDS_VOICE_REGIONS_LIST = (HTTPMethod.GET, GUILDS + '/regions') + GUILDS_VANITY_URL_GET = (HTTPMethod.GET, GUILDS + '/vanity-url') GUILDS_INVITES_LIST = (HTTPMethod.GET, GUILDS + '/invites') GUILDS_INTEGRATIONS_LIST = (HTTPMethod.GET, GUILDS + '/integrations') GUILDS_INTEGRATIONS_CREATE = (HTTPMethod.POST, GUILDS + '/integrations') @@ -99,6 +102,7 @@ class Routes(object): GUILDS_WEBHOOKS_LIST = (HTTPMethod.GET, GUILDS + '/webhooks') GUILDS_EMOJIS_LIST = (HTTPMethod.GET, GUILDS + '/emojis') GUILDS_EMOJIS_CREATE = (HTTPMethod.POST, GUILDS + '/emojis') + GUILDS_EMOJI_GET = (HTTPMethod.GET, GUILDS + '/emojis/{emoji}') GUILDS_EMOJIS_MODIFY = (HTTPMethod.PATCH, GUILDS + '/emojis/{emoji}') GUILDS_EMOJIS_DELETE = (HTTPMethod.DELETE, GUILDS + '/emojis/{emoji}') GUILDS_AUDITLOGS_LIST = (HTTPMethod.GET, GUILDS + '/audit-logs') diff --git a/disco/types/guild.py b/disco/types/guild.py index 041c09b..ba1ba25 100644 --- a/disco/types/guild.py +++ b/disco/types/guild.py @@ -434,6 +434,9 @@ class Guild(SlottedModel, Permissible): def get_bans(self): return self.client.api.guilds_bans_list(self.id) + def get_ban(self, user): + return self.client.api.guilds_bans_list(self.id, user) + def delete_ban(self, user, **kwargs): self.client.api.guilds_bans_delete(self.id, to_snowflake(user), **kwargs) @@ -495,9 +498,15 @@ class Guild(SlottedModel, Permissible): def get_invites(self): return self.client.api.guilds_invites_list(self.id) + def get_vanity_url(self): + return self.client.api.guilds_vanity_url_get(self.id) + def get_emojis(self): return self.client.api.guilds_emojis_list(self.id) + def get_emoji(self, emoji): + return self.client.api.guilds_emoji_get(self.id, emoji) + def get_icon_url(self, fmt='webp', size=1024): if not self.icon: return ''