mirror of
https://github.com/discordeno/discordeno.git
synced 2026-06-01 00:10:07 +00:00
39 lines
1.4 KiB
TypeScript
39 lines
1.4 KiB
TypeScript
import { MessageCreateOptions } from "../types/message.ts";
|
|
import { cache } from "../utils/cache.ts";
|
|
|
|
export function createMessage(data: MessageCreateOptions) {
|
|
const message = {
|
|
...data,
|
|
channelID: data.channel_id,
|
|
guildID: data.guild_id,
|
|
mentionsEveryone: data.mentions_everyone,
|
|
mentionRoles: data.mention_roles,
|
|
mentionChannels: data.mention_channels,
|
|
webhookID: data.webhook_id,
|
|
messageReference: data.message_reference,
|
|
timestamp: Date.parse(data.timestamp),
|
|
editedTimestamp: data.edited_timestamp
|
|
? Date.parse(data.edited_timestamp)
|
|
: undefined,
|
|
channel: cache.channels.get(data.channel_id)!,
|
|
guild: () => data.guild_id ? cache.guilds.get(data.guild_id) : undefined,
|
|
member: () => message.guild()?.members.get(data.author.id),
|
|
mentions: () =>
|
|
data.mentions.map((mention) => message.guild()?.members.get(mention.id)!),
|
|
};
|
|
|
|
// Remove excess properties to preserve cache.
|
|
delete message.channel_id;
|
|
delete message.guild_id;
|
|
delete message.mentions_everyone;
|
|
delete message.mention_channels;
|
|
delete message.mention_roles;
|
|
delete message.webhook_id;
|
|
delete message.message_reference;
|
|
delete message.edited_timestamp;
|
|
|
|
return message;
|
|
}
|
|
|
|
export interface Message extends Omit<ReturnType<typeof createMessage>, 'channel_id' | 'guild_id' | 'mentions_everyone' | 'mention_channels' | 'mention_roles' | 'webhook_id' | 'message_reference' | 'edited_timestamp'> {}
|