mirror of
https://github.com/tiramisulabs/seyfert.git
synced 2025-07-01 20:46:08 +00:00
93 lines
2.7 KiB
TypeScript
93 lines
2.7 KiB
TypeScript
import type {
|
|
ActivityTypes,
|
|
DiscordActivityButton,
|
|
DiscordActivitySecrets,
|
|
DiscordClientStatus,
|
|
DiscordPresenceUpdate,
|
|
} from '../../discordeno/mod.ts';
|
|
import type { Session } from '../Session.ts';
|
|
import { User } from './User.ts';
|
|
import { Snowflake } from '../Snowflake.ts';
|
|
import type { ComponentEmoji } from '../Util.ts';
|
|
|
|
export interface ActivityAssets {
|
|
largeImage?: string;
|
|
largeText?: string;
|
|
smallImage?: string;
|
|
smallText?: string;
|
|
}
|
|
|
|
export interface Activities {
|
|
name: string;
|
|
type: ActivityTypes;
|
|
url?: string;
|
|
createdAt: number;
|
|
timestamps?: {
|
|
start?: number;
|
|
end?: number;
|
|
};
|
|
applicationId?: Snowflake;
|
|
details?: string;
|
|
state?: string;
|
|
emoji?: ComponentEmoji;
|
|
party?: {
|
|
id?: string;
|
|
size?: number[];
|
|
};
|
|
assets?: ActivityAssets;
|
|
secrets?: DiscordActivitySecrets;
|
|
instance?: boolean;
|
|
flags?: number;
|
|
buttons?: DiscordActivityButton;
|
|
}
|
|
|
|
export enum StatusTypes {
|
|
online = 0,
|
|
dnd = 1,
|
|
idle = 2,
|
|
invisible = 3,
|
|
offline = 4,
|
|
}
|
|
|
|
export class Presence {
|
|
constructor(session: Session, data: DiscordPresenceUpdate) {
|
|
this.session = session;
|
|
this.user = new User(this.session, data.user);
|
|
this.guildId = data.guild_id;
|
|
this.status = StatusTypes[data.status];
|
|
this.activities = data.activities.map<Activities>((activity) =>
|
|
Object.create({
|
|
name: activity.name,
|
|
type: activity.type,
|
|
url: activity.url ? activity.url : undefined,
|
|
createdAt: activity.created_at,
|
|
timestamps: activity.timestamps,
|
|
applicationId: activity.application_id,
|
|
details: activity.details ? activity.details : undefined,
|
|
state: activity.state,
|
|
emoji: activity.emoji ? activity.emoji : undefined,
|
|
party: activity.party ? activity.party : undefined,
|
|
assets: activity.assets
|
|
? {
|
|
largeImage: activity.assets.large_image,
|
|
largeText: activity.assets.large_text,
|
|
smallImage: activity.assets.small_image,
|
|
smallText: activity.assets.small_text,
|
|
}
|
|
: null,
|
|
secrets: activity.secrets ? activity.secrets : undefined,
|
|
instance: !!activity.instance,
|
|
flags: activity.flags,
|
|
buttons: activity.buttons,
|
|
})
|
|
);
|
|
this.clientStatus = data.client_status;
|
|
}
|
|
session: Session;
|
|
user: User;
|
|
guildId: Snowflake;
|
|
status: StatusTypes;
|
|
activities: Activities[];
|
|
clientStatus: DiscordClientStatus;
|
|
}
|