Skip to content

Commit 56642d4

Browse files
authored
couple of last fixes to helpers (#137)
1 parent 4740803 commit 56642d4

File tree

4 files changed

+77
-109
lines changed

4 files changed

+77
-109
lines changed

dimscord/helpers/guild.nim

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,17 @@ template edit*(g: Guild;
4141
##
4242
## Read more at:
4343
## https://discord.com/developers/docs/resources/guild#modify-guild
44-
getClient.api.editGuild(
45-
g.id, name, description, region, afk_channel_id, icon,
44+
getClient.api.editGuild(g.id, name, description, region, afk_channel_id, icon,
4645
discovery_splash, owner_id, splash, banner,
47-
safety_alerts_channel_id,
4846
system_channel_id, rules_channel_id,
47+
safety_alerts_channel_id,
4948
preferred_locale, public_updates_channel_id,
5049
verification_level, default_message_notifications,
5150
system_channel_flags,
5251
explicit_content_filter, afk_timeout,
53-
features, premium_progress_bar_enabled, reason
52+
features,
53+
premium_progress_bar_enabled,
54+
reason
5455
)
5556

5657
template getAuditLogs*(g: Guild;
@@ -71,7 +72,7 @@ template createRole*(g: Guild,
7172
getClient.api.createGuildRole(g.id,
7273
name, unicode_emoji, icon,
7374
hoist, mentionable, permissions,
74-
role_colors, color, reason)
75+
role_colors, color, reason)
7576

7677
template deleteRole*(g: Guild; r: Role): Future[void] =
7778
## Deletes a guild role.
@@ -126,10 +127,10 @@ template getBans*(g: Guild): Future[seq[GuildBan]] =
126127
## Gets all the guild bans.
127128
getClient.api.getGuildBans(g.id)
128129

129-
template ban*(g: Guild; m: Member; delete_message_seconds: range[0..604800] = 0;
130+
template ban*(g: Guild; m: Member; delete_message_secs = 0;
130131
reason = ""): Future[void] =
131132
## Creates a guild ban.
132-
getClient.api.createGuildBan(g.id, m.user.id, delete_message_seconds, reason)
133+
getClient.api.createGuildBan(g.id, m.user.id, delete_message_secs, reason)
133134

134135
template bulkBan*(g: Guild;
135136
user_ids: seq[string];
@@ -202,24 +203,25 @@ template getScheduledEvents*(g: Guild): Future[seq[GuildScheduledEvent]] =
202203
## Get all scheduled events in a guild.
203204
getClient.api.getScheduledEvents(g.id)
204205

205-
template editEvent*(g: Guild; gse: GuildScheduledEvent;
206+
template editEvent*(gse: GuildScheduledEvent;
206207
name, start_time, image = none string;
207-
channel_id, end_time, desc = none string;
208+
channel_id, end_time, description = none string;
208209
privacy_level = none GuildScheduledEventPrivacyLevel;
209210
entity_type = none EntityType;
210211
entity_metadata = none EntityMetadata;
211212
status = none GuildScheduledEventStatus;
213+
recurrence_rule = none RecurrenceRule;
212214
reason = ""
213215
): Future[GuildScheduledEvent] =
214216
## Update a scheduled event in a guild.
215217
## Read more: https://discord.com/developers/docs/resources/guild-scheduled-event#modify-guild-scheduled-event-json-params
216218
getClient.api.editScheduledEvent(
217-
g.id, gse.id, name,
218-
start_time, image,
219-
channel_id, end_time, desc,
220-
privacy_level, entity_type,
221-
entity_metadata, status,
222-
reason
219+
gse.guild_id, gse.id, name,
220+
start_time, image, channel_id, end_time,
221+
description, privacy_level,
222+
entity_type, entity_metadata,
223+
status, recurrence_rule,
224+
reason,
223225
)
224226

225227
template delete*(gse: GuildScheduledEvent; reason = ""): Future[void] =

dimscord/helpers/message.nim

Lines changed: 20 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -30,39 +30,23 @@ template reply*(m: Message, content = "";
3030
files: seq[DiscordFile] = @[];
3131
flags: set[MessageFlags] = {};
3232
stickers: seq[string] = @[];
33-
allowed_mentions = none AllowedMentions;
33+
allowed_mentions: Option[AllowedMentions] = none(AllowedMentions);
3434
nonce: Option[string] or Option[int] = none(int);
35-
mention, failifnotexists, tts = false): Future[Message] =
35+
mention = false; failifnotexists = false; tts = false): Future[Message] =
3636
## Replies to a Message.
3737
## - set `mention` to `true` in order to mention the replied message in Discord.
38-
var refr = block:
39-
(if mention: some m.reference else: none MessageReference)
40-
getMessage(getClient.shards[0].cache.gchannel(m), "123")
41-
# TEMPORARY
42-
43-
# getClient.api.sendMessage(
44-
# m.channel_id,
45-
# content=content, tts=tts, nonce=nonce,
46-
# flags=flags, files=files, embeds=embeds,
47-
# allowed_mentions=allowed_mentions,
48-
# message_reference = refr, components=components,
49-
# attachments=attachments, stickers=stickers
50-
# )
51-
52-
template editMessage*(c: SomeChannel, m: Message;
53-
content = "";
54-
embeds: seq[Embed] = @[];
55-
attachments: seq[Attachment] = @[];
56-
components: seq[MessageComponent] = @[];
57-
files: seq[DiscordFile] = @[];
58-
tts = false;
59-
flags = none int): Future[Message] =
60-
## Edits a Message.
61-
getClient.api.editMessage(
62-
c.id, m.id,
63-
content, tts, flags,
64-
files, embeds, attachments,
65-
components
38+
## - `failifnotexists` can be used to set the corresponding field on the message reference
39+
## if your `MessageReference` type exposes e.g. `fail_if_not_exists`. See the commented
40+
## example below.
41+
42+
let refr = if mention: some(m.reference)
43+
else:
44+
none(MessageReference)
45+
getClient.api.sendMessage(
46+
m.channel_id, content, tts, nonce,
47+
flags, files, embeds, attachments,
48+
allowed_mentions, refr, components,
49+
stickers
6650
)
6751

6852
template edit*(m: Message;
@@ -72,22 +56,18 @@ template edit*(m: Message;
7256
components: seq[MessageComponent] = @[];
7357
files: seq[DiscordFile] = @[];
7458
tts = false;
75-
flags = none set[MessageFlags]): Future[Message] =
59+
flags: set[MessageFlags] = {}): Future[Message] =
7660
## Edits a Message.
77-
78-
# getMessage(getClient.shards[0].cache.gchannel(m), "123")
79-
# ^^^ this is temp, it will be removed soon
80-
discard await getClient.api.editMessage(
61+
getClient.api.editMessage(
8162
m.channel_id, m.id,
82-
content=content, tts=tts,
83-
flags=flags,
84-
files=files, embeds=embeds, attachments=attachments,
85-
components=components
63+
content, tts, flags,
64+
files, embeds, attachments,
65+
components
8666
)
8767

8868
template delete*(m: Message; reason = ""): Future[void] =
8969
## Deletes a discord Message.
90-
getClient.api.deleteMessage(m.channel_id, m.id, reason)
70+
getClient.api.deleteMessage(m.channel_id, m.id, reason)
9171

9272
template delete*(msgs: seq[Message]; reason = ""): Future[void] =
9373
## Bulk deletes messages.

dimscord/helpers/user.nim

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -54,16 +54,14 @@ template getCommand*(app: Application;
5454
app.id, guild_id, command_id
5555
)
5656

57-
template registerCommand*(app: Application;
58-
name: string; description: string;
59-
name_localizations: Option[Table[string,string]] = none(Table[string,string]);
60-
description_localizations: Option[Table[string,string]] = none(Table[string,string]);
61-
kind: ApplicationCommandType = atSlash;
62-
guild_id: string = "";
63-
dm_permission: bool = true;
64-
nsfw: bool = false;
65-
default_member_permissions: Option[PermissionFlags] = none(PermissionFlags);
66-
options: seq[ApplicationCommandOption] = @[]
57+
template registerCommand*(app: Application; name: string;
58+
description, guild_id = "";
59+
name_localizations,description_localizations=none Table[string,string];
60+
kind = atSlash; nsfw = false;
61+
default_member_permissions = none set[PermissionFlags];
62+
options: seq[ApplicationCommandOption] = @[];
63+
integration_types = none seq[ApplicationIntegrationType];
64+
contexts = none seq[InteractionContextType];
6765
): Future[ApplicationCommand] =
6866
## Create a guild slash command.
6967
##
@@ -75,10 +73,12 @@ template registerCommand*(app: Application;
7573
## as an existing command for your application will
7674
## overwrite the old command.
7775
getClient.api.registerApplicationCommand(
78-
app.id, name, description, guild_id,
79-
name_localizations, description_localizations,
80-
kind, dm_permission, nsfw,
81-
default_member_permissions, options
76+
app.id, name,
77+
description, guild_id,
78+
name_localizations,description_localizations,
79+
kind, nsfw, default_member_permissions,
80+
options, integration_types,
81+
contexts
8282
)
8383

8484

@@ -95,16 +95,16 @@ template bulkRegisterCommands*(app: Application;
9595
template editCommand*(apc: ApplicationCommand;
9696
name, desc = "";
9797
name_localizations,description_localizations = none Table[string,string];
98-
default_member_permissions = none PermissionFlags; nsfw = false;
98+
default_member_permissions = none set[PermissionFlags]; nsfw = false;
9999
options: seq[ApplicationCommandOption] = @[]
100100
): Future[ApplicationCommand] =
101101
## Modify slash command for a specific application.
102102
## - `guild_id` - Optional
103103
## - `name` - Optional Character length (3 - 32)
104104
## - `description` - Optional Character length (1 - 100)
105105
getClient.api.editApplicationCommand(
106-
apc.application_id, apc.id, apc.guild_id.get,
107-
name, desc, name_localizations, description_localizations,
106+
apc.application_id, apc.id, apc.guild_id.get(""),
107+
name, desc,name_localizations, description_localizations,
108108
default_member_permissions, nsfw, options
109109
)
110110

@@ -175,11 +175,12 @@ template followup*(i: Interaction;
175175
i.application_id, i.token, content,
176176
tts, files, attachments, embeds,
177177
allowed_mentions, components,
178-
(if ephemeral: some mfEphemeral.ord else: none int),
178+
(if ephemeral: {MessageFlags.mfEphemeral} else: {}),
179179
thread_id, thread_name, applied_tags,
180180
poll
181181
)
182182

183+
183184
template editResponse*(i: Interaction;
184185
content = none string;
185186
embeds = newSeq[Embed]();

tests/testHelpers.nim

Lines changed: 21 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ suite "Guild Helpers Tests":
223223
compiles(mockGuild.edit(system_channel_flags = some 0))
224224
compiles(mockGuild.edit(explicit_content_filter = some 0))
225225
compiles(mockGuild.edit(afk_timeout = some 0))
226-
compiles(mockGuild.edit(features = @["test"]))
226+
compiles(mockGuild.edit(features = some @["test"]))
227227
compiles(mockGuild.edit(premium_progress_bar_enabled = some true))
228228
compiles(mockGuild.edit(reason = "test reason"))
229229

@@ -264,7 +264,7 @@ suite "Guild Helpers Tests":
264264
test "ban template":
265265
check:
266266
compiles(mockGuild.ban(mockMember))
267-
compiles(mockGuild.ban(mockMember, delete_msg_days = 0))
267+
compiles(mockGuild.ban(mockMember, delete_message_secs = 10))
268268
compiles(mockGuild.ban(mockMember, reason = "test reason"))
269269

270270
test "getIntegrations template":
@@ -362,7 +362,7 @@ suite "Guild Helpers Tests":
362362
compiles(mockGuild.editRole(mockRole, name = some "test"))
363363
compiles(mockGuild.editRole(mockRole, icon = some "test"))
364364
compiles(mockGuild.editRole(mockRole, unicode_emoji = some "test"))
365-
compiles(mockGuild.editRole(mockRole, permissions = some default(PermObj)))
365+
compiles(mockGuild.editRole(mockRole, permissions = some PermissionFlags.fullSet))
366366
compiles(mockGuild.editRole(mockRole, color = some 0))
367367
compiles(mockGuild.editRole(mockRole, hoist = some true))
368368
compiles(mockGuild.editRole(mockRole, mentionable = some true))
@@ -410,21 +410,21 @@ suite "Guild Helpers Tests":
410410

411411
test "editEvent template":
412412
check:
413-
compiles(mockGuild.editEvent(mockGuildScheduledEvent))
414-
compiles(mockGuild.editEvent(mockGuildScheduledEvent, name = some "test"))
415-
compiles(mockGuild.editEvent(mockGuildScheduledEvent, reason = "test reason"))
416-
compiles(mockGuild.editEvent(mockGuildScheduledEvent, start_time = some "2023-01-01T00:00:00.000Z"))
417-
compiles(mockGuild.editEvent(mockGuildScheduledEvent, end_time = some "2023-01-01T00:00:00.000Z"))
418-
compiles(mockGuild.editEvent(mockGuildScheduledEvent, image = some "test"))
419-
compiles(mockGuild.editEvent(mockGuildScheduledEvent, reason = "test reason"))
420-
compiles(mockGuild.editEvent(mockGuildScheduledEvent, channel_id = some "test"))
421-
compiles(mockGuild.editEvent(mockGuildScheduledEvent, end_time = some "2023-01-01T00:00:00.000Z"))
422-
compiles(mockGuild.editEvent(mockGuildScheduledEvent, desc = some "test"))
423-
compiles(mockGuild.editEvent(mockGuildScheduledEvent, privacy_level = some splGuildOnly))
424-
compiles(mockGuild.editEvent(mockGuildScheduledEvent, entity_type = some etStageInstance))
425-
compiles(mockGuild.editEvent(mockGuildScheduledEvent, entity_metadata = some default(EntityMetadata)))
426-
compiles(mockGuild.editEvent(mockGuildScheduledEvent, status = some esScheduled))
427-
compiles(mockGuild.editEvent(mockGuildScheduledEvent, reason = "test reason"))
413+
compiles(mockGuildScheduledEvent.editEvent())
414+
compiles(mockGuildScheduledEvent.editEvent(name = some "test"))
415+
compiles(mockGuildScheduledEvent.editEvent(reason = "test reason"))
416+
compiles(mockGuildScheduledEvent.editEvent(start_time = some "2023-01-01T00:00:00.000Z"))
417+
compiles(mockGuildScheduledEvent.editEvent(end_time = some "2023-01-01T00:00:00.000Z"))
418+
compiles(mockGuildScheduledEvent.editEvent(image = some "test"))
419+
compiles(mockGuildScheduledEvent.editEvent(reason = "test reason"))
420+
compiles(mockGuildScheduledEvent.editEvent(channel_id = some "test"))
421+
compiles(mockGuildScheduledEvent.editEvent(end_time = some "2023-01-01T00:00:00.000Z"))
422+
compiles(mockGuildScheduledEvent.editEvent(description = some "test"))
423+
compiles(mockGuildScheduledEvent.editEvent(privacy_level = some splGuildOnly))
424+
compiles(mockGuildScheduledEvent.editEvent(entity_type = some etStageInstance))
425+
compiles(mockGuildScheduledEvent.editEvent(entity_metadata = some default(EntityMetadata)))
426+
compiles(mockGuildScheduledEvent.editEvent(status = some esScheduled))
427+
compiles(mockGuildScheduledEvent.editEvent(reason = "test reason"))
428428

429429
test "editRule template":
430430
check:
@@ -465,20 +465,6 @@ suite "Message Helpers Tests":
465465
compiles(mockMessage.reply(mention = false))
466466
compiles(mockMessage.reply(failifnotexists = false))
467467

468-
test "editMessage template":
469-
check:
470-
compiles(mockSomeChannel.editMessage(mockMessage))
471-
compiles(mockSomeChannel.editMessage(mockMessage, content = "updated"))
472-
compiles(mockSomeChannel.editMessage(mockMessage, embeds = @[mockEmbed]))
473-
compiles(
474-
mockSomeChannel.editMessage(mockMessage, attachments = @[mockAttachment])
475-
)
476-
compiles(mockSomeChannel.editMessage(mockMessage, components = @[
477-
mockComponent]))
478-
compiles(mockSomeChannel.editMessage(mockMessage, files = @[mockFile]))
479-
compiles(mockSomeChannel.editMessage(mockMessage, tts = false))
480-
compiles(mockSomeChannel.editMessage(mockMessage, flags = mockOptionInt))
481-
482468
test "edit message template":
483469
check:
484470
compiles(mockMessage.edit())
@@ -488,7 +474,7 @@ suite "Message Helpers Tests":
488474
compiles(mockMessage.edit(components = @[mockComponent]))
489475
compiles(mockMessage.edit(files = @[mockFile]))
490476
compiles(mockMessage.edit(tts = false))
491-
compiles(mockMessage.edit(flags = mockOptionInt))
477+
compiles(mockMessage.edit(flags = MessageFlags.fullSet))
492478

493479
test "delete message template":
494480
check:
@@ -639,9 +625,8 @@ suite "User Helpers Tests":
639625
compiles(mockApplication.registerCommand("command_name", "command_description", name_localizations = some default(Table[string, string]), description_localizations = some default(Table[string, string])))
640626
compiles(mockApplication.registerCommand("command_name", "command_description", kind = ApplicationCommandType.atSlash))
641627
compiles(mockApplication.registerCommand("command_name", "command_description", guild_id = "guild_id"))
642-
compiles(mockApplication.registerCommand("command_name", "command_description", dm_permission = true))
643628
compiles(mockApplication.registerCommand("command_name", "command_description", nsfw = true))
644-
compiles(mockApplication.registerCommand("command_name", "command_description", default_member_permissions = some default(PermissionFlags)))
629+
compiles(mockApplication.registerCommand("command_name", "command_description", default_member_permissions = some PermissionFlags.fullSet))
645630
compiles(mockApplication.registerCommand("command_name", "command_description", options = @[mockApplicationCommandOption]))
646631

647632
test "followup template":
@@ -666,7 +651,7 @@ suite "User Helpers Tests":
666651
compiles(mockApplicationCommand.editCommand(desc = "new_desc"))
667652
compiles(mockApplicationCommand.editCommand(name_localizations = some default(Table[string, string])))
668653
compiles(mockApplicationCommand.editCommand(description_localizations = some default(Table[string, string])))
669-
compiles(mockApplicationCommand.editCommand(default_member_permissions = some default(PermissionFlags)))
654+
compiles(mockApplicationCommand.editCommand(default_member_permissions = some PermissionFlags.fullSet))
670655
compiles(mockApplicationCommand.editCommand(options = @[mockApplicationCommandOption]))
671656

672657
test "delete command template":

0 commit comments

Comments
 (0)