@@ -8,11 +8,11 @@ template beginPrune*(g: Guild;
88 # # Begins a guild prune.
99 getClient.api.beginGuildPrune (g.id, days, include_roles, compute_prune_count)
1010
11- template getPruneCount * (g: Guild , days: int ): Future [int ] =
11+ template getPruneCount * (g: Guild ; days: int ): Future [int ] =
1212 # # Gets the prune count.
1313 getClient.api.getGuildPruneCount (g.id, days)
1414
15- template edit * (g: Guild , lvl: MFALevel ; reason = " " ): Future [MFALevel ] =
15+ template editMFA * (g: Guild ; lvl: MFALevel ; reason = " " ): Future [MFALevel ] =
1616 # # Modify Guild MFA Level, requiring guild ownership.
1717 getClient.api.editGuildMFALevel (g.id, lvl, reason)
1818
@@ -35,33 +35,33 @@ template edit*(g: Guild;
3535 # # Modifies a guild.
3636 # # Icon needs to be a base64 image.
3737 # # (See: https://nim-lang.org/docs/base64.html)
38- # #
39- # #
40- # # Read more at:
38+ # #
39+ # #
40+ # # Read more at:
4141 # # https://discord.com/developers/docs/resources/guild#modify-guild
42- getClient.api.editGuild (
42+ getClient.api.editGuild (
4343 g.id, name, description, region, afk_channel_id, icon,
4444 discovery_splash, owner_id, splash, banner,
4545 system_channel_id, rules_channel_id,
4646 preferred_locale, public_updates_channel_id,
4747 verification_level, default_message_notifications,
4848 system_channel_flags,
4949 explicit_content_filter, afk_timeout,
50- features, premium_progress_bar_enabled
50+ features, premium_progress_bar_enabled, reason
5151 )
5252
53- template getAuditLogs * (g: Guild ;
54- user_id, before = " " , action_type = - 1 ;
53+ template getAuditLogs * (g: Guild ;
54+ user_id, before = " " ; action_type = - 1 ;
5555 limit: range [1 .. 100 ] = 50
5656): Future [AuditLog ] =
5757 # # Get guild audit logs. The maximum limit is 100.
5858 getClient.api.getGuildAuditLogs (g.id, user_id, before, action_type, limit)
5959
60- template deleteRole * (g: Guild , r: Role ): Future [void ] =
61- # # Deletes a guild role.
62- getClient.api.deleteGuildRole (g.id, r.id)
60+ template deleteRole * (g: Guild ; r: Role ): Future [void ] =
61+ # # Deletes a guild role.
62+ getClient.api.deleteGuildRole (g.id, r.id)
6363
64- template editRole * (g: Guild , r: Role ;
64+ template editRole * (g: Guild ; r: Role ;
6565 name = none string ;
6666 icon, unicode_emoji = none string ;
6767 permissions = none PermObj ; color = none int ;
@@ -81,17 +81,17 @@ template getInvites*(g: Guild): Future[seq[InviteMetadata]] =
8181 # # Gets guild invites.
8282 getClient.api.getGuildInvites (g.id)
8383
84- template getVanity * (g: Guild ): Future [tuple [code: Option [string ], uses: int ]] =
85- # # Get the guild vanity url. Requires the MANAGE_GUILD permission.
84+ template getVanity * (g: Guild ): Future [tuple [code: Option [string ]; uses: int ]] =
85+ # # Get the guild vanity url. Requires the MANAGE_GUILD permission.
8686 # # `code` will be null if a vanity url for the guild is not set.
8787 getClient.api.getGuildVanityUrl (g.id)
8888
89- template editMember * (g: Guild , m: Member ;
89+ template editMember * (g: Guild ; m: Member ;
9090 nick, channel_id, communication_disabled_until = none string ;
9191 roles = none seq [string ];
9292 mute, deaf = none bool ;
9393 reason = " "
94- ): Future [void ] =
94+ ): Future [void ] =
9595 # # Modifies a guild member
9696 # # Note:
9797 # # - `communication_disabled_until` - ISO8601 timestamp :: [<=28 days]
@@ -100,26 +100,33 @@ template editMember*(g: Guild, m: Member;
100100 roles, mute, deaf, reason
101101 )
102102
103- template removeMember * (g: Guild , m: Member , reason = " " ): Future [void ] =
103+ template removeMember * (g: Guild ; m: Member ; reason = " " ): Future [void ] =
104104 # # Removes a guild member.
105105 getClient.api.removeGuildMember (g.id, m.user.id, reason)
106106
107- template getBan * (g: Guild , user_id: string ): Future [GuildBan ] =
107+ template getBan * (g: Guild ; m: Member | string ): Future [GuildBan ] =
108108 # # Gets guild ban.
109- getClient.api.getGuildBan (g.id, mb .user.id)
109+ getClient.api.getGuildBan (g.id, ( when m is Member : m .user.id else : m) )
110110
111111template getBans * (g: Guild ): Future [seq [GuildBan ]] =
112112 # # Gets all the guild bans.
113113 getClient.api.getGuildBans (g.id)
114114
115- template ban * (g: Guild , m: Member , deletemsgdays : range [0 .. 7 ] = 0 ;
115+ template ban * (g: Guild ; m: Member ; delete_msg_days : range [0 .. 7 ] = 0 ;
116116 reason = " " ): Future [void ] =
117117 # # Creates a guild ban.
118- getClient.api.createGuildBan (g.id, m.user.id, deletemsgdays , reason)
118+ getClient.api.createGuildBan (g.id, m.user.id, delete_msg_days , reason)
119119
120- template removeBan * (g: Guild , mb: Member , reason = " " ): Future [void ] =
120+ template bulkBan * (g: Guild ;
121+ user_ids: seq [string ];
122+ delete_message_seconds = 0 ;
123+ reason = " " ): Future [tuple [banned_users, failed_users: seq [string ]]] =
124+ # # Creates a guild bulk ban.
125+ getClient.api.bulkGuildBan (g.id, user_ids, delete_message_seconds, reason)
126+
127+ template removeBan * (g: Guild ; u: User | string ; reason = " " ): Future [void ] =
121128 # # Removes a guild ban.
122- getClient.api.removeGuildBan (mb.guild_id, mb.user.id , reason)
129+ getClient.api.removeGuildBan (g.id, ( when u is User : u.id else : u) , reason)
123130
124131template getIntegrations * (g: Guild ): Future [seq [Integration ]] =
125132 # # Gets a list of guild integrations.
@@ -129,47 +136,50 @@ template getWebhooks*(g: Guild): Future[seq[Webhook]] =
129136 # # Gets a list of a channel's webhooks.
130137 getClient.api.getGuildWebhooks (g.id)
131138
132- template deleteIntegration * (integ: Integration , reason = " " ): Future [void ] =
139+ template deleteIntegration * (integ: Integration ; reason = " " ): Future [void ] =
133140 # # Deletes a guild integration.
134141 getClient.api.deleteGuildIntegration (integ.id, reason)
135142
136143template preview * (g: Guild ): Future [GuildPreview ] =
137144 # # Gets guild preview.
138145 getClient.api.getGuildPreview (g.id)
139146
140- template searchMembers * (g: Guild , query = " " ;
147+ template searchMembers * (g: Guild ; query = " " ;
141148 limit: range [1 .. 1000 ] = 1 ): Future [seq [Member ]] =
142149 # # Search for guild members.
143150 getClient.api.searchGuildMembers (g.id, query, limit)
144151
145- template editEmoji * (g: Guild , e: Emoji , name = none string ;
152+ template editEmoji * (g: Guild ; e: Emoji ; name = none string ;
146153 roles = none seq [string ];
147154 reason = " "
148155): Future [Emoji ] =
149156 # # Modifies a guild emoji.
150- getClient.api.editGuildEmoji (g.id, e.id, name, roles, reason)
157+ assert e.id.isSome, " Cannot edit Emoji: the emoji might not be custom"
158+ getClient.api.editGuildEmoji (g.id, e.id.unsafeGet (), name, roles, reason)
151159
152- template deleteEmoji * (g: Guild , e: Emoji , reason = " " ): Future [void ] =
160+ template deleteEmoji * (g: Guild ; e: Emoji ; reason = " " ): Future [void ] =
153161 # # Deletes a guild emoji.
154- getClient.api.deleteGuildEmoji (g.id, e.id, reason)
162+ assert e.id.isSome, " Cannot delete Emoji: the emoji might not be custom"
163+ getClient.api.deleteGuildEmoji (g.id, e.id.unsafeGet (), reason)
155164
156165template getRegions * (g: Guild ): Future [seq [VoiceRegion ]] =
157166 # # Gets a guild's voice regions.
158167 getClient.api.getGuildVoiceRegions (g.id)
159168
160- template editSticker * (g: Guild , s: Sticker ;
169+ template editSticker * (g: Guild ; s: Sticker ;
161170 name, desc, tags = none string ;
162171 reason = " "
163172): Future [Sticker ] =
164173 # # Modify a guild sticker.
165174 getClient.api.editGuildSticker (g.id, s.id, name, desc, tags, reason)
166175
167- template deleteSticker * (g: Guild , sk: Sticker , reason = " " ): Future [Sticker ] =
176+ template deleteSticker * (g: Guild ; sk: Sticker ; reason = " " ): Future [Sticker ] =
168177 # # Deletes a guild sticker.
169- getClient.api.deleteGuildSticker (sk.guild_id.get, sk.id, reason)
178+ getClient.api.deleteGuildSticker (sk.guild_id.get, sk.id,
179+ reason) # TODO : assert sk.guild_id.isSome, "Cannot delete Sticker: the bot is probably not in the sticker's owning guild."
170180
171181template getScheduledEvent * (g: Guild ;
172- event_id: string , with_user_count = false
182+ event_id: string ; with_user_count = false
173183): Future [GuildScheduledEvent ] =
174184 # # Get a scheduled event in a guild.
175185 getClient.api.getScheduledEvent (g.id, event_id, with_user_count)
@@ -178,7 +188,7 @@ template getScheduledEvents*(g: Guild): Future[seq[GuildScheduledEvent]] =
178188 # # Get all scheduled events in a guild.
179189 getClient.api.getScheduledEvents (g.id)
180190
181- template edit * (g: Guild , gse: GuildScheduledEvent ;
191+ template editEvent * (g: Guild ; gse: GuildScheduledEvent ;
182192 name, start_time, image = none string ;
183193 channel_id, end_time, desc = none string ;
184194 privacy_level = none GuildScheduledEventPrivacyLevel ;
@@ -198,49 +208,45 @@ template edit*(g: Guild, gse: GuildScheduledEvent;
198208 reason
199209 )
200210
201- template delete * (gse: GuildScheduledEvent , reason = " " ): Future [void ] =
202- # # Delete a scheduled event in guild.
203- getClient.api.deleteScheduledEvent (gse.guild_id, gse.id, reason)
211+ template delete * (gse: GuildScheduledEvent ; reason = " " ): Future [void ] =
212+ # # Delete a scheduled event in guild.
213+ getClient.api.deleteScheduledEvent (gse.guild_id, gse.id, reason)
204214
205215template getEventUsers * (gse: GuildScheduledEvent ;
206- limit = 100 , with_member = false ;
216+ limit = 100 ; with_member = false ;
207217 before, after = " "
208218): Future [seq [GuildScheduledEventUser ]] =
209219 # # Gets the users and/or members that were subscribed to the scheduled event.
210220 getClient.api.getScheduledEventUsers (
211- gse.guild_id, gse.id,
212- limit, with_member, before, after
221+ gse.guild_id, gse.id, limit, with_member, before, after
213222 )
214223
215224template getRules * (g: Guild ): Future [seq [AutoModerationRule ]] =
216225 # # Get a Guild's current AutoMod Rules
217226 getClient.api.getAutoModerationRules (g.id)
218227
219- template getRule * (g: Guild , rule_id: string ): Future [AutoModerationRule ] =
228+ template getRule * (g: Guild ; rule_id: string ): Future [AutoModerationRule ] =
220229 # # Get a Guild's specific AutoMod Rule
221230 getClient.api.getAutoModerationRule (g.id, rule_id)
222231
223- template deleteRule * (g: Guild , amr: AutoModerationRule ): Future [void ] =
232+ template deleteRule * (g: Guild ; amr: AutoModerationRule ): Future [void ] =
224233 # # deletes automod rule
225234 getClient.api.deleteAutoModerationRule (g.id, amr.id)
226235
227- template editRule * (g: Guild , amr: AutoModerationRule ;
228- event_type = none int , name = none string ;
236+ template editRule * (g: Guild ; amr: AutoModerationRule ;
237+ event_type = none int ; name = none string ;
229238 trigger_type = none ModerationTriggerType ;
230- trigger_metadata = none tuple [
231- keyword_filter: seq [string ],
232- presets: seq [int ]
233- ];
239+ trigger_metadata = none TriggerMetadata ;
234240 actions = none seq [ModerationAction ]; enabled = none bool ;
235241 exempt_roles, exempt_channels = none seq [string ];
236- reason = " "
242+ reason = " " ;
237243): Future [AutoModerationRule ] =
238244 # # Edits an automod rule.
239245 # # `event_type` is gonna be 1 for SEND_MESSAGE
240246 getClient.api.editAutoModerationRule (
241- g.id, amr.id, event_type,
247+ g.id, amr.id, event_type,
242248 name, trigger_type,
243- trigger_metadata, actions,
244- enabled, exempt_roles, exempt_channels,
245- reason
246- )
249+ trigger_metadata, actions,
250+ enabled, exempt_roles, exempt_channels,
251+ reason
252+ )
0 commit comments