Newer
Older
percord / src / models / Channel.ts
@Flam3rboy Flam3rboy on 11 Feb 2021 1 KB :sparkles: updated other models
export interface Channel {
	id: bigint;
	created_at: number;
	name: string;
	type: number;
	read_state: ReadState[];
}

export interface ReadState {
	last_message_id: bigint;
	last_pin_timestamp: number;
	mention_count: number;
}

export interface TextBasedChannel {
	messages: any[];
	last_message_id?: bigint;
	last_pin_timestamp?: number;
}

export interface GuildChannel extends Channel {
	guild_id: bigint;
	position: number;
	parent_id?: bigint;
	permission_overwrites: {
		allow: bigint;
		deny: bigint;
		id: bigint;
		type: number;
	}[];
}

export interface VoiceChannel extends GuildChannel {}

export interface TextChannel extends GuildChannel, TextBasedChannel {
	nsfw: boolean;
	rate_limit_per_user: number;
	topic?: string;
}

export interface DMChannel extends Channel, TextBasedChannel {
	owner_id: bigint;
	recipients: bigint[];
}

export enum ChannelType {
	GUILD_TEXT = 0, // a text channel within a server
	DM = 1, // a direct message between users
	GUILD_VOICE = 2, // a voice channel within a server
	GROUP_DM = 3, // a direct message between multiple users
	GUILD_CATEGORY = 4, // an organizational category that contains up to 50 channels
	GUILD_NEWS = 5, // a channel that users can follow and crosspost into their own server
	GUILD_STORE = 6, // a channel in which game developers can sell their game on Discord
}