summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--dist/models/Activity.d.ts4
-rw-r--r--dist/models/Activity.js2
-rw-r--r--dist/models/Activity.js.map2
-rw-r--r--dist/models/Channel.d.ts2
-rw-r--r--dist/models/Event.d.ts2
-rw-r--r--dist/models/Invite.d.ts2
-rw-r--r--dist/models/Invite.js2
-rw-r--r--dist/models/Invite.js.map2
-rw-r--r--dist/models/Member.d.ts2
-rw-r--r--dist/models/Member.js2
-rw-r--r--dist/models/Member.js.map2
-rw-r--r--dist/models/Message.d.ts70
-rw-r--r--dist/models/Message.js18
-rw-r--r--dist/models/Message.js.map2
-rw-r--r--dist/models/User.d.ts4
-rw-r--r--dist/models/User.js4
-rw-r--r--dist/models/User.js.map2
-rw-r--r--dist/util/Permissions.js2
-rw-r--r--dist/util/Permissions.js.map2
-rw-r--r--src/models/Activity.ts4
-rw-r--r--src/models/Channel.ts2
-rw-r--r--src/models/Event.ts2
-rw-r--r--src/models/Invite.ts4
-rw-r--r--src/models/Member.ts4
-rw-r--r--src/models/Message.ts12
-rw-r--r--src/models/User.ts8
26 files changed, 116 insertions, 48 deletions
diff --git a/dist/models/Activity.d.ts b/dist/models/Activity.d.ts
index 4d1ffff6..6a97a871 100644
--- a/dist/models/Activity.d.ts
+++ b/dist/models/Activity.d.ts
@@ -12,7 +12,7 @@ export interface Activity {
     name: string;
     type: ActivityType;
     url?: string;
-    created_at: number;
+    created_at: Date;
     timestamps?: {
         start: number;
         end: number;
@@ -47,7 +47,7 @@ export declare const Activity: {
     name: StringConstructor;
     type: NumberConstructor;
     url: StringConstructor;
-    created_at: NumberConstructor;
+    created_at: DateConstructor;
     timestamps: {
         start: NumberConstructor;
         end: NumberConstructor;
diff --git a/dist/models/Activity.js b/dist/models/Activity.js
index 33476880..fe85ac65 100644
--- a/dist/models/Activity.js
+++ b/dist/models/Activity.js
@@ -6,7 +6,7 @@ exports.Activity = {
     name: String,
     type: Number,
     url: String,
-    created_at: Number,
+    created_at: Date,
     timestamps: [
         {
             start: Number,
diff --git a/dist/models/Activity.js.map b/dist/models/Activity.js.map
index 2b9b6677..c27ae387 100644
--- a/dist/models/Activity.js.map
+++ b/dist/models/Activity.js.map
@@ -1 +1 @@
-{"version":3,"file":"Activity.js","sourceRoot":"","sources":["../../src/models/Activity.ts"],"names":[],"mappings":";;;AAEA,uCAA0D;AA8C7C,QAAA,QAAQ,GAAG;IACvB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE;QACX;YACC,KAAK,EAAE,MAAM;YACb,GAAG,EAAE,MAAM;SACX;KACD;IACD,cAAc,EAAE,gBAAK,CAAC,IAAI;IAC1B,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,MAAM;IACb,KAAK,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,gBAAK,CAAC,IAAI;QACd,QAAQ,EAAE,OAAO;KACjB;IACD,KAAK,EAAE;QACN,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;KACtB;IACD,MAAM,EAAE;QACP,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,MAAM;KAClB;IACD,OAAO,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,MAAM;KACb;IACD,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,gBAAK,CAAC,IAAI;CACjB,CAAC;AAEF,IAAY,YAMX;AAND,WAAY,YAAY;IACvB,+CAAQ,CAAA;IACR,yDAAa,CAAA;IACb,yDAAa,CAAA;IACb,mDAAU,CAAA;IACV,yDAAa,CAAA;AACd,CAAC,EANW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAMvB"}
\ No newline at end of file
+{"version":3,"file":"Activity.js","sourceRoot":"","sources":["../../src/models/Activity.ts"],"names":[],"mappings":";;;AAEA,uCAA0D;AA8C7C,QAAA,QAAQ,GAAG;IACvB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE;QACX;YACC,KAAK,EAAE,MAAM;YACb,GAAG,EAAE,MAAM;SACX;KACD;IACD,cAAc,EAAE,gBAAK,CAAC,IAAI;IAC1B,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,MAAM;IACb,KAAK,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,gBAAK,CAAC,IAAI;QACd,QAAQ,EAAE,OAAO;KACjB;IACD,KAAK,EAAE;QACN,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;KACtB;IACD,MAAM,EAAE;QACP,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,MAAM;KAClB;IACD,OAAO,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,MAAM;KACb;IACD,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,gBAAK,CAAC,IAAI;CACjB,CAAC;AAEF,IAAY,YAMX;AAND,WAAY,YAAY;IACvB,+CAAQ,CAAA;IACR,yDAAa,CAAA;IACb,yDAAa,CAAA;IACb,mDAAU,CAAA;IACV,yDAAa,CAAA;AACd,CAAC,EANW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAMvB"}
\ No newline at end of file
diff --git a/dist/models/Channel.d.ts b/dist/models/Channel.d.ts
index 2528070a..5cd7b342 100644
--- a/dist/models/Channel.d.ts
+++ b/dist/models/Channel.d.ts
@@ -9,7 +9,7 @@ export declare const ChannelSchema: Schema<Document<any>, import("mongoose").Mod
 export declare const ChannelModel: import("mongoose").Model<ChannelDocument>;
 export interface Channel {
     id: bigint;
-    created_at: number;
+    created_at: Date;
     name: string;
     type: number;
 }
diff --git a/dist/models/Event.d.ts b/dist/models/Event.d.ts
index a4ec5e67..eabde08a 100644
--- a/dist/models/Event.d.ts
+++ b/dist/models/Event.d.ts
@@ -171,7 +171,7 @@ export interface GuildMemberUpdateEvent extends Event {
         roles: bigint[];
         user: User;
         nick?: string;
-        joined_at: number;
+        joined_at: Date;
         premium_since?: number;
         pending?: boolean;
     };
diff --git a/dist/models/Invite.d.ts b/dist/models/Invite.d.ts
index 1cf0d8ed..a151322b 100644
--- a/dist/models/Invite.d.ts
+++ b/dist/models/Invite.d.ts
@@ -6,7 +6,7 @@ export interface Invite extends Document {
     uses: number;
     max_uses: number;
     max_age: number;
-    created_at: number;
+    created_at: Date;
     guild_id: bigint;
     channel_id: bigint;
     inviter_id: bigint;
diff --git a/dist/models/Invite.js b/dist/models/Invite.js
index 78b541e0..31d21278 100644
--- a/dist/models/Invite.js
+++ b/dist/models/Invite.js
@@ -12,7 +12,7 @@ exports.InviteSchema = new mongoose_1.Schema({
     uses: Number,
     max_uses: Number,
     max_age: Number,
-    created_at: Number,
+    created_at: Date,
     guild_id: mongoose_1.Types.Long,
     channel_id: mongoose_1.Types.Long,
     inviter_id: mongoose_1.Types.Long,
diff --git a/dist/models/Invite.js.map b/dist/models/Invite.js.map
index 5df5a035..3b25219f 100644
--- a/dist/models/Invite.js.map
+++ b/dist/models/Invite.js.map
@@ -1 +1 @@
-{"version":3,"file":"Invite.js","sourceRoot":"","sources":["../../src/models/Invite.ts"],"names":[],"mappings":";;;;;;AAAA,uCAAmD;AACnD,gEAAkC;AAmBrB,QAAA,YAAY,GAAG,IAAI,iBAAM,CAAC;IACtC,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,OAAO;IAClB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,gBAAK,CAAC,IAAI;IACpB,UAAU,EAAE,gBAAK,CAAC,IAAI;IACtB,UAAU,EAAE,gBAAK,CAAC,IAAI;IAEtB,iCAAiC;IACjC,cAAc,EAAE,gBAAK,CAAC,IAAI;IAC1B,gBAAgB,EAAE,MAAM;CAExB,CAAC,CAAC;AAEH,aAAa;AACA,QAAA,WAAW,GAAG,kBAAE,CAAC,KAAK,CAAS,QAAQ,EAAE,oBAAY,EAAE,SAAS,CAAC,CAAC"}
\ No newline at end of file
+{"version":3,"file":"Invite.js","sourceRoot":"","sources":["../../src/models/Invite.ts"],"names":[],"mappings":";;;;;;AAAA,uCAAmD;AACnD,gEAAkC;AAmBrB,QAAA,YAAY,GAAG,IAAI,iBAAM,CAAC;IACtC,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,OAAO;IAClB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,gBAAK,CAAC,IAAI;IACpB,UAAU,EAAE,gBAAK,CAAC,IAAI;IACtB,UAAU,EAAE,gBAAK,CAAC,IAAI;IAEtB,iCAAiC;IACjC,cAAc,EAAE,gBAAK,CAAC,IAAI;IAC1B,gBAAgB,EAAE,MAAM;CAExB,CAAC,CAAC;AAEH,aAAa;AACA,QAAA,WAAW,GAAG,kBAAE,CAAC,KAAK,CAAS,QAAQ,EAAE,oBAAY,EAAE,SAAS,CAAC,CAAC"}
\ No newline at end of file
diff --git a/dist/models/Member.d.ts b/dist/models/Member.d.ts
index 84f088f1..bf930613 100644
--- a/dist/models/Member.d.ts
+++ b/dist/models/Member.d.ts
@@ -6,7 +6,7 @@ export interface Member {
     guild_id: bigint;
     nick?: string;
     roles: bigint[];
-    joined_at: number;
+    joined_at: Date;
     premium_since?: number;
     deaf: boolean;
     mute: boolean;
diff --git a/dist/models/Member.js b/dist/models/Member.js
index 750ff802..26a728f0 100644
--- a/dist/models/Member.js
+++ b/dist/models/Member.js
@@ -16,7 +16,7 @@ exports.MemberSchema = new mongoose_1.Schema({
     guild_id: mongoose_1.Types.Long,
     nick: String,
     roles: [mongoose_1.Types.Long],
-    joined_at: Number,
+    joined_at: Date,
     premium_since: Number,
     deaf: Boolean,
     mute: Boolean,
diff --git a/dist/models/Member.js.map b/dist/models/Member.js.map
index 1908d428..aa0bae9b 100644
--- a/dist/models/Member.js.map
+++ b/dist/models/Member.js.map
@@ -1 +1 @@
-{"version":3,"file":"Member.js","sourceRoot":"","sources":["../../src/models/Member.ts"],"names":[],"mappings":";;;;;;AAAA,iCAAqD;AACrD,uCAAmD;AACnD,gEAAkC;AAyClC,MAAM,UAAU,GAAG;IAClB,QAAQ,EAAE,MAAM;IAChB,oBAAoB,EAAE,MAAM;CAC5B,CAAC;AAEW,QAAA,YAAY,GAAG,IAAI,iBAAM,CAAC;IACtC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACxC,QAAQ,EAAE,gBAAK,CAAC,IAAI;IACpB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,CAAC,gBAAK,CAAC,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM;IACjB,aAAa,EAAE,MAAM;IACrB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE;QACT,iBAAiB,EAAE;YAClB;gBACC,UAAU,EAAE,gBAAK,CAAC,IAAI;gBACtB,qBAAqB,EAAE,MAAM;gBAC7B,WAAW,EAAE,UAAU;gBACvB,KAAK,EAAE,OAAO;aACd;SACD;QACD,qBAAqB,EAAE,MAAM;QAC7B,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,UAAU;QACvB,KAAK,EAAE,OAAO;QACd,iBAAiB,EAAE,OAAO;QAC1B,cAAc,EAAE,OAAO;QACvB,OAAO,EAAE,MAAM;KACf;CACD,CAAC,CAAC;AAEH,oBAAY,CAAC,OAAO,CAAC,MAAM,EAAE;IAC5B,GAAG,EAAE,gBAAS;IACd,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,IAAI;CACb,CAAC,CAAC;AAEH,aAAa;AACA,QAAA,WAAW,GAAG,kBAAE,CAAC,KAAK,CAAiB,QAAQ,EAAE,oBAAY,EAAE,SAAS,CAAC,CAAC"}
\ No newline at end of file
+{"version":3,"file":"Member.js","sourceRoot":"","sources":["../../src/models/Member.ts"],"names":[],"mappings":";;;;;;AAAA,iCAAqD;AACrD,uCAAmD;AACnD,gEAAkC;AAyClC,MAAM,UAAU,GAAG;IAClB,QAAQ,EAAE,MAAM;IAChB,oBAAoB,EAAE,MAAM;CAC5B,CAAC;AAEW,QAAA,YAAY,GAAG,IAAI,iBAAM,CAAC;IACtC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;IACxC,QAAQ,EAAE,gBAAK,CAAC,IAAI;IACpB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,CAAC,gBAAK,CAAC,IAAI,CAAC;IACnB,SAAS,EAAE,IAAI;IACf,aAAa,EAAE,MAAM;IACrB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE;QACT,iBAAiB,EAAE;YAClB;gBACC,UAAU,EAAE,gBAAK,CAAC,IAAI;gBACtB,qBAAqB,EAAE,MAAM;gBAC7B,WAAW,EAAE,UAAU;gBACvB,KAAK,EAAE,OAAO;aACd;SACD;QACD,qBAAqB,EAAE,MAAM;QAC7B,WAAW,EAAE,OAAO;QACpB,WAAW,EAAE,UAAU;QACvB,KAAK,EAAE,OAAO;QACd,iBAAiB,EAAE,OAAO;QAC1B,cAAc,EAAE,OAAO;QACvB,OAAO,EAAE,MAAM;KACf;CACD,CAAC,CAAC;AAEH,oBAAY,CAAC,OAAO,CAAC,MAAM,EAAE;IAC5B,GAAG,EAAE,gBAAS;IACd,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,IAAI;CACb,CAAC,CAAC;AAEH,aAAa;AACA,QAAA,WAAW,GAAG,kBAAE,CAAC,KAAK,CAAiB,QAAQ,EAAE,oBAAY,EAAE,SAAS,CAAC,CAAC"}
\ No newline at end of file
diff --git a/dist/models/Message.d.ts b/dist/models/Message.d.ts
index f064ca7b..403e84c3 100644
--- a/dist/models/Message.d.ts
+++ b/dist/models/Message.d.ts
@@ -1,6 +1,6 @@
 /// <reference path="../util/MongoBigInt.d.ts" />
-import { Schema, Document } from "mongoose";
-export interface Message extends Document {
+import { Schema, Types, Document } from "mongoose";
+export interface Message {
     id: bigint;
     channel_id: bigint;
     guild_id?: bigint;
@@ -33,6 +33,9 @@ export interface Message extends Document {
         guild_id?: bigint;
     };
 }
+export interface MessageDocument extends Document, Message {
+    id: bigint;
+}
 export declare enum MessageType {
     DEFAULT = 0,
     RECIPIENT_ADD = 1,
@@ -113,5 +116,66 @@ export interface AllowedMentions {
     users?: bigint[];
     replied_user?: boolean;
 }
+export declare const Attachment: {
+    id: typeof Types.Long;
+    filename: StringConstructor;
+    size: NumberConstructor;
+    url: StringConstructor;
+    proxy_url: StringConstructor;
+    height: NumberConstructor;
+    width: NumberConstructor;
+};
+export declare const EmbedImage: {
+    url: StringConstructor;
+    proxy_url: StringConstructor;
+    height: NumberConstructor;
+    width: NumberConstructor;
+};
+export declare const Embed: {
+    title: StringConstructor;
+    type: StringConstructor;
+    description: StringConstructor;
+    url: StringConstructor;
+    timestamp: NumberConstructor;
+    color: NumberConstructor;
+    footer: {
+        text: StringConstructor;
+        icon_url: StringConstructor;
+        proxy_icon_url: StringConstructor;
+    };
+    image: {
+        url: StringConstructor;
+        proxy_url: StringConstructor;
+        height: NumberConstructor;
+        width: NumberConstructor;
+    };
+    thumbnail: {
+        url: StringConstructor;
+        proxy_url: StringConstructor;
+        height: NumberConstructor;
+        width: NumberConstructor;
+    };
+    video: {
+        url: StringConstructor;
+        proxy_url: StringConstructor;
+        height: NumberConstructor;
+        width: NumberConstructor;
+    };
+    provider: {
+        name: StringConstructor;
+        url: StringConstructor;
+    };
+    author: {
+        name: StringConstructor;
+        url: StringConstructor;
+        icon_url: StringConstructor;
+        proxy_icon_url: StringConstructor;
+    };
+    fields: {
+        name: StringConstructor;
+        value: StringConstructor;
+        inline: BooleanConstructor;
+    }[];
+};
 export declare const MessageSchema: Schema<Document<any>, import("mongoose").Model<Document<any>>, undefined>;
-export declare const MessageModel: import("mongoose").Model<Message>;
+export declare const MessageModel: import("mongoose").Model<MessageDocument>;
diff --git a/dist/models/Message.js b/dist/models/Message.js
index a8e2e64a..3ae1d6db 100644
--- a/dist/models/Message.js
+++ b/dist/models/Message.js
@@ -3,7 +3,7 @@ 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.MessageType = void 0;
+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");
@@ -29,7 +29,7 @@ var MessageType;
     MessageType[MessageType["REPLY"] = 19] = "REPLY";
     MessageType[MessageType["APPLICATION_COMMAND"] = 20] = "APPLICATION_COMMAND";
 })(MessageType = exports.MessageType || (exports.MessageType = {}));
-const Attachment = {
+exports.Attachment = {
     id: mongoose_1.Types.Long,
     filename: String,
     size: Number,
@@ -38,7 +38,7 @@ const Attachment = {
     height: Number,
     width: Number,
 };
-const EmbedImage = {
+exports.EmbedImage = {
     url: String,
     proxy_url: String,
     height: Number,
@@ -52,7 +52,7 @@ const Reaction = {
         animated: Boolean,
     },
 };
-const Embed = {
+exports.Embed = {
     title: String,
     type: String,
     description: String,
@@ -64,9 +64,9 @@ const Embed = {
         icon_url: String,
         proxy_icon_url: String,
     },
-    image: EmbedImage,
-    thumbnail: EmbedImage,
-    video: EmbedImage,
+    image: exports.EmbedImage,
+    thumbnail: exports.EmbedImage,
+    video: exports.EmbedImage,
     provider: {
         name: String,
         url: String,
@@ -100,8 +100,8 @@ exports.MessageSchema = new mongoose_1.Schema({
     mention_user_ids: [mongoose_1.Types.Long],
     mention_role_ids: [mongoose_1.Types.Long],
     mention_channel_ids: [mongoose_1.Types.Long],
-    attachments: [Attachment],
-    embeds: [Embed],
+    attachments: [exports.Attachment],
+    embeds: [exports.Embed],
     reactions: [Reaction],
     nonce: mongoose_1.Schema.Types.Mixed,
     pinned: Boolean,
diff --git a/dist/models/Message.js.map b/dist/models/Message.js.map
index ec12be5a..82bbecc1 100644
--- a/dist/models/Message.js.map
+++ b/dist/models/Message.js.map
@@ -1 +1 @@
-{"version":3,"file":"Message.js","sourceRoot":"","sources":["../../src/models/Message.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"Message.js","sourceRoot":"","sources":["../../src/models/Message.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/models/User.d.ts b/dist/models/User.d.ts
index 9b973de1..adf6613f 100644
--- a/dist/models/User.d.ts
+++ b/dist/models/User.d.ts
@@ -18,14 +18,14 @@ export interface User {
     level: string;
     nsfw_allowed: boolean;
     mfa_enabled: boolean;
-    created_at: number;
+    created_at: Date;
     verified: boolean;
     email?: string;
     flags: bigint;
     public_flags: bigint;
     hash: string;
     guilds: bigint[];
-    valid_tokens_since: number;
+    valid_tokens_since: Date;
     user_settings: UserSettings;
     relationships: Relationship[];
     connected_accounts: ConnectedAccount[];
diff --git a/dist/models/User.js b/dist/models/User.js
index 4fa2bc63..e40df925 100644
--- a/dist/models/User.js
+++ b/dist/models/User.js
@@ -23,14 +23,14 @@ exports.UserSchema = new mongoose_1.Schema({
     system: Boolean,
     nsfw_allowed: Boolean,
     mfa_enabled: Boolean,
-    created_at: Number,
+    created_at: Date,
     verified: Boolean,
     email: String,
     flags: mongoose_1.Types.Long,
     public_flags: mongoose_1.Types.Long,
     hash: String,
     guilds: [mongoose_1.Types.Long],
-    valid_tokens_since: Number,
+    valid_tokens_since: Date,
     user_settings: {
         afk_timeout: Number,
         allow_accessibility_detection: Boolean,
diff --git a/dist/models/User.js.map b/dist/models/User.js.map
index 6161943b..5d5e5b10 100644
--- a/dist/models/User.js.map
+++ b/dist/models/User.js.map
@@ -1 +1 @@
-{"version":3,"file":"User.js","sourceRoot":"","sources":["../../src/models/User.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"User.js","sourceRoot":"","sources":["../../src/models/User.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/util/Permissions.js b/dist/util/Permissions.js
index 99111331..dfa2ea74 100644
--- a/dist/util/Permissions.js
+++ b/dist/util/Permissions.js
@@ -92,7 +92,7 @@ async function getPermission(user_id, guild_id, channel_id, cache) {
     if (!guild)
         throw new Error("Guild not found");
     if (guild.owner_id === user_id)
-        return new Permissions("ADMINISTRATOR");
+        return new Permissions(Permissions.FLAGS.ADMINISTRATOR);
     member = await Member_1.MemberModel.findOne({ guild_id, id: user_id }, "roles").exec();
     if (!member)
         throw new Error("Member not found");
diff --git a/dist/util/Permissions.js.map b/dist/util/Permissions.js.map
index 4f644f4e..39a64586 100644
--- a/dist/util/Permissions.js.map
+++ b/dist/util/Permissions.js.map
@@ -1 +1 @@
-{"version":3,"file":"Permissions.js","sourceRoot":"","sources":["../../src/util/Permissions.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"Permissions.js","sourceRoot":"","sources":["../../src/util/Permissions.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/src/models/Activity.ts b/src/models/Activity.ts
index ee7e87cd..beaa43e8 100644
--- a/src/models/Activity.ts
+++ b/src/models/Activity.ts
@@ -14,7 +14,7 @@ export interface Activity {
 	name: string;
 	type: ActivityType;
 	url?: string;
-	created_at: number;
+	created_at: Date;
 	timestamps?: {
 		start: number;
 		end: number;
@@ -50,7 +50,7 @@ export const Activity = {
 	name: String,
 	type: Number,
 	url: String,
-	created_at: Number,
+	created_at: Date,
 	timestamps: [
 		{
 			start: Number,
diff --git a/src/models/Channel.ts b/src/models/Channel.ts
index 3ab571e7..bf03c939 100644
--- a/src/models/Channel.ts
+++ b/src/models/Channel.ts
@@ -37,7 +37,7 @@ export const ChannelModel = db.model<ChannelDocument>("Channel", ChannelSchema,
 
 export interface Channel {
 	id: bigint;
-	created_at: number;
+	created_at: Date;
 	name: string;
 	type: number;
 }
diff --git a/src/models/Event.ts b/src/models/Event.ts
index ba0f064c..40cbcb20 100644
--- a/src/models/Event.ts
+++ b/src/models/Event.ts
@@ -195,7 +195,7 @@ export interface GuildMemberUpdateEvent extends Event {
 		roles: bigint[];
 		user: User;
 		nick?: string;
-		joined_at: number;
+		joined_at: Date;
 		premium_since?: number;
 		pending?: boolean;
 	};
diff --git a/src/models/Invite.ts b/src/models/Invite.ts
index e6cf5cce..fc60b93c 100644
--- a/src/models/Invite.ts
+++ b/src/models/Invite.ts
@@ -7,7 +7,7 @@ export interface Invite extends Document {
 	uses: number;
 	max_uses: number;
 	max_age: number;
-	created_at: number;
+	created_at: Date;
 	guild_id: bigint;
 	channel_id: bigint;
 	inviter_id: bigint;
@@ -24,7 +24,7 @@ export const InviteSchema = new Schema({
 	uses: Number,
 	max_uses: Number,
 	max_age: Number,
-	created_at: Number,
+	created_at: Date,
 	guild_id: Types.Long,
 	channel_id: Types.Long,
 	inviter_id: Types.Long,
diff --git a/src/models/Member.ts b/src/models/Member.ts
index 97ed1961..145b5df4 100644
--- a/src/models/Member.ts
+++ b/src/models/Member.ts
@@ -7,7 +7,7 @@ export interface Member {
 	guild_id: bigint;
 	nick?: string;
 	roles: bigint[];
-	joined_at: number;
+	joined_at: Date;
 	premium_since?: number;
 	deaf: boolean;
 	mute: boolean;
@@ -51,7 +51,7 @@ export const MemberSchema = new Schema({
 	guild_id: Types.Long,
 	nick: String,
 	roles: [Types.Long],
-	joined_at: Number,
+	joined_at: Date,
 	premium_since: Number,
 	deaf: Boolean,
 	mute: Boolean,
diff --git a/src/models/Message.ts b/src/models/Message.ts
index 43517313..88291f9f 100644
--- a/src/models/Message.ts
+++ b/src/models/Message.ts
@@ -4,7 +4,7 @@ import { UserModel } from "./User";
 import { MemberModel } from "./Member";
 import { RoleModel } from "./Role";
 
-export interface Message extends Document {
+export interface Message {
 	id: bigint;
 	channel_id: bigint;
 	guild_id?: bigint;
@@ -38,6 +38,10 @@ export interface Message extends Document {
 	};
 }
 
+export interface MessageDocument extends Document, Message {
+	id: bigint;
+}
+
 export enum MessageType {
 	DEFAULT = 0,
 	RECIPIENT_ADD = 1,
@@ -126,7 +130,7 @@ export interface AllowedMentions {
 	replied_user?: boolean;
 }
 
-const Attachment = {
+export const Attachment = {
 	id: Types.Long, // attachment id
 	filename: String, // name of file attached
 	size: Number, // size of file in bytes
@@ -136,7 +140,7 @@ const Attachment = {
 	width: Number, // width of file (if image)
 };
 
-const EmbedImage = {
+export const EmbedImage = {
 	url: String,
 	proxy_url: String,
 	height: Number,
@@ -264,4 +268,4 @@ MessageSchema.virtual("mention_channels", {
 // });
 
 // @ts-ignore
-export const MessageModel = db.model<Message>("Message", MessageSchema, "messages");
+export const MessageModel = db.model<MessageDocument>("Message", MessageSchema, "messages");
diff --git a/src/models/User.ts b/src/models/User.ts
index 66849844..971e8d20 100644
--- a/src/models/User.ts
+++ b/src/models/User.ts
@@ -19,14 +19,14 @@ export interface User {
 	level: string; // organization permission level (owner, moderator, user)
 	nsfw_allowed: boolean; // if the user is older than 18 (resp. Config)
 	mfa_enabled: boolean; // if multi factor authentication is enabled
-	created_at: number; // registration date
+	created_at: Date; // registration date
 	verified: boolean; // if the user is offically verified
 	email?: string; // email of the user
 	flags: bigint; // UserFlags
 	public_flags: bigint;
 	hash: string; // hash of the password, salt is saved in password (bcrypt)
 	guilds: bigint[]; // array of guild ids the user is part of
-	valid_tokens_since: number; // all tokens with a previous issue date are invalid
+	valid_tokens_since: Date; // all tokens with a previous issue date are invalid
 	user_settings: UserSettings;
 	relationships: Relationship[];
 	connected_accounts: ConnectedAccount[];
@@ -128,14 +128,14 @@ export const UserSchema = new Schema({
 	system: Boolean,
 	nsfw_allowed: Boolean,
 	mfa_enabled: Boolean,
-	created_at: Number,
+	created_at: Date,
 	verified: Boolean,
 	email: String,
 	flags: Types.Long, // TODO: automatically convert Types.Long to BitField of UserFlags
 	public_flags: Types.Long,
 	hash: String, // hash of the password, salt is saved in password (bcrypt)
 	guilds: [Types.Long], // array of guild ids the user is part of
-	valid_tokens_since: Number, // all tokens with a previous issue date are invalid
+	valid_tokens_since: Date, // all tokens with a previous issue date are invalid
 	user_settings: {
 		afk_timeout: Number,
 		allow_accessibility_detection: Boolean,