lilybird
Version:
A bun-first discord api wrapper written in TS
568 lines • 18.1 kB
TypeScript
import type { AutoModerationTriggerType, InviteTargetType, GatewayOpCode, GatewayEvent } from "#enums";
import type { ActivityStructure, BotActivityStructure } from "./activity.js";
import type { ApplicationCommand } from "./application-command.js";
import type { AutoModeration } from "./auto-moderation.js";
import type { StageInstance } from "./stage-instance.js";
import type { Application } from "./application.js";
import type { Interaction } from "./interaction.js";
import type { AuditLog } from "./audit-log.js";
import type { Channel } from "./channel.js";
import type { Message } from "./message.js";
import type { Sticker } from "./sticker.js";
import type { Emoji } from "./emoji.js";
import type { Guild } from "./guild.js";
import type { Voice } from "./voice.js";
import type { Role } from "./role.js";
import type { User } from "./user.js";
import type { Poll } from "./poll.js";
export interface GetGatewayResponse {
url: string;
}
export interface GetGatewayBotResponse extends GetGatewayResponse {
shards: number;
session_start_limit: {
total: number;
remaining: number;
reset_after: number;
max_concurrency: number;
};
}
export interface SessionStartLimit {
total: number;
remaining: number;
reset_after: number;
max_concurrency: number;
}
export type Payload = ReceiveEvent | SendEvent;
export interface BasePayload {
op: GatewayOpCode;
d: unknown;
s: number | null;
t: GatewayEvent | null;
}
export interface DispatchPayload extends BasePayload {
op: GatewayOpCode.Dispatch;
s: number;
t: GatewayEvent;
}
export type Status = "online" | "dnd" | "idle" | "invisible" | "offline";
export interface ClientStatus {
desktop?: string;
mobile?: string;
web?: string;
}
export interface UpdatePresenceStructure {
since: number | null;
activities: Array<BotActivityStructure>;
status: Status;
afk: boolean;
}
export interface PresenceUpdateEventFields {
user: Partial<User.Structure> & {
id: string;
};
guild_id: string;
status: string;
activities: Array<ActivityStructure>;
client_status: ClientStatus;
}
export type SendEvent = Identify | Resume | Heartbeat | RequestGuildMembers | UpdateVoiceState | UpdatePresence | HeartbeatACK;
export interface Identify extends BasePayload {
op: GatewayOpCode.Identify;
d: {
token: string;
properties: {
os: string;
browser: "Lilybird";
device: "Lilybird";
};
compress?: boolean;
large_threshold?: number;
shard?: [number, number];
presence?: UpdatePresenceStructure;
intents: number;
};
}
export interface Resume extends BasePayload {
op: GatewayOpCode.Resume;
d: {
token: string;
session_id: string;
seq: number;
};
}
export interface Heartbeat extends BasePayload {
op: GatewayOpCode.Heartbeat;
d: number | null;
}
export interface RequestGuildMembers extends BasePayload {
op: GatewayOpCode.RequestGuildMembers;
d: {
guild_id: string;
query?: string;
limit: number;
presences?: boolean;
user_ids?: string | Array<string>;
nonce?: string;
};
}
export interface UpdateVoiceState extends BasePayload {
op: GatewayOpCode.VoiceStateUpdate;
d: {
guild_id: string;
channel_id: string | null;
self_mute: boolean;
self_deaf: boolean;
};
}
export interface UpdatePresence extends BasePayload {
op: GatewayOpCode.PresenceUpdate;
d: UpdatePresenceStructure;
}
export interface HeartbeatACK extends BasePayload {
op: GatewayOpCode.HeartbeatACK;
}
export type ReceiveDispatchEvent = Ready | Resumed | ApplicationCommandPermissionsUpdate | AutoModerationRuleCreate | AutoModerationRuleUpdate | AutoModerationRuleDelete | AutoModerationActionExecution | ChannelCreate | ChannelUpdate | ChannelDelete | ChannelPinsUpdate | ThreadCreate | ThreadUpdate | ThreadDelete | ThreadListSync | ThreadMemberUpdate | ThreadMembersUpdate | GuildCreate | GuildUpdate | GuildDelete | GuildAuditLogEntryCreate | GuildBanAdd | GuildBanRemove | GuildEmojisUpdate | GuildStickersUpdate | GuildIntegrationsUpdate | GuildMemberAdd | GuildMemberRemove | GuildMemberUpdate | GuildMembersChunk | GuildRoleCreate | GuildRoleUpdate | GuildRoleDelete | GuildScheduledEventCreate | GuildScheduledEventUpdate | GuildScheduledEventDelete | GuildScheduledEventUserAdd | GuildScheduledEventUserRemove | IntegrationCreate | IntegrationUpdate | IntegrationDelete | InteractionCreate | InviteCreate | InviteDelete | MessageCreate | MessageUpdate | MessageDelete | MessageDeleteBulk | MessageReactionAdd | MessageReactionRemove | MessageReactionRemoveAll | MessageReactionRemoveEmoji | PresenceUpdate | StageInstanceCreate | StageInstanceUpdate | StageInstanceDelete | TypingStart | UserUpdate | VoiceStateUpdate | VoiceServerUpdate | WebhookUpdate | MessagePollVoteAdd | MessagePollVoteRemove;
export type ReceiveOpCodeEvent = Hello | Reconnect | InvalidSession;
export type ReceiveEvent = ReceiveOpCodeEvent | ReceiveDispatchEvent;
export interface Hello extends BasePayload {
op: GatewayOpCode.Hello;
d: {
heartbeat_interval: number;
};
}
export interface Reconnect extends BasePayload {
op: GatewayOpCode.Reconnect;
d: null;
}
export interface InvalidSession extends BasePayload {
op: GatewayOpCode.InvalidSession;
d: boolean;
}
export interface Ready extends DispatchPayload {
d: {
v: number;
user: User.Structure;
guilds: Array<Guild.UnavailableStructure>;
session_id: string;
resume_gateway_url: string;
shard?: [number, number];
application: Partial<Application.Structure>;
};
t: GatewayEvent.Ready;
}
export interface Resumed extends DispatchPayload {
t: GatewayEvent.Resumed;
}
export interface ApplicationCommandPermissionsUpdate extends DispatchPayload {
d: ApplicationCommand.PermissionsStructure;
t: GatewayEvent.ApplicationCommandPermissionsUpdate;
}
export interface AutoModerationRuleCreate extends DispatchPayload {
d: AutoModeration.RuleStructure;
t: GatewayEvent.AutoModerationRuleCreate;
}
export interface AutoModerationRuleUpdate extends DispatchPayload {
d: AutoModeration.RuleStructure;
t: GatewayEvent.AutoModerationRuleUpdate;
}
export interface AutoModerationRuleDelete extends DispatchPayload {
d: AutoModeration.RuleStructure;
t: GatewayEvent.AutoModerationRuleDelete;
}
export interface AutoModerationActionExecution extends DispatchPayload {
d: {
guild_id: string;
action: AutoModeration.ActionStructure;
rule_id: string;
rule_trigger_type: AutoModerationTriggerType;
user_id: string;
channel_id?: string;
message_id?: string;
alert_system_message_id?: string;
content: string;
matched_keyword: string | null;
matched_content: string | null;
};
t: GatewayEvent.AutoModerationActionExecution;
}
export interface ChannelCreate extends DispatchPayload {
d: Channel.Structure;
t: GatewayEvent.ChannelCreate;
}
export interface ChannelUpdate extends DispatchPayload {
d: Channel.Structure;
t: GatewayEvent.ChannelUpdate;
}
export interface ChannelDelete extends DispatchPayload {
d: Channel.Structure;
t: GatewayEvent.ChannelDelete;
}
export interface ChannelPinsUpdate extends DispatchPayload {
d: {
guild_id?: string;
channel_id: string;
last_pin_timestamp?: string | null;
};
t: GatewayEvent.ChannelPinsUpdate;
}
export interface ThreadCreate extends DispatchPayload {
d: Channel.Structure & {
newly_created: boolean;
member: Channel.ThreadMemberStructure | undefined;
};
t: GatewayEvent.ThreadCreate;
}
export interface ThreadUpdate extends DispatchPayload {
d: Channel.Structure;
t: GatewayEvent.ThreadUpdate;
}
export interface ThreadDelete extends DispatchPayload {
d: Pick<Channel.ThreadChannelStructure, "id" | "guild_id" | "parent_id" | "type">;
t: GatewayEvent.ThreadDelete;
}
export interface ThreadListSync extends DispatchPayload {
d: {
guild_id: string;
channel_ids?: Array<string>;
threads: Array<Channel.Structure>;
members: Array<Channel.ThreadMemberStructure>;
};
t: GatewayEvent.ThreadListSync;
}
export interface ThreadMemberUpdate extends DispatchPayload {
d: Channel.ThreadMemberStructure & {
guild_id: string;
};
t: GatewayEvent.ThreadMemberUpdate;
}
export interface ThreadMembersUpdate extends DispatchPayload {
d: {
id: string;
guild_id: string;
member_count: number;
added_members?: Array<Channel.ThreadMemberStructure & Guild.MemberStructure & (PresenceUpdateEventFields | null)>;
removed_member_ids?: Array<string>;
};
t: GatewayEvent.ThreadMembersUpdate;
}
export interface GuildCreate extends DispatchPayload {
d: Guild.UnavailableStructure | Guild.New;
t: GatewayEvent.GuildCreate;
}
export interface GuildUpdate extends DispatchPayload {
d: Guild.Structure;
t: GatewayEvent.GuildUpdate;
}
export interface GuildDelete extends DispatchPayload {
d: Guild.UnavailableStructure;
t: GatewayEvent.GuildDelete;
}
export interface GuildAuditLogEntryCreate extends DispatchPayload {
d: AuditLog.EntryStructure;
t: GatewayEvent.GuildAuditLogEntryCreate;
}
export interface GuildBanAdd extends DispatchPayload {
d: {
guild_id: string;
user: User.Structure;
};
t: GatewayEvent.GuildBanAdd;
}
export interface GuildBanRemove extends DispatchPayload {
d: {
guild_id: string;
user: User.Structure;
};
t: GatewayEvent.GuildBanRemove;
}
export interface GuildEmojisUpdate extends DispatchPayload {
d: {
guild_id: string;
emojis: Array<Emoji.Structure>;
};
t: GatewayEvent.GuildEmojisUpdate;
}
export interface GuildStickersUpdate extends DispatchPayload {
d: {
guild_id: string;
stickers: Array<Sticker.Structure>;
};
t: GatewayEvent.GuildStickersUpdate;
}
export interface GuildIntegrationsUpdate extends DispatchPayload {
d: {
guild_id: string;
};
t: GatewayEvent.GuildIntegrationsUpdate;
}
export interface GuildMemberAdd extends DispatchPayload {
d: Guild.MemberStructure & {
guild_id: string;
};
t: GatewayEvent.GuildMemberAdd;
}
export interface GuildMemberRemove extends DispatchPayload {
d: {
guild_id: string;
user: User.Structure;
};
t: GatewayEvent.GuildMemberRemove;
}
export interface GuildMemberUpdate extends DispatchPayload {
d: {
guild_id: string;
roles: Array<string>;
user: User.Structure;
nick?: string | null;
avatar: string | null;
joined_at: string | null;
premium_since?: string | null;
deaf?: boolean;
mute?: boolean;
pending?: boolean;
communication_disabled_until?: string | null;
};
t: GatewayEvent.GuildMemberUpdate;
}
export interface GuildMembersChunk extends DispatchPayload {
d: {
guild_id: string;
members: Array<Guild.MemberStructure>;
chunk_index: number;
chunk_count: number;
not_found?: Array<string>;
presences?: Array<PresenceUpdateEventFields>;
nonce?: string;
};
t: GatewayEvent.GuildMembersChunk;
}
export interface GuildRoleCreate extends DispatchPayload {
d: {
guild_id: string;
role: Role.Structure;
};
t: GatewayEvent.GuildRoleCreate;
}
export interface GuildRoleUpdate extends DispatchPayload {
d: {
guild_id: string;
role: Role.Structure;
};
t: GatewayEvent.GuildRoleUpdate;
}
export interface GuildRoleDelete extends DispatchPayload {
d: {
guild_id: string;
role_id: string;
};
t: GatewayEvent.GuildRoleDelete;
}
export interface GuildScheduledEventCreate extends DispatchPayload {
d: Guild.ScheduledEventStructure;
t: GatewayEvent.GuildScheduledEventCreate;
}
export interface GuildScheduledEventUpdate extends DispatchPayload {
d: Guild.ScheduledEventStructure;
t: GatewayEvent.GuildScheduledEventUpdate;
}
export interface GuildScheduledEventDelete extends DispatchPayload {
d: Guild.ScheduledEventStructure;
t: GatewayEvent.GuildScheduledEventDelete;
}
export interface GuildScheduledEventUserAdd extends DispatchPayload {
d: {
guild_scheduled_event_id: string;
user_id: string;
guild_id: string;
};
t: GatewayEvent.GuildScheduledEventUserAdd;
}
export interface GuildScheduledEventUserRemove extends DispatchPayload {
d: {
guild_scheduled_event_id: string;
user_id: string;
guild_id: string;
};
t: GatewayEvent.GuildScheduledEventUserRemove;
}
export interface IntegrationCreate extends DispatchPayload {
d: Guild.IntegrationStructure & {
guild_id: string;
};
t: GatewayEvent.IntegrationCreate;
}
export interface IntegrationUpdate extends DispatchPayload {
d: Guild.IntegrationStructure & {
guild_id: string;
};
t: GatewayEvent.IntegrationUpdate;
}
export interface IntegrationDelete extends DispatchPayload {
d: {
id: string;
guild_id: string;
application_id?: string;
};
t: GatewayEvent.IntegrationDelete;
}
export interface InteractionCreate extends DispatchPayload {
d: Interaction.Structure;
t: GatewayEvent.InteractionCreate;
}
export interface InviteCreate extends DispatchPayload {
d: {
channel_id: string;
code: string;
created_at: string;
guild_id?: string;
inviter?: User.Structure;
max_age: number;
max_uses: number;
target_type?: InviteTargetType;
target_user?: User.Structure;
target_application?: Partial<Application.Structure>;
temporary: boolean;
uses: number;
};
t: GatewayEvent.InviteCreate;
}
export interface InviteDelete extends DispatchPayload {
d: {
channel_id: string;
guild_id?: string;
code: string;
};
t: GatewayEvent.InviteDelete;
}
export interface MessageCreate extends DispatchPayload {
d: Message.GuildStructure;
t: GatewayEvent.MessageCreate;
}
export interface MessageUpdate extends DispatchPayload {
d: Partial<Message.GuildStructure>;
t: GatewayEvent.MessageUpdate;
}
export interface MessageDelete extends DispatchPayload {
d: {
id: string;
channel_id: string;
guild_id?: string;
};
t: GatewayEvent.MessageDelete;
}
export interface MessageDeleteBulk extends DispatchPayload {
d: {
ids: Array<string>;
channel_id: string;
guild_id?: string;
};
t: GatewayEvent.MessageDeleteBulk;
}
export interface MessageReactionAdd extends DispatchPayload {
d: {
user_id: string;
channel_id: string;
message_id: string;
guild_id?: string;
member?: Guild.MemberStructure;
emoji: Partial<Emoji.Structure>;
message_author_id?: string;
};
t: GatewayEvent.MessageReactionAdd;
}
export interface MessageReactionRemove extends DispatchPayload {
d: {
user_id: string;
channel_id: string;
message_id: string;
guild_id?: string;
emoji: Partial<Emoji.Structure>;
};
t: GatewayEvent.MessageReactionRemove;
}
export interface MessageReactionRemoveAll extends DispatchPayload {
d: {
channel_id: string;
message_id: string;
guild_id?: string;
};
t: GatewayEvent.MessageReactionRemoveAll;
}
export interface MessageReactionRemoveEmoji extends DispatchPayload {
d: {
channel_id: string;
guild_id?: string;
message_id: string;
emoji: Partial<Emoji.Structure>;
};
t: GatewayEvent.MessageReactionRemoveEmoji;
}
export interface PresenceUpdate extends DispatchPayload {
d: {
user: Partial<User.Structure> & Pick<User.Structure, "id">;
guild_id: string;
status: Status;
activities: Array<ActivityStructure>;
client_status: {
desktop?: Status;
mobile?: Status;
web?: Status;
};
};
t: GatewayEvent.PresenceUpdate;
}
export interface StageInstanceCreate extends DispatchPayload {
d: StageInstance.Structure;
t: GatewayEvent.StageInstanceCreate;
}
export interface StageInstanceUpdate extends DispatchPayload {
d: StageInstance.Structure;
t: GatewayEvent.StageInstanceUpdate;
}
export interface StageInstanceDelete extends DispatchPayload {
d: StageInstance.Structure;
t: GatewayEvent.StageInstanceDelete;
}
export interface TypingStart extends DispatchPayload {
d: {
channel_id: string;
guild_id?: string;
user_id: string;
timestamp: number;
member?: Guild.MemberStructure;
};
t: GatewayEvent.TypingStart;
}
export interface UserUpdate extends DispatchPayload {
d: User.Structure;
t: GatewayEvent.UserUpdate;
}
export interface VoiceStateUpdate extends DispatchPayload {
d: Voice.StateStructure;
t: GatewayEvent.VoiceStateUpdate;
}
export interface VoiceServerUpdate extends DispatchPayload {
d: {
token: string;
guild_id: string;
endpoint: string | null;
};
t: GatewayEvent.VoiceServerUpdate;
}
export interface WebhookUpdate extends DispatchPayload {
d: {
guild_id: string;
channel_id: string;
};
t: GatewayEvent.WebhookUpdate;
}
export interface MessagePollVoteAdd extends DispatchPayload {
d: Poll.GatewayPayload;
t: GatewayEvent.MessagePollVoteAdd;
}
export interface MessagePollVoteRemove extends DispatchPayload {
d: Poll.GatewayPayload;
t: GatewayEvent.MessagePollVoteRemove;
}
//# sourceMappingURL=gateway-events.d.ts.map