diff --git a/util/src/interfaces/Activity.ts b/util/src/interfaces/Activity.ts
new file mode 100644
index 00000000..f5a3c270
--- /dev/null
+++ b/util/src/interfaces/Activity.ts
@@ -0,0 +1,43 @@
+export interface Activity {
+ name: string;
+ type: ActivityType;
+ url?: string;
+ created_at?: Date;
+ timestamps?: {
+ start?: number;
+ end?: number;
+ }[];
+ application_id?: string;
+ details?: string;
+ state?: string;
+ emoji?: {
+ name: string;
+ id?: string;
+ amimated?: boolean;
+ };
+ party?: {
+ id?: string;
+ size?: [number, number];
+ };
+ assets?: {
+ large_image?: string;
+ large_text?: string;
+ small_image?: string;
+ small_text?: string;
+ };
+ secrets?: {
+ join?: string;
+ spectate?: string;
+ match?: string;
+ };
+ instance?: boolean;
+ flags?: bigint;
+}
+
+export enum ActivityType {
+ GAME = 0,
+ STREAMING = 1,
+ LISTENING = 2,
+ CUSTOM = 4,
+ COMPETING = 5,
+}
diff --git a/util/src/models/Event.ts b/util/src/interfaces/Event.ts
index 86d0fd00..7ea1bd49 100644
--- a/util/src/models/Event.ts
+++ b/util/src/interfaces/Event.ts
@@ -1,15 +1,17 @@
-import { ConnectedAccount, PublicUser, Relationship, User, UserSettings } from "./User";
-import { DMChannel, Channel } from "./Channel";
-import { Guild } from "./Guild";
-import { Member, PublicMember, UserGuildSettings } from "./Member";
-import { Emoji } from "./Emoji";
-import { Presence } from "./Activity";
-import { Role } from "./Role";
-import { Invite } from "./Invite";
-import { Message, PartialEmoji } from "./Message";
-import { VoiceState } from "./VoiceState";
-import { ApplicationCommand } from "./Application";
+import { PublicUser, User, UserSettings } from "../entities/User";
+import { Channel } from "../entities/Channel";
+import { Guild } from "../entities/Guild";
+import { Member, PublicMember, UserGuildSettings } from "../entities/Member";
+import { Emoji } from "../entities/Emoji";
+import { Role } from "../entities/Role";
+import { Invite } from "../entities/Invite";
+import { Message, PartialEmoji } from "../entities/Message";
+import { VoiceState } from "../entities/VoiceState";
+import { ApplicationCommand } from "../entities/Application";
import { Interaction } from "./Interaction";
+import { ConnectedAccount } from "../entities/ConnectedAccount";
+import { Relationship } from "../entities/Relationship";
+import { Presence } from "./Presence";
export interface Event {
guild_id?: string;
@@ -33,17 +35,17 @@ export interface ReadyEventData {
user: PublicUser & {
mobile: boolean;
desktop: boolean;
- email: string | null;
- flags: bigint;
+ email: string | undefined;
+ flags: string;
mfa_enabled: boolean;
nsfw_allowed: boolean;
- phone: string | null;
+ phone: string | undefined;
premium: boolean;
premium_type: number;
verified: boolean;
bot: boolean;
};
- private_channels: DMChannel[]; // this will be empty for bots
+ private_channels: Channel[]; // this will be empty for bots
session_id: string; // resuming
guilds: Guild[];
analytics_token?: string;
@@ -67,12 +69,12 @@ export interface ReadyEventData {
[number, [[number, [number, number]]]],
{ b: number; k: bigint[] }[]
][];
- guild_join_requests?: []; // ? what is this? this is new
+ guild_join_requests?: any[]; // ? what is this? this is new
shard?: [number, number];
user_settings?: UserSettings;
relationships?: Relationship[]; // TODO
read_state: {
- entries: []; // TODO
+ entries: any[]; // TODO
partial: boolean;
version: number;
};
@@ -83,18 +85,11 @@ export interface ReadyEventData {
};
application?: {
id: string;
- flags: bigint;
+ flags: string;
};
merged_members?: Omit<Member, "settings" | "user">[][];
// probably all users who the user is in contact with
- users?: {
- avatar: string | null;
- discriminator: string;
- id: string;
- username: string;
- bot: boolean;
- public_flags: bigint;
- }[];
+ users?: PublicUser[];
}
export interface ReadyEvent extends Event {
@@ -128,7 +123,9 @@ export interface ChannelPinsUpdateEvent extends Event {
export interface GuildCreateEvent extends Event {
event: "GUILD_CREATE";
- data: Guild;
+ data: Guild & {
+ joined_at: Date;
+ };
}
export interface GuildUpdateEvent extends Event {
@@ -257,22 +254,14 @@ export interface InviteDeleteEvent extends Event {
};
}
-export type MessagePayload = Omit<Message, "author_id"> & {
- channel_id: string;
- guild_id?: string;
- author: PublicUser;
- member: PublicMember;
- mentions: (PublicUser & { member: PublicMember })[];
-};
-
export interface MessageCreateEvent extends Event {
event: "MESSAGE_CREATE";
- data: MessagePayload;
+ data: Message;
}
export interface MessageUpdateEvent extends Event {
event: "MESSAGE_UPDATE";
- data: MessagePayload;
+ data: Message;
}
export interface MessageDeleteEvent extends Event {
@@ -521,4 +510,4 @@ export type EVENT =
| "RELATIONSHIP_REMOVE"
| CUSTOMEVENTS;
-export type CUSTOMEVENTS = "INVALIDATED";
+export type CUSTOMEVENTS = "INVALIDATED" | "RATELIMIT";
diff --git a/util/src/models/Interaction.ts b/util/src/interfaces/Interaction.ts
index 764247a5..3cafb2d5 100644
--- a/util/src/models/Interaction.ts
+++ b/util/src/interfaces/Interaction.ts
@@ -1,4 +1,4 @@
-import { AllowedMentions, Embed } from "./Message";
+import { AllowedMentions, Embed } from "../entities/Message";
export interface Interaction {
id: string;
diff --git a/util/src/interfaces/Presence.ts b/util/src/interfaces/Presence.ts
new file mode 100644
index 00000000..4a1ff038
--- /dev/null
+++ b/util/src/interfaces/Presence.ts
@@ -0,0 +1,10 @@
+import { ClientStatus, Status } from "./Status";
+import { Activity } from "./Activity";
+
+export interface Presence {
+ user_id: string;
+ guild_id?: string;
+ status: Status;
+ activities: Activity[];
+ client_status: ClientStatus;
+}
diff --git a/util/src/models/Status.ts b/util/src/interfaces/Status.ts
index 5a9bf2ca..c4dab586 100644
--- a/util/src/models/Status.ts
+++ b/util/src/interfaces/Status.ts
@@ -5,9 +5,3 @@ export interface ClientStatus {
mobile?: string; // e.g. iOS/Android
web?: string; // e.g. browser, bot account
}
-
-export const ClientStatus = {
- desktop: String,
- mobile: String,
- web: String,
-};
diff --git a/util/src/interfaces/index.ts b/util/src/interfaces/index.ts
new file mode 100644
index 00000000..ab7fa429
--- /dev/null
+++ b/util/src/interfaces/index.ts
@@ -0,0 +1,5 @@
+export * from "./Activity";
+export * from "./Presence";
+export * from "./Interaction";
+export * from "./Event";
+export * from "./Status";
|