feat: Message.reply accepts strings and embeds

This commit is contained in:
Yuzu 2022-09-04 11:44:32 -05:00
parent e654c75455
commit 9a299a5e49

View File

@ -458,32 +458,54 @@ export class Message implements Model {
} }
/** Replies directly in the channel where the message was sent */ /** Replies directly in the channel where the message was sent */
async reply(options: CreateMessage): Promise<Message> { async reply(options: CreateMessage | string | Embed[]): Promise<Message> {
// Options is plain content
if (typeof options === 'string') {
const message = await this.session.rest.post<DiscordMessage>(
CHANNEL_MESSAGES(this.channelId),
{ content: options }
);
return new Message(this.session, message);
}
// Opptions are multiple embeds
if (Array.isArray(options)) {
const message = await this.session.rest.post<DiscordMessage>(
CHANNEL_MESSAGES(this.channelId),
{ embeds: options.map(NewEmbed) }
);
return new Message(this.session, message);
}
// Options is of type CreateMessage
const message = await this.session.rest.post<DiscordMessage>( const message = await this.session.rest.post<DiscordMessage>(
CHANNEL_MESSAGES(this.channelId), CHANNEL_MESSAGES(this.channelId),
{ {
content: options.content, content: options.content,
file: options.files, file: options.files,
allowed_mentions: { allowed_mentions: {
parse: options.allowedMentions?.parse, parse: options.allowedMentions?.parse,
roles: options.allowedMentions?.roles, roles: options.allowedMentions?.roles,
users: options.allowedMentions?.users, users: options.allowedMentions?.users,
replied_user: options.allowedMentions?.repliedUser, replied_user: options.allowedMentions?.repliedUser,
}, },
message_reference: options.messageReference message_reference: options.messageReference
? { ? {
message_id: options.messageReference.messageId, message_id: options.messageReference.messageId,
channel_id: options.messageReference.channelId, channel_id: options.messageReference.channelId,
guild_id: options.messageReference.guildId, guild_id: options.messageReference.guildId,
fail_if_not_exists: fail_if_not_exists:
options.messageReference.failIfNotExists ?? options.messageReference.failIfNotExists ??
true, true,
} }
: undefined, : undefined,
embeds: options.embeds?.map(NewEmbed), embeds: options.embeds?.map(NewEmbed),
tts: options.tts, tts: options.tts,
components: options.components, components: options.components,
} }
); );
return new Message(this.session, message); return new Message(this.session, message);