Files
discordeno/structures/message.ts
2020-05-28 20:48:51 -04:00

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'> {}