mirror of
https://github.com/tiramisulabs/seyfert.git
synced 2025-07-03 05:26:07 +00:00
Update Invite structure
This commit is contained in:
parent
712d816fad
commit
22f05c8145
@ -1,9 +1,50 @@
|
||||
import type { Session } from "../session/Session.ts";
|
||||
import type { DiscordInvite } from "../vendor/external.ts";
|
||||
import type { Snowflake } from "../util/Snowflake.ts";
|
||||
import type {
|
||||
DiscordChannel,
|
||||
DiscordMemberWithUser,
|
||||
DiscordInvite,
|
||||
DiscordScheduledEventEntityMetadata,
|
||||
ScheduledEventPrivacyLevel,
|
||||
ScheduledEventStatus,
|
||||
ScheduledEventEntityType
|
||||
} from "../vendor/external.ts";
|
||||
import { TargetTypes } from "../vendor/external.ts";
|
||||
import InviteGuild from "./guilds/InviteGuild.ts";
|
||||
import User from "./User.ts";
|
||||
import Guild from "./guilds/Guild.ts";
|
||||
import { GuildChannel } from "./channels/GuildChannel.ts";
|
||||
import { Member } from "./Member.ts";
|
||||
|
||||
export interface InviteStageInstance {
|
||||
/** The members speaking in the Stage */
|
||||
members: Partial<Member>[];
|
||||
/** The number of users in the Stage */
|
||||
participantCount: number;
|
||||
/** The number of users speaking in the Stage */
|
||||
speakerCount: number;
|
||||
/** The topic of the Stage instance (1-120 characters) */
|
||||
topic: string;
|
||||
}
|
||||
|
||||
export interface InviteScheduledEvent {
|
||||
id: Snowflake;
|
||||
guildId: string;
|
||||
channelId?: string;
|
||||
creatorId?: string;
|
||||
name: string;
|
||||
description?: string;
|
||||
scheduledStartTime: string;
|
||||
scheduledEndTime?: string;
|
||||
privacyLevel: ScheduledEventPrivacyLevel;
|
||||
status: ScheduledEventStatus;
|
||||
entityType: ScheduledEventEntityType;
|
||||
entityId?: string;
|
||||
entityMetadata?: DiscordScheduledEventEntityMetadata;
|
||||
creator?: User;
|
||||
userCount?: number;
|
||||
image?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @link https://discord.com/developers/docs/resources/invite#invite-object
|
||||
@ -24,16 +65,37 @@ export class Invite {
|
||||
this.approximatePresenceCount = data.approximate_presence_count;
|
||||
}
|
||||
|
||||
// TODO: fix this
|
||||
// this.channel = data.channel;
|
||||
if (data.channel) {
|
||||
const guildId = (data.guild && data.guild?.id) ? data.guild.id : "";
|
||||
this.channel = new GuildChannel(session, (data.channel as DiscordChannel), guildId);
|
||||
}
|
||||
|
||||
this.code = data.code;
|
||||
|
||||
if (data.expires_at) {
|
||||
this.expiresAt = Number.parseInt(data.expires_at);
|
||||
}
|
||||
|
||||
// TODO: fix this
|
||||
// this.xd = data.guild_scheduled_event
|
||||
if (data.guild_scheduled_event) {
|
||||
this.guildScheduledEvent = {
|
||||
id: data.guild_scheduled_event.id,
|
||||
guildId: data.guild_scheduled_event.guild_id,
|
||||
channelId: data.guild_scheduled_event.channel_id ? data.guild_scheduled_event.channel_id : undefined,
|
||||
creatorId: data.guild_scheduled_event.creator_id ? data.guild_scheduled_event.creator_id : undefined,
|
||||
name: data.guild_scheduled_event.name,
|
||||
description: data.guild_scheduled_event.description ? data.guild_scheduled_event.description : undefined,
|
||||
scheduledStartTime: data.guild_scheduled_event.scheduled_start_time,
|
||||
scheduledEndTime: data.guild_scheduled_event.scheduled_end_time ? data.guild_scheduled_event.scheduled_end_time : undefined,
|
||||
privacyLevel: data.guild_scheduled_event.privacy_level,
|
||||
status: data.guild_scheduled_event.status,
|
||||
entityType: data.guild_scheduled_event.entity_type,
|
||||
entityId: data.guild ? data.guild.id : undefined,
|
||||
entityMetadata: data.guild_scheduled_event.entity_metadata ? data.guild_scheduled_event.entity_metadata : undefined,
|
||||
creator: data.guild_scheduled_event.creator ? new User(session, data.guild_scheduled_event.creator) : undefined,
|
||||
userCount: data.guild_scheduled_event.user_count ? data.guild_scheduled_event.user_count : undefined,
|
||||
image: data.guild_scheduled_event.image ? data.guild_scheduled_event.image : undefined
|
||||
};
|
||||
}
|
||||
|
||||
if (data.inviter) {
|
||||
this.inviter = new User(session, data.inviter);
|
||||
@ -43,10 +105,17 @@ export class Invite {
|
||||
this.targetUser = new User(session, data.target_user);
|
||||
}
|
||||
|
||||
// TODO: fix this
|
||||
// this.stageInstance = data.stage_instance
|
||||
if (data.stage_instance) {
|
||||
const guildId = (data.guild && data.guild?.id) ? data.guild.id : "";
|
||||
this.stageInstance = {
|
||||
members: data.stage_instance.members.map(m => new Member(session, (m as DiscordMemberWithUser), guildId)),
|
||||
participantCount: data.stage_instance.participant_count,
|
||||
speakerCount: data.stage_instance.speaker_count,
|
||||
topic: data.stage_instance.topic
|
||||
};
|
||||
}
|
||||
|
||||
// TODO: fix this
|
||||
// TODO: create Application structure
|
||||
// this.targetApplication = data.target_application
|
||||
|
||||
if (data.target_type) {
|
||||
@ -63,6 +132,11 @@ export class Invite {
|
||||
inviter?: User;
|
||||
targetUser?: User;
|
||||
targetType?: TargetTypes;
|
||||
channel?: Partial<GuildChannel>;
|
||||
stageInstance?: InviteStageInstance;
|
||||
guildScheduledEvent?: InviteScheduledEvent;
|
||||
// TODO: create Application structure
|
||||
// targetApplication?: Partial<Application>
|
||||
|
||||
async delete(): Promise<Invite> {
|
||||
await Guild.prototype.deleteInvite.call(this.guild, this.code);
|
||||
|
Loading…
x
Reference in New Issue
Block a user