summary refs log tree commit diff
path: root/dist/models/Message.js
blob: dfa22d42fc812f03c5d2175732783105b9cbfc7f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MessageModel = exports.MessageSchema = exports.Embed = exports.EmbedImage = exports.Attachment = exports.MessageType = void 0;
const mongoose_1 = require("mongoose");
const Database_1 = __importDefault(require("../util/Database"));
const User_1 = require("./User");
const Member_1 = require("./Member");
const Role_1 = require("./Role");
var MessageType;
(function (MessageType) {
    MessageType[MessageType["DEFAULT"] = 0] = "DEFAULT";
    MessageType[MessageType["RECIPIENT_ADD"] = 1] = "RECIPIENT_ADD";
    MessageType[MessageType["RECIPIENT_REMOVE"] = 2] = "RECIPIENT_REMOVE";
    MessageType[MessageType["CALL"] = 3] = "CALL";
    MessageType[MessageType["CHANNEL_NAME_CHANGE"] = 4] = "CHANNEL_NAME_CHANGE";
    MessageType[MessageType["CHANNEL_ICON_CHANGE"] = 5] = "CHANNEL_ICON_CHANGE";
    MessageType[MessageType["CHANNEL_PINNED_MESSAGE"] = 6] = "CHANNEL_PINNED_MESSAGE";
    MessageType[MessageType["GUILD_MEMBER_JOIN"] = 7] = "GUILD_MEMBER_JOIN";
    MessageType[MessageType["USER_PREMIUM_GUILD_SUBSCRIPTION"] = 8] = "USER_PREMIUM_GUILD_SUBSCRIPTION";
    MessageType[MessageType["USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1"] = 9] = "USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1";
    MessageType[MessageType["USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2"] = 10] = "USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2";
    MessageType[MessageType["USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3"] = 11] = "USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3";
    MessageType[MessageType["CHANNEL_FOLLOW_ADD"] = 12] = "CHANNEL_FOLLOW_ADD";
    MessageType[MessageType["GUILD_DISCOVERY_DISQUALIFIED"] = 14] = "GUILD_DISCOVERY_DISQUALIFIED";
    MessageType[MessageType["GUILD_DISCOVERY_REQUALIFIED"] = 15] = "GUILD_DISCOVERY_REQUALIFIED";
    MessageType[MessageType["REPLY"] = 19] = "REPLY";
    MessageType[MessageType["APPLICATION_COMMAND"] = 20] = "APPLICATION_COMMAND";
})(MessageType = exports.MessageType || (exports.MessageType = {}));
exports.Attachment = {
    id: String,
    filename: String,
    size: Number,
    url: String,
    proxy_url: String,
    height: Number,
    width: Number,
};
exports.EmbedImage = {
    url: String,
    proxy_url: String,
    height: Number,
    width: Number,
};
const Reaction = {
    count: Number,
    emoji: {
        id: String,
        name: String,
        animated: Boolean,
    },
};
exports.Embed = {
    title: String,
    type: String,
    description: String,
    url: String,
    timestamp: Date,
    color: Number,
    footer: {
        text: String,
        icon_url: String,
        proxy_icon_url: String,
    },
    image: exports.EmbedImage,
    thumbnail: exports.EmbedImage,
    video: exports.EmbedImage,
    provider: {
        name: String,
        url: String,
    },
    author: {
        name: String,
        url: String,
        icon_url: String,
        proxy_icon_url: String,
    },
    fields: [
        {
            name: String,
            value: String,
            inline: Boolean,
        },
    ],
};
exports.MessageSchema = new mongoose_1.Schema({
    id: String,
    channel_id: String,
    author_id: String,
    webhook_id: String,
    guild_id: String,
    application_id: String,
    content: String,
    timestamp: Date,
    edited_timestamp: Date,
    tts: Boolean,
    mention_everyone: Boolean,
    mention_user_ids: [String],
    mention_role_ids: [String],
    mention_channel_ids: [String],
    attachments: [exports.Attachment],
    embeds: [exports.Embed],
    reactions: [Reaction],
    nonce: mongoose_1.Schema.Types.Mixed,
    pinned: Boolean,
    type: { type: Number },
    activity: {
        type: Number,
        party_id: String,
    },
    flags: mongoose_1.Types.Long,
    stickers: [],
    message_reference: {
        message_id: String,
        channel_id: String,
        guild_id: String,
    },
}, {
    toJSON: {
        transform: function (doc, ret) {
            delete ret.mention_channel_ids;
            delete ret.mention_user_ids;
            delete ret.mention_role_ids;
        },
    },
});
exports.MessageSchema.virtual("author", {
    ref: User_1.UserModel,
    localField: "author_id",
    foreignField: "id",
    justOne: true,
});
exports.MessageSchema.virtual("member", {
    ref: Member_1.MemberModel,
    localField: "author_id",
    foreignField: "id",
    justOne: true,
});
exports.MessageSchema.virtual("mentions", {
    ref: User_1.UserModel,
    localField: "mention_user_ids",
    foreignField: "id",
    justOne: false,
});
exports.MessageSchema.virtual("mention_roles", {
    ref: Role_1.RoleModel,
    localField: "mention_role_ids",
    foreignField: "id",
    justOne: false,
});
exports.MessageSchema.virtual("mention_channels", {
    ref: Role_1.RoleModel,
    localField: "mention_channel_ids",
    foreignField: "id",
    justOne: false,
});
// TODO: missing Application Model
// MessageSchema.virtual("application", {
// 	ref: Application,
// 	localField: "mention_role_ids",
// 	foreignField: "id",
// 	justOne: true,
// });
// @ts-ignore
exports.MessageModel = Database_1.default.model("Message", exports.MessageSchema, "messages");
//# sourceMappingURL=Message.js.map