103 lines
1.9 KiB
TypeScript
103 lines
1.9 KiB
TypeScript
import { Snowflake } from "discord.js";
|
|
import { Column, Entity, PrimaryColumn } from "typeorm";
|
|
|
|
export interface ISavedMessageAttachmentData {
|
|
id: Snowflake;
|
|
contentType: string | null;
|
|
name: string | null;
|
|
proxyURL: string;
|
|
size: number;
|
|
spoiler: boolean;
|
|
url: string;
|
|
width: number | null;
|
|
}
|
|
|
|
export interface ISavedMessageEmbedData {
|
|
title: string | null;
|
|
description: string | null;
|
|
url: string | null;
|
|
timestamp: number | null;
|
|
color: number | null;
|
|
fields: Array<{
|
|
name: string;
|
|
value: string;
|
|
inline: boolean;
|
|
}>;
|
|
author?: {
|
|
name?: string;
|
|
url?: string;
|
|
iconURL?: string;
|
|
proxyIconURL?: string;
|
|
};
|
|
thumbnail?: {
|
|
url: string;
|
|
proxyURL?: string;
|
|
height?: number;
|
|
width?: number;
|
|
};
|
|
image?: {
|
|
url: string;
|
|
proxyURL?: string;
|
|
height?: number;
|
|
width?: number;
|
|
};
|
|
video?: {
|
|
url?: string;
|
|
proxyURL?: string;
|
|
height?: number;
|
|
width?: number;
|
|
};
|
|
footer?: {
|
|
text?: string;
|
|
iconURL?: string;
|
|
proxyIconURL?: string;
|
|
};
|
|
}
|
|
|
|
export interface ISavedMessageStickerData {
|
|
format: string;
|
|
guildId: Snowflake | null;
|
|
id: Snowflake;
|
|
name: string;
|
|
description: string | null;
|
|
available: boolean | null;
|
|
type: string | null;
|
|
}
|
|
|
|
export interface ISavedMessageData {
|
|
attachments?: ISavedMessageAttachmentData[];
|
|
author: {
|
|
username: string;
|
|
discriminator: string;
|
|
};
|
|
content: string;
|
|
embeds?: ISavedMessageEmbedData[];
|
|
stickers?: ISavedMessageStickerData[];
|
|
timestamp: number;
|
|
}
|
|
|
|
@Entity("messages")
|
|
export class SavedMessage {
|
|
@Column()
|
|
@PrimaryColumn()
|
|
id: string;
|
|
|
|
@Column() guild_id: string;
|
|
|
|
@Column() channel_id: string;
|
|
|
|
@Column() user_id: string;
|
|
|
|
@Column() is_bot: boolean;
|
|
|
|
@Column({
|
|
type: "mediumtext",
|
|
})
|
|
data: ISavedMessageData;
|
|
|
|
@Column() posted_at: string;
|
|
|
|
@Column() deleted_at: string;
|
|
|
|
@Column() is_permanent: boolean;
|
|
}
|