Caching, Fetching, and other things
- Make the gateway fetches guilds from Discord response - Fetch guilds with only ID and client - Make more types - Fix lint errors Co-Authored-By: Y <8479056+yky4589@users.noreply.github.com> Co-Authored-By: khk4912 <30457148+khk4912@users.noreply.github.com> Co-Authored-By: Aki <71239005+AkiaCode@users.noreply.github.com> Co-Authored-By: Choi Minseo <minseo0388@outlook.com>
This commit is contained in:
parent
01d9b82f47
commit
1e8475456a
35 changed files with 667 additions and 358 deletions
46
src/models/cache.ts
Normal file
46
src/models/cache.ts
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
let caches: any = {}
|
||||||
|
|
||||||
|
const get = (cacheName: string, key: string) => {
|
||||||
|
const gotCache: Map<string, any> = caches[cacheName]
|
||||||
|
if (gotCache === undefined || !(gotCache instanceof Map)) {
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
|
||||||
|
const gotMap = gotCache.get(key)
|
||||||
|
return gotMap
|
||||||
|
}
|
||||||
|
|
||||||
|
const set = (cacheName: string, key: string, value: any) => {
|
||||||
|
let gotCache: Map<string, any> = caches[cacheName]
|
||||||
|
if (gotCache === undefined || !(gotCache instanceof Map)) {
|
||||||
|
gotCache = caches[cacheName] = new Map<string, any>()
|
||||||
|
}
|
||||||
|
|
||||||
|
gotCache.set(key, value)
|
||||||
|
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
|
||||||
|
const del = (cacheName: string, key: string) => {
|
||||||
|
const gotCache: Map<string, any> = caches[cacheName]
|
||||||
|
if (gotCache === undefined || !(gotCache instanceof Map)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return gotCache.delete(key)
|
||||||
|
}
|
||||||
|
|
||||||
|
const deleteCache = (cacheName: string) => {
|
||||||
|
const gotCache = caches[cacheName]
|
||||||
|
if (gotCache === undefined) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
delete caches[cacheName]
|
||||||
|
}
|
||||||
|
|
||||||
|
const resetCaches = () => {
|
||||||
|
caches = {}
|
||||||
|
}
|
||||||
|
|
||||||
|
export { get, set, del, deleteCache, resetCaches }
|
|
@ -1,7 +1,7 @@
|
||||||
import { User } from '../structures/user.ts'
|
import { User } from '../structures/user.ts'
|
||||||
import { GatewayIntents } from '../types/gatewayTypes.ts'
|
import { GatewayIntents } from '../types/gatewayTypes.ts'
|
||||||
import { Gateway } from './gateway.ts'
|
import { Gateway } from './gateway.ts'
|
||||||
import { Rest } from "./rest.ts"
|
import { Rest } from './rest.ts'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Discord Client.
|
* Discord Client.
|
||||||
|
@ -11,6 +11,7 @@ export class Client {
|
||||||
rest?: Rest
|
rest?: Rest
|
||||||
user?: User
|
user?: User
|
||||||
ping = 0
|
ping = 0
|
||||||
|
token?: string
|
||||||
|
|
||||||
constructor () {}
|
constructor () {}
|
||||||
|
|
||||||
|
@ -20,6 +21,7 @@ export class Client {
|
||||||
* @param intents Gateway intents in array. This is required.
|
* @param intents Gateway intents in array. This is required.
|
||||||
*/
|
*/
|
||||||
connect (token: string, intents: GatewayIntents[]) {
|
connect (token: string, intents: GatewayIntents[]) {
|
||||||
|
this.token = token
|
||||||
this.gateway = new Gateway(this, token, intents)
|
this.gateway = new Gateway(this, token, intents)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,10 @@ import {
|
||||||
GatewayIntents,
|
GatewayIntents,
|
||||||
GatewayEvents
|
GatewayEvents
|
||||||
} from '../types/gatewayTypes.ts'
|
} from '../types/gatewayTypes.ts'
|
||||||
|
import { GuildPayload } from '../types/guildTypes.ts'
|
||||||
import { User } from '../structures/user.ts'
|
import { User } from '../structures/user.ts'
|
||||||
|
import * as cache from './cache.ts'
|
||||||
|
import { Guild } from '../structures/guild.ts'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles Discord gateway connection.
|
* Handles Discord gateway connection.
|
||||||
|
@ -48,11 +51,11 @@ class Gateway {
|
||||||
this.websocket.onerror = this.onerror.bind(this)
|
this.websocket.onerror = this.onerror.bind(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
onopen () {
|
private onopen () {
|
||||||
this.connected = true
|
this.connected = true
|
||||||
}
|
}
|
||||||
|
|
||||||
onmessage (event: MessageEvent) {
|
private onmessage (event: MessageEvent) {
|
||||||
let data = event.data
|
let data = event.data
|
||||||
if (data instanceof ArrayBuffer) {
|
if (data instanceof ArrayBuffer) {
|
||||||
data = new Uint8Array(data)
|
data = new Uint8Array(data)
|
||||||
|
@ -114,6 +117,7 @@ class Gateway {
|
||||||
break
|
break
|
||||||
|
|
||||||
case GatewayOpcodes.DISPATCH:
|
case GatewayOpcodes.DISPATCH:
|
||||||
|
this.heartbeatServerResponded = true
|
||||||
if (s !== null) {
|
if (s !== null) {
|
||||||
this.sequenceID = s
|
this.sequenceID = s
|
||||||
}
|
}
|
||||||
|
@ -121,6 +125,9 @@ class Gateway {
|
||||||
case GatewayEvents.Ready:
|
case GatewayEvents.Ready:
|
||||||
this.client.user = new User(this.client, d.user)
|
this.client.user = new User(this.client, d.user)
|
||||||
this.sessionID = d.session_id
|
this.sessionID = d.session_id
|
||||||
|
d.guilds.forEach((guild: GuildPayload) => {
|
||||||
|
cache.set('guilds', guild.id, new Guild(this.client, guild))
|
||||||
|
})
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
|
@ -131,17 +138,17 @@ class Gateway {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onclose (event: CloseEvent) {
|
private onclose (event: CloseEvent) {
|
||||||
// TODO: Handle close event codes.
|
// TODO: Handle close event codes.
|
||||||
}
|
}
|
||||||
|
|
||||||
onerror (event: Event | ErrorEvent) {
|
private onerror (event: Event | ErrorEvent) {
|
||||||
const eventError = event as ErrorEvent
|
const eventError = event as ErrorEvent
|
||||||
|
|
||||||
console.log(eventError)
|
console.log(eventError)
|
||||||
}
|
}
|
||||||
|
|
||||||
sendIdentify () {
|
private sendIdentify () {
|
||||||
this.websocket.send(
|
this.websocket.send(
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
op: GatewayOpcodes.IDENTIFY,
|
op: GatewayOpcodes.IDENTIFY,
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { Client } from "./client.ts";
|
import { Client } from './client.ts'
|
||||||
|
|
||||||
class Rest {
|
class Rest {
|
||||||
client: Client
|
client: Client
|
||||||
constructor(client: Client) {
|
constructor (client: Client) {
|
||||||
this.client = client
|
this.client = client
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
26
src/structures/categoryChannel.ts
Normal file
26
src/structures/categoryChannel.ts
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
import { Client } from '../models/client.ts'
|
||||||
|
import { Channel } from './channel.ts'
|
||||||
|
import { GuildPayload, GuildFeatures } from '../types/guildTypes.ts'
|
||||||
|
import {
|
||||||
|
GuildChannelCategoryPayload,
|
||||||
|
Overwrite
|
||||||
|
} from '../types/channelTypes.ts'
|
||||||
|
|
||||||
|
export class categoryChannel extends Channel {
|
||||||
|
guildID: string
|
||||||
|
name: string
|
||||||
|
position: number
|
||||||
|
permissionOverwrites: Overwrite[]
|
||||||
|
nsfw: boolean
|
||||||
|
parentID?: string
|
||||||
|
|
||||||
|
constructor (client: Client, data: GuildChannelCategoryPayload) {
|
||||||
|
super(client, data)
|
||||||
|
this.guildID = data.guild_id
|
||||||
|
this.name = data.name
|
||||||
|
this.position = data.position
|
||||||
|
this.permissionOverwrites = data.permission_overwrites
|
||||||
|
this.nsfw = data.nsfw
|
||||||
|
this.parentID = data.parent_id
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,18 @@
|
||||||
import { Client } from '../models/client.ts'
|
import { Client } from '../models/client.ts'
|
||||||
import { ChannelPayload, ChannelTypes } from '../types/channelTypes.ts'
|
import {
|
||||||
|
ChannelPayload,
|
||||||
|
GuildChannelCategoryPayload,
|
||||||
|
GuildNewsChannelPayload,
|
||||||
|
GuildTextChannelPayload,
|
||||||
|
GuildVoiceChannelPayload,
|
||||||
|
DMChannelPayload,
|
||||||
|
GroupDMChannelPayload,
|
||||||
|
ChannelTypes
|
||||||
|
} from '../types/channelTypes.ts'
|
||||||
import { Base } from './base.ts'
|
import { Base } from './base.ts'
|
||||||
import { PrivateChannel } from './dm.ts'
|
import { DMChannel } from './dm.ts'
|
||||||
|
import { GroupChannel } from './groupChannel.ts'
|
||||||
|
import { VoiceChannel } from './guildVoiceChannel.ts'
|
||||||
import { TextChannel } from './textChannel.ts'
|
import { TextChannel } from './textChannel.ts'
|
||||||
|
|
||||||
export class Channel extends Base {
|
export class Channel extends Base {
|
||||||
|
@ -18,12 +29,29 @@ export class Channel extends Base {
|
||||||
return `<#${this.id}>`
|
return `<#${this.id}>`
|
||||||
}
|
}
|
||||||
|
|
||||||
static from (data: ChannelPayload, client: Client) {
|
static from (
|
||||||
|
data:
|
||||||
|
| GuildChannelCategoryPayload
|
||||||
|
| GuildNewsChannelPayload
|
||||||
|
| GuildTextChannelPayload
|
||||||
|
| GuildVoiceChannelPayload
|
||||||
|
| DMChannelPayload
|
||||||
|
| GroupDMChannelPayload,
|
||||||
|
client: Client
|
||||||
|
) {
|
||||||
switch (data.type) {
|
switch (data.type) {
|
||||||
|
case ChannelTypes.GUILD_CATEGORY:
|
||||||
|
return
|
||||||
|
case ChannelTypes.GUILD_NEWS:
|
||||||
|
return
|
||||||
case ChannelTypes.GUILD_TEXT:
|
case ChannelTypes.GUILD_TEXT:
|
||||||
return new TextChannel(client, data)
|
return new TextChannel(client, data as GuildTextChannelPayload)
|
||||||
|
case ChannelTypes.GUILD_VOICE:
|
||||||
|
return new VoiceChannel(client, data as GuildVoiceChannelPayload)
|
||||||
case ChannelTypes.DM:
|
case ChannelTypes.DM:
|
||||||
return new PrivateChannel(client, data)
|
return new DMChannel(client, data as DMChannelPayload)
|
||||||
|
case ChannelTypes.GROUP_DM:
|
||||||
|
return new GroupChannel(client, data as GroupDMChannelPayload)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
import { Client } from '../models/client.ts'
|
import { Client } from '../models/client.ts'
|
||||||
import { ChannelPayload } from '../types/channelTypes.ts'
|
import { DMChannelPayload } from '../types/channelTypes.ts'
|
||||||
import { Channel } from './channel.ts'
|
import { UserPayload } from '../types/userTypes.ts'
|
||||||
|
import { TextChannel } from './textChannel.ts'
|
||||||
|
|
||||||
export class PrivateChannel extends Channel implements ChannelPayload {
|
export class DMChannel extends TextChannel {
|
||||||
constructor (client: Client, data: ChannelPayload) {
|
recipients: UserPayload[]
|
||||||
|
|
||||||
|
constructor (client: Client, data: DMChannelPayload) {
|
||||||
super(client, data)
|
super(client, data)
|
||||||
|
this.recipients = data.recipients
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ import {
|
||||||
} from '../types/channelTypes.ts'
|
} from '../types/channelTypes.ts'
|
||||||
import { Base } from './base.ts'
|
import { Base } from './base.ts'
|
||||||
|
|
||||||
export class Embed extends Base implements EmbedPayload {
|
export class Embed extends Base {
|
||||||
title?: string
|
title?: string
|
||||||
type?: EmbedTypes
|
type?: EmbedTypes
|
||||||
description?: string
|
description?: string
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
import { Client } from '../models/client.ts'
|
import { Client } from '../models/client.ts'
|
||||||
import { EmojiPayload } from '../types/emojiTypes.ts'
|
import { EmojiPayload } from '../types/emojiTypes.ts'
|
||||||
|
import { UserPayload } from '../types/userTypes.ts'
|
||||||
import { Base } from './base.ts'
|
import { Base } from './base.ts'
|
||||||
import { User } from './user.ts'
|
import { User } from './user.ts'
|
||||||
|
|
||||||
export class Emoji extends Base implements EmojiPayload {
|
export class Emoji extends Base {
|
||||||
id: string
|
id: string
|
||||||
name: string
|
name: string
|
||||||
roles?: []
|
roles?: []
|
||||||
user?: User
|
user?: UserPayload
|
||||||
require_colons?: boolean
|
requireColons?: boolean
|
||||||
managed?: boolean
|
managed?: boolean
|
||||||
animated?: boolean
|
animated?: boolean
|
||||||
available?: boolean
|
available?: boolean
|
||||||
|
@ -25,7 +26,7 @@ export class Emoji extends Base implements EmojiPayload {
|
||||||
this.name = data.name
|
this.name = data.name
|
||||||
this.roles = data.roles
|
this.roles = data.roles
|
||||||
this.user = data.user
|
this.user = data.user
|
||||||
this.require_colons = data.require_colons
|
this.requireColons = data.require_colons
|
||||||
this.managed = data.managed
|
this.managed = data.managed
|
||||||
this.animated = data.animated
|
this.animated = data.animated
|
||||||
this.available = data.available
|
this.available = data.available
|
||||||
|
|
17
src/structures/groupChannel.ts
Normal file
17
src/structures/groupChannel.ts
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
import { Client } from '../models/client.ts'
|
||||||
|
import { GroupDMChannelPayload } from '../types/channelTypes.ts'
|
||||||
|
import { Channel } from './channel.ts'
|
||||||
|
|
||||||
|
export class GroupChannel extends Channel {
|
||||||
|
name: string
|
||||||
|
icon?: string
|
||||||
|
ownerID: string
|
||||||
|
|
||||||
|
constructor (client: Client, data: GroupDMChannelPayload) {
|
||||||
|
super(client, data)
|
||||||
|
|
||||||
|
this.name = data.name
|
||||||
|
this.icon = data.icon
|
||||||
|
this.ownerID = data.owner_id
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,106 +1,129 @@
|
||||||
import { Client } from '../models/client.ts'
|
import { Client } from '../models/client.ts'
|
||||||
|
import { ChannelPayload } from '../types/channelTypes.ts'
|
||||||
import { EmojiPayload } from '../types/emojiTypes.ts'
|
import { EmojiPayload } from '../types/emojiTypes.ts'
|
||||||
import { GuildFeatures, GuildPayload } from '../types/guildTypes.ts'
|
import { GUILD } from '../types/endpoint.ts'
|
||||||
|
import {
|
||||||
|
GuildFeatures,
|
||||||
|
GuildPayload,
|
||||||
|
MemberPayload
|
||||||
|
} from '../types/guildTypes.ts'
|
||||||
import { PresenceUpdatePayload } from '../types/presenceTypes.ts'
|
import { PresenceUpdatePayload } from '../types/presenceTypes.ts'
|
||||||
|
import { RolePayload } from '../types/roleTypes.ts'
|
||||||
import { VoiceStatePayload } from '../types/voiceTypes.ts'
|
import { VoiceStatePayload } from '../types/voiceTypes.ts'
|
||||||
import { Base } from './base.ts'
|
import { Base } from './base.ts'
|
||||||
import { Channel } from './channel.ts'
|
|
||||||
import { Emoji } from './emoji.ts'
|
|
||||||
import { Member } from './member.ts'
|
|
||||||
import { Role } from './role.ts'
|
import { Role } from './role.ts'
|
||||||
|
import * as cache from '../models/cache.ts'
|
||||||
|
|
||||||
export class Guild extends Base implements GuildPayload {
|
export class Guild extends Base {
|
||||||
id: string
|
id: string
|
||||||
name: string
|
name: string
|
||||||
icon: string | undefined
|
icon?: string
|
||||||
icon_hash?: string | undefined
|
iconHash?: string
|
||||||
splash: string | undefined
|
splash?: string
|
||||||
discovery_splash: string | undefined
|
discoverySplash?: string
|
||||||
owner?: boolean | undefined
|
owner?: boolean
|
||||||
owner_id: string
|
ownerID: string
|
||||||
permissions?: string | undefined
|
permissions?: string
|
||||||
region: string
|
region: string
|
||||||
afk_channel_id: string | undefined
|
afkChannelID?: string
|
||||||
afk_timeout: number
|
afkTimeout: number
|
||||||
widget_enabled?: boolean | undefined
|
widgetEnabled?: boolean
|
||||||
widge_channel_id?: string | undefined
|
widgetChannelID?: string
|
||||||
verification_level: string
|
verificationLevel: string
|
||||||
default_message_notifications: string
|
defaultMessageNotifications: string
|
||||||
explicit_content_filter: string
|
explicitContentFilter: string
|
||||||
roles: Role[]
|
roles: RolePayload[]
|
||||||
emojis: Emoji[]
|
emojis: EmojiPayload[]
|
||||||
features: GuildFeatures[]
|
features: GuildFeatures[]
|
||||||
mfa_level: string
|
mfaLevel: string
|
||||||
application_id: string | undefined
|
applicationID?: string
|
||||||
system_channel_id: string | undefined
|
systemChannelID?: string
|
||||||
system_channel_flags: string
|
systemChannelFlags: string
|
||||||
rules_channel_id: string | undefined
|
rulesChannelID?: string
|
||||||
joined_at?: string | undefined
|
joinedAt?: string
|
||||||
large?: boolean | undefined
|
large?: boolean
|
||||||
unavailable: boolean
|
unavailable: boolean
|
||||||
member_count?: number | undefined
|
memberCount?: number
|
||||||
voice_states?: VoiceStatePayload[] | undefined
|
voiceStates?: VoiceStatePayload[]
|
||||||
members?: Member[] | undefined
|
members?: MemberPayload[]
|
||||||
channels?: Channel[] | undefined
|
channels?: ChannelPayload[]
|
||||||
presences?: PresenceUpdatePayload[] | undefined
|
presences?: PresenceUpdatePayload[]
|
||||||
max_presences?: number | undefined
|
maxPresences?: number
|
||||||
max_members?: number | undefined
|
maxMembers?: number
|
||||||
vanity_url_code: string | undefined
|
vanityURLCode?: string
|
||||||
description: string | undefined
|
description?: string
|
||||||
banner: string | undefined
|
banner?: string
|
||||||
premium_tier: number
|
premiumTier: number
|
||||||
premium_subscription_count?: number | undefined
|
premiumSubscriptionCount?: number
|
||||||
preferred_locale: string
|
preferredLocale: string
|
||||||
public_updates_channel_id: string | undefined
|
publicUpdatesChannelID?: string
|
||||||
max_video_channel_users?: number | undefined
|
maxVideoChannelUsers?: number
|
||||||
approximate_number_count?: number | undefined
|
approximateNumberCount?: number
|
||||||
approximate_presence_count?: number | undefined
|
approximatePresenceCount?: number
|
||||||
|
|
||||||
constructor (client: Client, data: GuildPayload) {
|
constructor (client: Client, data: GuildPayload) {
|
||||||
super(client)
|
super(client)
|
||||||
this.id = data.id
|
this.id = data.id
|
||||||
this.name = data.name
|
this.name = data.name
|
||||||
this.icon = data.icon
|
this.icon = data.icon
|
||||||
this.icon_hash = data.icon_hash
|
this.iconHash = data.icon_hash
|
||||||
this.splash = data.splash
|
this.splash = data.splash
|
||||||
this.discovery_splash = data.discovery_splash
|
this.discoverySplash = data.discovery_splash
|
||||||
this.owner = data.owner
|
this.owner = data.owner
|
||||||
this.owner_id = data.owner_id
|
this.ownerID = data.owner_id
|
||||||
this.permissions = data.permissions
|
this.permissions = data.permissions
|
||||||
this.region = data.region
|
this.region = data.region
|
||||||
this.afk_timeout = data.afk_timeout
|
this.afkTimeout = data.afk_timeout
|
||||||
this.afk_channel_id = data.afk_channel_id
|
this.afkChannelID = data.afk_channel_id
|
||||||
this.widget_enabled = data.widget_enabled
|
this.widgetEnabled = data.widget_enabled
|
||||||
this.widge_channel_id = data.widge_channel_id
|
this.widgetChannelID = data.widge_channel_id
|
||||||
this.verification_level = data.verification_level
|
this.verificationLevel = data.verification_level
|
||||||
this.default_message_notifications = data.default_message_notifications
|
this.defaultMessageNotifications = data.default_message_notifications
|
||||||
this.explicit_content_filter = data.explicit_content_filter
|
this.explicitContentFilter = data.explicit_content_filter
|
||||||
this.roles = data.roles
|
this.roles = data.roles
|
||||||
this.emojis = data.emojis
|
this.emojis = data.emojis
|
||||||
this.features = data.features
|
this.features = data.features
|
||||||
this.mfa_level = data.mfa_level
|
this.mfaLevel = data.mfa_level
|
||||||
this.system_channel_id = data.system_channel_id
|
this.systemChannelID = data.system_channel_id
|
||||||
this.system_channel_flags = data.system_channel_flags
|
this.systemChannelFlags = data.system_channel_flags
|
||||||
this.rules_channel_id = data.rules_channel_id
|
this.rulesChannelID = data.rules_channel_id
|
||||||
this.joined_at = data.joined_at
|
this.joinedAt = data.joined_at
|
||||||
this.large = data.large
|
this.large = data.large
|
||||||
this.unavailable = data.unavailable
|
this.unavailable = data.unavailable
|
||||||
this.member_count = data.member_count
|
this.memberCount = data.member_count
|
||||||
this.voice_states = data.voice_states
|
this.voiceStates = data.voice_states
|
||||||
this.members = data.members
|
this.members = data.members
|
||||||
this.channels = data.channels
|
this.channels = data.channels
|
||||||
this.presences = data.presences
|
this.presences = data.presences
|
||||||
this.max_presences = data.max_presences
|
this.maxPresences = data.max_presences
|
||||||
this.max_members = data.max_members
|
this.maxMembers = data.max_members
|
||||||
this.vanity_url_code = data.vanity_url_code
|
this.vanityURLCode = data.vanity_url_code
|
||||||
this.description = data.description
|
this.description = data.description
|
||||||
this.banner = data.banner
|
this.banner = data.banner
|
||||||
this.premium_tier = data.premium_tier
|
this.premiumTier = data.premium_tier
|
||||||
this.premium_subscription_count = data.premium_subscription_count
|
this.premiumSubscriptionCount = data.premium_subscription_count
|
||||||
this.preferred_locale = data.preferred_locale
|
this.preferredLocale = data.preferred_locale
|
||||||
this.public_updates_channel_id = data.public_updates_channel_id
|
this.publicUpdatesChannelID = data.public_updates_channel_id
|
||||||
this.max_video_channel_users = data.max_video_channel_users
|
this.maxVideoChannelUsers = data.max_video_channel_users
|
||||||
this.approximate_number_count = data.approximate_number_count
|
this.approximateNumberCount = data.approximate_number_count
|
||||||
this.approximate_presence_count = data.approximate_presence_count
|
this.approximatePresenceCount = data.approximate_presence_count
|
||||||
|
}
|
||||||
|
|
||||||
|
static async autoInit (client: Client, guildID: string) {
|
||||||
|
const cached = cache.get('guilds', guildID)
|
||||||
|
if (cached === undefined || !(cached instanceof Guild)) {
|
||||||
|
const resp = await fetch(GUILD(guildID), {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bot ${client.token}`
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const guildParsed: GuildPayload = await resp.json()
|
||||||
|
|
||||||
|
const newGuild = new Guild(client, guildParsed)
|
||||||
|
cache.set('guilds', guildID, newGuild)
|
||||||
|
return newGuild
|
||||||
|
} else {
|
||||||
|
return cached
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,22 @@
|
||||||
import { Client } from '../models/client.ts'
|
import { Client } from '../models/client.ts'
|
||||||
import { ChannelPayload } from '../types/channelTypes.ts'
|
import { GuildChannelPayload, Overwrite } from '../types/channelTypes.ts'
|
||||||
import { Channel } from './channel.ts'
|
import { Channel } from './channel.ts'
|
||||||
|
|
||||||
export class GuildChannel extends Channel {
|
export class GuildChannel extends Channel {
|
||||||
constructor (client: Client, data: ChannelPayload) {
|
guildID: string
|
||||||
|
name: string
|
||||||
|
position: number
|
||||||
|
permissionOverwrites: Overwrite[]
|
||||||
|
nsfw: boolean
|
||||||
|
parentID?: string
|
||||||
|
|
||||||
|
constructor (client: Client, data: GuildChannelPayload) {
|
||||||
super(client, data)
|
super(client, data)
|
||||||
|
this.guildID = data.guild_id
|
||||||
|
this.name = data.name
|
||||||
|
this.position = data.position
|
||||||
|
this.permissionOverwrites = data.permission_overwrites
|
||||||
|
this.nsfw = data.nsfw
|
||||||
|
this.parentID = data.parent_id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
19
src/structures/guildTextChannel.ts
Normal file
19
src/structures/guildTextChannel.ts
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
import { Client } from '../models/client.ts'
|
||||||
|
import { GuildChannel } from './guildChannel.ts'
|
||||||
|
import { GuildTextChannelPayload } from '../types/channelTypes.ts'
|
||||||
|
import { User } from './user.ts'
|
||||||
|
|
||||||
|
export class GuildTextChannel extends GuildChannel {
|
||||||
|
rateLimit: number
|
||||||
|
topic?: string
|
||||||
|
|
||||||
|
get mention () {
|
||||||
|
return `<#${this.id}>`
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor (client: Client, data: GuildTextChannelPayload) {
|
||||||
|
super(client, data)
|
||||||
|
this.topic = data.topic
|
||||||
|
this.rateLimit = data.rate_limit_per_user
|
||||||
|
}
|
||||||
|
}
|
28
src/structures/guildVoiceChannel.ts
Normal file
28
src/structures/guildVoiceChannel.ts
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
import { Client } from '../models/client.ts'
|
||||||
|
import { GuildVoiceChannelPayload, Overwrite } from '../types/channelTypes.ts'
|
||||||
|
import { Base } from './base.ts'
|
||||||
|
import { Member } from './member.ts'
|
||||||
|
import { Channel } from './channel.ts'
|
||||||
|
|
||||||
|
export class VoiceChannel extends Channel {
|
||||||
|
bitrate: string
|
||||||
|
userLimit: number
|
||||||
|
guildID: string
|
||||||
|
name: string
|
||||||
|
position: number
|
||||||
|
permissionOverwrites: Overwrite[]
|
||||||
|
nsfw: boolean
|
||||||
|
parentID?: string
|
||||||
|
|
||||||
|
constructor (client: Client, data: GuildVoiceChannelPayload) {
|
||||||
|
super(client, data)
|
||||||
|
this.bitrate = data.bitrate
|
||||||
|
this.userLimit = data.user_limit
|
||||||
|
this.guildID = data.guild_id
|
||||||
|
this.name = data.name
|
||||||
|
this.position = data.position
|
||||||
|
this.permissionOverwrites = data.permission_overwrites
|
||||||
|
this.nsfw = data.nsfw
|
||||||
|
this.parentID = data.parent_id
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,22 +2,24 @@ import { Client } from '../models/client.ts'
|
||||||
import { Channel } from '../structures/channel.ts'
|
import { Channel } from '../structures/channel.ts'
|
||||||
import { Guild } from '../structures/guild.ts'
|
import { Guild } from '../structures/guild.ts'
|
||||||
import { User } from '../structures/user.ts'
|
import { User } from '../structures/user.ts'
|
||||||
|
import { ChannelPayload } from '../types/channelTypes.ts'
|
||||||
|
import { GuildPayload } from '../types/guildTypes.ts'
|
||||||
import { InvitePayload } from '../types/inviteTypes.ts'
|
import { InvitePayload } from '../types/inviteTypes.ts'
|
||||||
|
import { UserPayload } from '../types/userTypes.ts'
|
||||||
import { Base } from './base.ts'
|
import { Base } from './base.ts'
|
||||||
|
|
||||||
export class Invite extends Base implements InvitePayload {
|
export class Invite extends Base {
|
||||||
code: string
|
code: string
|
||||||
guild?: Guild
|
guild?: GuildPayload
|
||||||
channel: Channel
|
channel: ChannelPayload
|
||||||
inviter?: User
|
inviter?: UserPayload
|
||||||
target_user?: User
|
targetUser?: UserPayload
|
||||||
target_user_type?: number
|
targetUserType?: number
|
||||||
approximate_presence_count?: number
|
approximatePresenceCount?: number
|
||||||
approximate_member_count?: number
|
approximateMemberCount?: number
|
||||||
|
|
||||||
|
|
||||||
get link () {
|
get link () {
|
||||||
return `discord.gg/${this.code}`
|
return `https://discord.gg/${this.code}`
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor (client: Client, data: InvitePayload) {
|
constructor (client: Client, data: InvitePayload) {
|
||||||
|
@ -26,9 +28,9 @@ export class Invite extends Base implements InvitePayload {
|
||||||
this.guild = data.guild
|
this.guild = data.guild
|
||||||
this.channel = data.channel
|
this.channel = data.channel
|
||||||
this.inviter = data.inviter
|
this.inviter = data.inviter
|
||||||
this.target_user = data.target_user
|
this.targetUser = data.target_user
|
||||||
this.target_user_type = data.target_user_type
|
this.targetUserType = data.target_user_type
|
||||||
this.approximate_member_count = data.approximate_member_count
|
this.approximateMemberCount = data.approximate_member_count
|
||||||
this.approximate_presence_count = data.approximate_presence_count
|
this.approximatePresenceCount = data.approximate_presence_count
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,18 @@
|
||||||
import { Client } from '../models/client.ts'
|
import { Client } from '../models/client.ts'
|
||||||
import { MemberPayload } from '../types/guildTypes.ts'
|
import { MemberPayload } from '../types/guildTypes.ts'
|
||||||
|
import { RolePayload } from '../types/roleTypes.ts'
|
||||||
import { UserPayload } from '../types/userTypes.ts'
|
import { UserPayload } from '../types/userTypes.ts'
|
||||||
import { Base } from './base.ts'
|
import { Base } from './base.ts'
|
||||||
import { Guild } from './guild.ts'
|
import { Guild } from './guild.ts'
|
||||||
import { Role } from './role.ts'
|
import { Role } from './role.ts'
|
||||||
import { User } from './user.ts'
|
import { User } from './user.ts'
|
||||||
|
|
||||||
export class Member extends Base implements MemberPayload {
|
export class Member extends Base {
|
||||||
user: User
|
user: UserPayload
|
||||||
nick: string | undefined
|
nick?: string
|
||||||
roles: Role[]
|
roles: RolePayload[]
|
||||||
joined_at: string
|
joinedAt: string
|
||||||
premium_since?: string | undefined
|
premiumSince?: string
|
||||||
deaf: boolean
|
deaf: boolean
|
||||||
mute: boolean
|
mute: boolean
|
||||||
|
|
||||||
|
@ -20,8 +21,8 @@ export class Member extends Base implements MemberPayload {
|
||||||
this.user = data.user
|
this.user = data.user
|
||||||
this.nick = data.nick
|
this.nick = data.nick
|
||||||
this.roles = data.roles
|
this.roles = data.roles
|
||||||
this.joined_at = data.joined_at
|
this.joinedAt = data.joined_at
|
||||||
this.premium_since = data.premium_since
|
this.premiumSince = data.premium_since
|
||||||
this.deaf = data.deaf
|
this.deaf = data.deaf
|
||||||
this.mute = data.mute
|
this.mute = data.mute
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,57 +13,59 @@ import { Client } from '../models/client.ts'
|
||||||
import { User } from './user.ts'
|
import { User } from './user.ts'
|
||||||
import { Role } from './role.ts'
|
import { Role } from './role.ts'
|
||||||
import { Embed } from './embed.ts'
|
import { Embed } from './embed.ts'
|
||||||
|
import { UserPayload } from '../types/userTypes.ts'
|
||||||
|
import { RolePayload } from '../types/roleTypes.ts'
|
||||||
|
|
||||||
class Message extends Base implements MessagePayload {
|
class Message extends Base {
|
||||||
id: string
|
id: string
|
||||||
channel_id: string
|
channelID: string
|
||||||
guild_id?: string | undefined
|
guildID?: string
|
||||||
author: User
|
author: UserPayload
|
||||||
member?: any
|
member?: any
|
||||||
content: string
|
content: string
|
||||||
timestamp: string
|
timestamp: string
|
||||||
edited_timestamp: string | undefined
|
editedTimestamp?: string
|
||||||
tts: boolean
|
tts: boolean
|
||||||
mention_everyone: boolean
|
mentionEveryone: boolean
|
||||||
mentions: User[]
|
mentions: UserPayload[]
|
||||||
mention_roles: Role[]
|
mentionRoles: RolePayload[]
|
||||||
mention_channels?: ChannelMention[] | undefined
|
mentionChannels?: ChannelMention[]
|
||||||
attachments: Attachment[]
|
attachments: Attachment[]
|
||||||
embeds: EmbedPayload[]
|
embeds: EmbedPayload[]
|
||||||
reactions?: Reaction[] | undefined
|
reactions?: Reaction[]
|
||||||
nonce?: string | number | undefined
|
nonce?: string | number
|
||||||
pinned: boolean
|
pinned: boolean
|
||||||
webhook_id?: string | undefined
|
webhookId?: string
|
||||||
type: number
|
type: number
|
||||||
activity?: MessageActivity
|
activity?: MessageActivity
|
||||||
application?: MessageApplication
|
application?: MessageApplication
|
||||||
message_reference?: MessageReference
|
messageReference?: MessageReference
|
||||||
flags?: number | undefined
|
flags?: number
|
||||||
|
|
||||||
constructor (client: Client, data: MessagePayload) {
|
constructor (client: Client, data: MessagePayload) {
|
||||||
super(client)
|
super(client)
|
||||||
this.id = data.id
|
this.id = data.id
|
||||||
this.channel_id = data.channel_id
|
this.channelID = data.channel_id
|
||||||
this.guild_id = data.guild_id
|
this.guildID = data.guild_id
|
||||||
this.author = data.author
|
this.author = data.author
|
||||||
this.member = data.member
|
this.member = data.member
|
||||||
this.content = data.content
|
this.content = data.content
|
||||||
this.timestamp = data.timestamp
|
this.timestamp = data.timestamp
|
||||||
this.edited_timestamp = data.edited_timestamp
|
this.editedTimestamp = data.edited_timestamp
|
||||||
this.tts = data.tts
|
this.tts = data.tts
|
||||||
this.mention_everyone = data.mention_everyone
|
this.mentionEveryone = data.mention_everyone
|
||||||
this.mentions = data.mentions
|
this.mentions = data.mentions
|
||||||
this.mention_roles = data.mention_roles
|
this.mentionRoles = data.mention_roles
|
||||||
this.attachments = data.attachments
|
this.attachments = data.attachments
|
||||||
this.embeds = data.embeds
|
this.embeds = data.embeds
|
||||||
this.reactions = data.reactions
|
this.reactions = data.reactions
|
||||||
this.nonce = data.nonce
|
this.nonce = data.nonce
|
||||||
this.pinned = data.pinned
|
this.pinned = data.pinned
|
||||||
this.webhook_id = data.webhook_id
|
this.webhookId = data.webhook_id
|
||||||
this.type = data.type
|
this.type = data.type
|
||||||
this.activity = data.activity
|
this.activity = data.activity
|
||||||
this.application = data.application
|
this.application = data.application
|
||||||
this.message_reference = data.message_reference
|
this.messageReference = data.message_reference
|
||||||
this.flags = data.flags
|
this.flags = data.flags
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { Client } from '../models/client.ts'
|
||||||
import { Base } from './base.ts'
|
import { Base } from './base.ts'
|
||||||
import { RolePayload } from '../types/roleTypes.ts'
|
import { RolePayload } from '../types/roleTypes.ts'
|
||||||
|
|
||||||
export class Role extends Base implements RolePayload {
|
export class Role extends Base {
|
||||||
id: string
|
id: string
|
||||||
name: string
|
name: string
|
||||||
color: number
|
color: number
|
||||||
|
|
|
@ -1,36 +1,16 @@
|
||||||
import { Client } from '../models/client.ts'
|
import { Client } from '../models/client.ts'
|
||||||
import { GuildChannel } from './guildChannel.ts'
|
import { TextChannelPayload } from '../types/channelTypes.ts'
|
||||||
import { ChannelPayload } from '../types/channelTypes.ts'
|
import { Channel } from './channel.ts'
|
||||||
import { User } from './user.ts'
|
import { Embed } from './embed.ts'
|
||||||
|
export class TextChannel extends Channel {
|
||||||
|
lastMessageId?: string
|
||||||
|
lastPinTimestamp?: string
|
||||||
|
|
||||||
export class TextChannel extends GuildChannel implements ChannelPayload {
|
constructor (client: Client, data: TextChannelPayload) {
|
||||||
id: string
|
|
||||||
type: number
|
|
||||||
guild_id?: string | undefined
|
|
||||||
position?: number | undefined
|
|
||||||
approximate_member_count?: any
|
|
||||||
name?: string | undefined
|
|
||||||
topic?: string | undefined
|
|
||||||
nsfw?: boolean | undefined
|
|
||||||
last_message_id?: string | undefined
|
|
||||||
bitrate?: number | undefined
|
|
||||||
user_limit?: number | undefined
|
|
||||||
rate_limit_per_user?: number | undefined
|
|
||||||
recipients?: User
|
|
||||||
icon?: string | undefined
|
|
||||||
owner_id?: string | undefined
|
|
||||||
application_id?: string | undefined
|
|
||||||
parent_id?: string | undefined
|
|
||||||
last_pin_timestamp?: string | undefined
|
|
||||||
|
|
||||||
|
|
||||||
get mention () {
|
|
||||||
return `<#${this.id}>`
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor (client: Client, data: ChannelPayload) {
|
|
||||||
super(client, data)
|
super(client, data)
|
||||||
this.id = data.id
|
this.lastMessageId = data.last_message_id
|
||||||
this.type = data.type
|
this.lastPinTimestamp = data.last_pin_timestamp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
send (content: string | Embed, option?: {}) {} //TODO: send function
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,20 +2,20 @@ import { Client } from '../models/client.ts'
|
||||||
import { UserPayload } from '../types/userTypes.ts'
|
import { UserPayload } from '../types/userTypes.ts'
|
||||||
import { Base } from './base.ts'
|
import { Base } from './base.ts'
|
||||||
|
|
||||||
export class User extends Base implements UserPayload {
|
export class User extends Base {
|
||||||
id: string
|
id: string
|
||||||
username: string
|
username: string
|
||||||
discriminator: string
|
discriminator: string
|
||||||
avatar?: string
|
avatar?: string
|
||||||
bot?: boolean
|
bot?: boolean
|
||||||
system?: boolean
|
system?: boolean
|
||||||
mfa_enabled?: boolean
|
mfaEnabled?: boolean
|
||||||
locale?: string
|
locale?: string
|
||||||
verified?: boolean
|
verified?: boolean
|
||||||
email?: string
|
email?: string
|
||||||
flags?: number
|
flags?: number
|
||||||
premium_type?: 0 | 1 | 2
|
premiumType?: 0 | 1 | 2
|
||||||
public_flags?: number
|
publicFlags?: number
|
||||||
|
|
||||||
get nickMention () {
|
get nickMention () {
|
||||||
return `<@!${this.id}>`
|
return `<@!${this.id}>`
|
||||||
|
@ -33,12 +33,12 @@ export class User extends Base implements UserPayload {
|
||||||
this.avatar = data.avatar
|
this.avatar = data.avatar
|
||||||
this.bot = data.bot
|
this.bot = data.bot
|
||||||
this.system = data.system
|
this.system = data.system
|
||||||
this.mfa_enabled = data.mfa_enabled
|
this.mfaEnabled = data.mfa_enabled
|
||||||
this.locale = data.locale
|
this.locale = data.locale
|
||||||
this.verified = data.verified
|
this.verified = data.verified
|
||||||
this.email = data.email
|
this.email = data.email
|
||||||
this.flags = data.flags
|
this.flags = data.flags
|
||||||
this.premium_type = data.premium_type
|
this.premiumType = data.premium_type
|
||||||
this.public_flags = data.public_flags
|
this.publicFlags = data.public_flags
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,33 +1,34 @@
|
||||||
import { Client } from "../models/client.ts"
|
import { Client } from '../models/client.ts'
|
||||||
import { VoiceStatePayload } from "../types/voiceTypes.ts"
|
import { MemberPayload } from '../types/guildTypes.ts'
|
||||||
import { Base } from "./base.ts"
|
import { VoiceStatePayload } from '../types/voiceTypes.ts'
|
||||||
import { Member } from "./member.ts"
|
import { Base } from './base.ts'
|
||||||
|
import { Member } from './member.ts'
|
||||||
|
|
||||||
export class VoiceState extends Base implements VoiceStatePayload {
|
export class VoiceState extends Base {
|
||||||
guild_id?: string
|
guildID?: string
|
||||||
channel_id: string | undefined
|
channelID?: string
|
||||||
user_id: string
|
userID: string
|
||||||
member?: Member
|
member?: MemberPayload
|
||||||
session_id: string
|
sessionID: string
|
||||||
deaf: boolean
|
deaf: boolean
|
||||||
mute: boolean
|
mute: boolean
|
||||||
self_deaf: boolean
|
selfDeaf: boolean
|
||||||
self_mute: boolean
|
selfMute: boolean
|
||||||
self_stream?: boolean
|
selfStream?: boolean
|
||||||
self_video: boolean
|
selfVideo: boolean
|
||||||
suppress: boolean
|
suppress: boolean
|
||||||
|
|
||||||
constructor (client: Client, data: VoiceStatePayload) {
|
constructor (client: Client, data: VoiceStatePayload) {
|
||||||
super(client)
|
super(client)
|
||||||
this.channel_id = data.channel_id
|
this.channelID = data.channel_id
|
||||||
this.session_id = data.session_id
|
this.sessionID = data.session_id
|
||||||
this.user_id = data.user_id
|
this.userID = data.user_id
|
||||||
this.deaf = data.deaf
|
this.deaf = data.deaf
|
||||||
this.mute = data.mute
|
this.mute = data.mute
|
||||||
this.self_deaf = data.self_deaf
|
this.selfDeaf = data.self_deaf
|
||||||
this.self_mute = data.self_mute
|
this.selfMute = data.self_mute
|
||||||
this.self_stream = data.self_stream
|
this.selfStream = data.self_stream
|
||||||
this.self_video = data.self_video
|
this.selfVideo = data.self_video
|
||||||
this.suppress = data.suppress
|
this.suppress = data.suppress
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,23 +1,23 @@
|
||||||
import { Client } from "../models/client.ts"
|
import { Client } from '../models/client.ts'
|
||||||
import { WebhookPayload } from "../types/webhookTypes.ts"
|
import { UserPayload } from '../types/userTypes.ts'
|
||||||
import { Base } from "./base.ts"
|
import { WebhookPayload } from '../types/webhookTypes.ts'
|
||||||
import { User } from "./user.ts"
|
import { Base } from './base.ts'
|
||||||
|
|
||||||
export class VoiceState extends Base implements WebhookPayload {
|
export class Webhook extends Base {
|
||||||
id: string
|
id: string
|
||||||
type: 1 | 2
|
type: 1 | 2
|
||||||
guild_id?: string
|
guildID?: string
|
||||||
channel_id: string
|
channelID: string
|
||||||
user?: User
|
user?: UserPayload
|
||||||
name: string | undefined
|
name?: string
|
||||||
avatar: string | undefined
|
avatar?: string
|
||||||
token?: string
|
token?: string
|
||||||
application_id: string | undefined
|
applicationID?: string
|
||||||
|
|
||||||
constructor (client: Client, data: WebhookPayload) {
|
constructor (client: Client, data: WebhookPayload) {
|
||||||
super(client)
|
super(client)
|
||||||
this.id = data.id
|
this.id = data.id
|
||||||
this.type = data.type
|
this.type = data.type
|
||||||
this.channel_id = data.channel_id
|
this.channelID = data.channel_id
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,7 +1,15 @@
|
||||||
import { Client } from '../models/client.ts'
|
import { Client } from '../models/client.ts'
|
||||||
|
import { Guild } from '../structures/guild.ts'
|
||||||
import { GatewayIntents } from '../types/gatewayTypes.ts'
|
import { GatewayIntents } from '../types/gatewayTypes.ts'
|
||||||
import { TOKEN } from './config.ts'
|
import { TOKEN } from './config.ts'
|
||||||
|
|
||||||
const bot = new Client()
|
const bot = new Client()
|
||||||
|
|
||||||
bot.connect(TOKEN, [GatewayIntents.GUILD_MESSAGES])
|
bot.connect(TOKEN, [GatewayIntents.GUILD_MESSAGES])
|
||||||
|
|
||||||
|
Guild.autoInit(bot, '').then(a => console.log(a))
|
||||||
|
|
||||||
|
setTimeout(async () => {
|
||||||
|
const result = Guild.autoInit(bot, '')
|
||||||
|
console.log(result)
|
||||||
|
}, 30000)
|
||||||
|
|
|
@ -1,29 +1,59 @@
|
||||||
import { Member } from '../structures/member.ts'
|
|
||||||
import { Role } from '../structures/role.ts'
|
|
||||||
import { User } from '../structures/user.ts'
|
|
||||||
import { EmojiPayload } from './emojiTypes.ts'
|
import { EmojiPayload } from './emojiTypes.ts'
|
||||||
|
import { MemberPayload } from './guildTypes.ts'
|
||||||
|
import { RolePayload } from './roleTypes.ts'
|
||||||
|
import { UserPayload } from './userTypes.ts'
|
||||||
|
|
||||||
interface ChannelPayload {
|
interface ChannelPayload {
|
||||||
id: string
|
id: string
|
||||||
type: ChannelTypes
|
type: ChannelTypes
|
||||||
guild_id?: string
|
}
|
||||||
position?: number
|
|
||||||
approximate_member_count?: Overwrite
|
interface TextChannelPayload extends ChannelPayload {
|
||||||
name?: string
|
|
||||||
topic?: string
|
|
||||||
nsfw?: boolean
|
|
||||||
last_message_id?: string
|
last_message_id?: string
|
||||||
bitrate?: number
|
|
||||||
user_limit?: number
|
|
||||||
rate_limit_per_user?: number
|
|
||||||
recipients?: User
|
|
||||||
icon?: string
|
|
||||||
owner_id?: string
|
|
||||||
application_id?: string
|
|
||||||
parent_id?: string
|
|
||||||
last_pin_timestamp?: string
|
last_pin_timestamp?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface GuildChannelPayload extends ChannelPayload {
|
||||||
|
guild_id: string
|
||||||
|
name: string
|
||||||
|
position: number
|
||||||
|
permission_overwrites: Overwrite[]
|
||||||
|
nsfw: boolean
|
||||||
|
parent_id?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
interface GuildTextChannelPayload
|
||||||
|
extends TextChannelPayload,
|
||||||
|
GuildChannelPayload {
|
||||||
|
rate_limit_per_user: number
|
||||||
|
topic?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
interface GuildNewsChannelPayload
|
||||||
|
extends TextChannelPayload,
|
||||||
|
GuildChannelPayload {
|
||||||
|
topic?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
interface GuildVoiceChannelPayload extends GuildChannelPayload {
|
||||||
|
bitrate: string
|
||||||
|
user_limit: number
|
||||||
|
}
|
||||||
|
|
||||||
|
interface DMChannelPayload extends TextChannelPayload {
|
||||||
|
recipients: UserPayload[]
|
||||||
|
}
|
||||||
|
|
||||||
|
interface GroupDMChannelPayload extends DMChannelPayload {
|
||||||
|
name: string
|
||||||
|
icon?: string
|
||||||
|
owner_id: string
|
||||||
|
}
|
||||||
|
|
||||||
|
interface GuildChannelCategoryPayload
|
||||||
|
extends ChannelPayload,
|
||||||
|
GuildChannelPayload {}
|
||||||
|
|
||||||
interface Overwrite {
|
interface Overwrite {
|
||||||
id: string
|
id: string
|
||||||
type: number
|
type: number
|
||||||
|
@ -45,15 +75,15 @@ interface MessagePayload {
|
||||||
id: string
|
id: string
|
||||||
channel_id: string
|
channel_id: string
|
||||||
guild_id?: string
|
guild_id?: string
|
||||||
author: User
|
author: UserPayload
|
||||||
member?: Member
|
member?: MemberPayload
|
||||||
content: string
|
content: string
|
||||||
timestamp: string
|
timestamp: string
|
||||||
edited_timestamp: string | undefined
|
edited_timestamp?: string
|
||||||
tts: boolean
|
tts: boolean
|
||||||
mention_everyone: boolean
|
mention_everyone: boolean
|
||||||
mentions: User[]
|
mentions: UserPayload[]
|
||||||
mention_roles: Role[]
|
mention_roles: RolePayload[]
|
||||||
mention_channels?: ChannelMention[]
|
mention_channels?: ChannelMention[]
|
||||||
attachments: Attachment[]
|
attachments: Attachment[]
|
||||||
embeds: EmbedPayload[]
|
embeds: EmbedPayload[]
|
||||||
|
@ -210,12 +240,6 @@ interface FollowedChannel {
|
||||||
webhook_id: string
|
webhook_id: string
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Reaction {
|
|
||||||
count: number
|
|
||||||
me: boolean
|
|
||||||
emoji: EmojiPayload
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Overwrite {
|
interface Overwrite {
|
||||||
id: string
|
id: string
|
||||||
type: number
|
type: number
|
||||||
|
@ -231,6 +255,15 @@ interface ChannelMention {
|
||||||
|
|
||||||
export {
|
export {
|
||||||
ChannelPayload,
|
ChannelPayload,
|
||||||
|
TextChannelPayload,
|
||||||
|
GuildChannelPayload,
|
||||||
|
GuildNewsChannelPayload,
|
||||||
|
GuildTextChannelPayload,
|
||||||
|
GuildVoiceChannelPayload,
|
||||||
|
GuildChannelCategoryPayload,
|
||||||
|
DMChannelPayload,
|
||||||
|
GroupDMChannelPayload,
|
||||||
|
Overwrite,
|
||||||
ChannelTypes,
|
ChannelTypes,
|
||||||
ChannelMention,
|
ChannelMention,
|
||||||
Attachment,
|
Attachment,
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import { User } from '../structures/user.ts'
|
import { UserPayload } from './userTypes.ts'
|
||||||
|
|
||||||
export interface EmojiPayload {
|
export interface EmojiPayload {
|
||||||
id: string
|
id: string
|
||||||
name: string
|
name: string
|
||||||
roles?: []
|
roles?: []
|
||||||
user?: User
|
user?: UserPayload
|
||||||
require_colons?: boolean
|
require_colons?: boolean
|
||||||
managed?: boolean
|
managed?: boolean
|
||||||
animated?: boolean
|
animated?: boolean
|
||||||
|
|
|
@ -7,7 +7,7 @@ import {
|
||||||
} from '../consts/urlsAndVersions.ts'
|
} from '../consts/urlsAndVersions.ts'
|
||||||
|
|
||||||
//Guild Endpoints
|
//Guild Endpoints
|
||||||
const GUILDS = `${DISCORD_API_URL}/v${DISCORD_API_VERSION}/guilds`
|
const GUILDS = () => `${DISCORD_API_URL}/v${DISCORD_API_VERSION}/guilds`
|
||||||
const GUILD = (guildID: string) =>
|
const GUILD = (guildID: string) =>
|
||||||
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/guilds/${guildID}`
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/guilds/${guildID}`
|
||||||
const GUILD_AUDIT_LOGS = (guildID: string) =>
|
const GUILD_AUDIT_LOGS = (guildID: string) =>
|
||||||
|
@ -60,10 +60,10 @@ const CHANNEL = (channelID: string) =>
|
||||||
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/channels/${channelID}`
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/channels/${channelID}`
|
||||||
const CHANNELS = (channelID: string) =>
|
const CHANNELS = (channelID: string) =>
|
||||||
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/guilds/${channelID}/channels`
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/guilds/${channelID}/channels`
|
||||||
const CHANNEL_MESSAGES = (channelID: string) =>
|
|
||||||
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/channels/${channelID}/messages`
|
|
||||||
const CHANNEL_MESSAGE = (channelID: string, messageID: string) =>
|
const CHANNEL_MESSAGE = (channelID: string, messageID: string) =>
|
||||||
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/channels/${channelID}/messages/${messageID}`
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/channels/${channelID}/messages/${messageID}`
|
||||||
|
const CHANNEL_MESSAGES = (channelID: string) =>
|
||||||
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/channels/${channelID}/messages`
|
||||||
const CHANNEL_CROSSPOST = (channelID: string, messageID: string) =>
|
const CHANNEL_CROSSPOST = (channelID: string, messageID: string) =>
|
||||||
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/channels/${channelID}/messages/${messageID}/crosspost`
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/channels/${channelID}/messages/${messageID}/crosspost`
|
||||||
const MESSAGE_REACTIONS = (channelID: string, messageID: string) =>
|
const MESSAGE_REACTIONS = (channelID: string, messageID: string) =>
|
||||||
|
@ -105,10 +105,14 @@ const GROUP_RECIPIENT = (channelID: string, userID: string) =>
|
||||||
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/channels/${channelID}/recipient/${userID}`
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/channels/${channelID}/recipient/${userID}`
|
||||||
|
|
||||||
//User Endpoints
|
//User Endpoints
|
||||||
const CURRENT_USER = `${DISCORD_API_URL}/v${DISCORD_API_VERSION}/users/@me`
|
const CURRENT_USER = () =>
|
||||||
const CURRENT_USER_GUILDS = `${DISCORD_API_URL}/v${DISCORD_API_VERSION}/users/@me/guilds`
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/users/@me`
|
||||||
const USER_DM = `${DISCORD_API_URL}/v${DISCORD_API_VERSION}/users/@me/channels`
|
const CURRENT_USER_GUILDS = () =>
|
||||||
const USER_CONNECTIONS = `${DISCORD_API_URL}/v${DISCORD_API_VERSION}/users/@me/connections`
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/users/@me/guilds`
|
||||||
|
const USER_DM = () =>
|
||||||
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/users/@me/channels`
|
||||||
|
const USER_CONNECTIONS = () =>
|
||||||
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/users/@me/connections`
|
||||||
const LEAVE_GUILD = (guildID: string) =>
|
const LEAVE_GUILD = (guildID: string) =>
|
||||||
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/users/@me/guilds/${guildID}`
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/users/@me/guilds/${guildID}`
|
||||||
const USER = (userID: string) =>
|
const USER = (userID: string) =>
|
||||||
|
@ -129,12 +133,12 @@ const GITHUB_WEBHOOK = (webhookID: string, webhookTOKEN: string) =>
|
||||||
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/webhooks/${webhookID}/${webhookTOKEN}/github`
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/webhooks/${webhookID}/${webhookTOKEN}/github`
|
||||||
|
|
||||||
//Gateway Endpoints
|
//Gateway Endpoints
|
||||||
const GATEWAY = `${DISCORD_API_URL}/v${DISCORD_API_VERSION}/gateway`
|
const GATEWAY = () => `${DISCORD_API_URL}/v${DISCORD_API_VERSION}/gateway`
|
||||||
const GATEWAY_BOT = `${DISCORD_API_URL}/v${DISCORD_API_VERSION}/gateway/bot`
|
const GATEWAY_BOT = () =>
|
||||||
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/gateway/bot`
|
||||||
|
|
||||||
//CDN Endpoints
|
//CDN Endpoints
|
||||||
const CUSTOM_EMOJI = (emojiID: string) =>
|
const CUSTOM_EMOJI = (emojiID: string) => `${DISCORD_CDN_URL}/emojis/${emojiID}`
|
||||||
`${DISCORD_CDN_URL}/emojis/${emojiID}`
|
|
||||||
const GUILD_ICON = (guildID: string, iconID: number) =>
|
const GUILD_ICON = (guildID: string, iconID: number) =>
|
||||||
`${DISCORD_CDN_URL}/icons/${guildID}/${iconID}`
|
`${DISCORD_CDN_URL}/icons/${guildID}/${iconID}`
|
||||||
const GUILD_SPLASH = (guildID: string, guildSPLASH: string) =>
|
const GUILD_SPLASH = (guildID: string, guildSPLASH: string) =>
|
||||||
|
@ -142,8 +146,7 @@ const GUILD_SPLASH = (guildID: string, guildSPLASH: string) =>
|
||||||
const GUILD_DISCOVERY_SPLASH = (
|
const GUILD_DISCOVERY_SPLASH = (
|
||||||
guildID: string,
|
guildID: string,
|
||||||
guildDiscoverySplash: string
|
guildDiscoverySplash: string
|
||||||
) =>
|
) => `${DISCORD_CDN_URL}/discovery-splashes/${guildID}/${guildDiscoverySplash}`
|
||||||
`${DISCORD_CDN_URL}/discovery-splashes/${guildID}/${guildDiscoverySplash}`
|
|
||||||
const GUILD_BANNER = (guildID: string, guildBANNER: string) =>
|
const GUILD_BANNER = (guildID: string, guildBANNER: string) =>
|
||||||
`${DISCORD_CDN_URL}/banners/${guildID}/${guildBANNER}`
|
`${DISCORD_CDN_URL}/banners/${guildID}/${guildBANNER}`
|
||||||
const DEFAULT_USER_AVATAR = (iconID: string) =>
|
const DEFAULT_USER_AVATAR = (iconID: string) =>
|
||||||
|
@ -178,3 +181,75 @@ const INVITE = (inviteCODE: string) =>
|
||||||
//Voice Endpoint
|
//Voice Endpoint
|
||||||
const VOICE_REGIONS = (guildID: string) =>
|
const VOICE_REGIONS = (guildID: string) =>
|
||||||
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/guilds/${guildID}/regions`
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/guilds/${guildID}/regions`
|
||||||
|
|
||||||
|
export {
|
||||||
|
GUILDS,
|
||||||
|
GUILD,
|
||||||
|
GUILD_AUDIT_LOGS,
|
||||||
|
GUILD_WIDGET,
|
||||||
|
GUILD_EMOJI,
|
||||||
|
GUILD_ROLE,
|
||||||
|
GUILD_ROLES,
|
||||||
|
GUILD_INTEGRATION,
|
||||||
|
GUILD_INTEGRATIONS,
|
||||||
|
GUILD_INTEGARTION_SYNC,
|
||||||
|
GUILD_BAN,
|
||||||
|
GUILD_BANS,
|
||||||
|
GUILD_CHANNEL,
|
||||||
|
GUILD_CHANNELS,
|
||||||
|
GUILD_MEMBER,
|
||||||
|
GUILD_MEMBERS,
|
||||||
|
GUILD_MEMBER_ROLE,
|
||||||
|
GUILD_INVITES,
|
||||||
|
GUILD_LEAVE,
|
||||||
|
GUILD_PRUNE,
|
||||||
|
GUILD_VANITY_URL,
|
||||||
|
GUILD_NICK,
|
||||||
|
GUILD_PREVIEW,
|
||||||
|
CHANNEL,
|
||||||
|
CHANNELS,
|
||||||
|
CHANNEL_MESSAGE,
|
||||||
|
CHANNEL_MESSAGES,
|
||||||
|
CHANNEL_CROSSPOST,
|
||||||
|
MESSAGE_REACTIONS,
|
||||||
|
MESSAGE_REACTION,
|
||||||
|
MESSAGE_REACTION_ME,
|
||||||
|
MESSAGE_REACTION_USER,
|
||||||
|
CHANNEL_BULK_DELETE,
|
||||||
|
CHANNEL_FOLLOW,
|
||||||
|
CHANNEL_INVITES,
|
||||||
|
CHANNEL_PIN,
|
||||||
|
CHANNEL_PINS,
|
||||||
|
CHANNEL_PERMISSION,
|
||||||
|
CHANNEL_TYPING,
|
||||||
|
GROUP_RECIPIENT,
|
||||||
|
CURRENT_USER,
|
||||||
|
CURRENT_USER_GUILDS,
|
||||||
|
USER_DM,
|
||||||
|
USER_CONNECTIONS,
|
||||||
|
LEAVE_GUILD,
|
||||||
|
USER,
|
||||||
|
CHANNEL_WEBHOOKS,
|
||||||
|
GUILD_WEBHOOK,
|
||||||
|
WEBHOOK,
|
||||||
|
WEBHOOK_WITH_TOKEN,
|
||||||
|
SLACK_WEBHOOK,
|
||||||
|
GITHUB_WEBHOOK,
|
||||||
|
GATEWAY,
|
||||||
|
GATEWAY_BOT,
|
||||||
|
CUSTOM_EMOJI,
|
||||||
|
GUILD_ICON,
|
||||||
|
GUILD_SPLASH,
|
||||||
|
GUILD_DISCOVERY_SPLASH,
|
||||||
|
GUILD_BANNER,
|
||||||
|
DEFAULT_USER_AVATAR,
|
||||||
|
USER_AVATAR,
|
||||||
|
APPLICATION_ASSET,
|
||||||
|
ACHIEVEMENT_ICON,
|
||||||
|
TEAM_ICON,
|
||||||
|
EMOJI,
|
||||||
|
EMOJIS,
|
||||||
|
TEMPLATE,
|
||||||
|
INVITE,
|
||||||
|
VOICE_REGIONS
|
||||||
|
}
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
// https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway
|
// https://discord.com/developers/docs/topics/opcodes-and-status-codes#gateway
|
||||||
// https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-events
|
// https://discord.com/developers/docs/topics/gateway#commands-and-events-gateway-events
|
||||||
import { Emoji } from '../structures/emoji.ts'
|
import { EmojiPayload } from './emojiTypes.ts'
|
||||||
import { Member } from '../structures/member.ts'
|
|
||||||
import { Role } from '../structures/role.ts'
|
|
||||||
import { User } from '../structures/user.ts'
|
|
||||||
import { MemberPayload } from './guildTypes.ts'
|
import { MemberPayload } from './guildTypes.ts'
|
||||||
import { ActivityPayload, PresenceUpdatePayload } from './presenceTypes.ts'
|
import { ActivityPayload, PresenceUpdatePayload } from './presenceTypes.ts'
|
||||||
|
import { RolePayload } from './roleTypes.ts'
|
||||||
|
import { UserPayload } from './userTypes.ts'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gateway OPcodes from Discord docs.
|
* Gateway OPcodes from Discord docs.
|
||||||
|
@ -124,7 +123,7 @@ enum UpdateStatus {
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IdentityConnection {
|
interface IdentityConnection {
|
||||||
$os: 'linux'
|
$os: 'darwin' | 'windows' | 'linux' | 'custom os'
|
||||||
$browser: 'discord.deno'
|
$browser: 'discord.deno'
|
||||||
$device: 'discord.deno'
|
$device: 'discord.deno'
|
||||||
}
|
}
|
||||||
|
@ -139,7 +138,7 @@ interface GuildRequestMembers {
|
||||||
guild_id: string | string[]
|
guild_id: string | string[]
|
||||||
query?: string
|
query?: string
|
||||||
limit: number
|
limit: number
|
||||||
presences?: boolean //do you have any problems? tell me! i am so handsome
|
presences?: boolean
|
||||||
user_ids?: string | string[]
|
user_ids?: string | string[]
|
||||||
nonce?: string
|
nonce?: string
|
||||||
}
|
}
|
||||||
|
@ -164,7 +163,7 @@ interface Hello {
|
||||||
|
|
||||||
interface ReadyEvent {
|
interface ReadyEvent {
|
||||||
v: number
|
v: number
|
||||||
user: User
|
user: UserPayload
|
||||||
privateChannels: []
|
privateChannels: []
|
||||||
guilds: []
|
guilds: []
|
||||||
session_id: string
|
session_id: string
|
||||||
|
@ -179,12 +178,12 @@ interface ChannelPinsUpdate {
|
||||||
|
|
||||||
interface GuildBanAdd {
|
interface GuildBanAdd {
|
||||||
guild_id: string
|
guild_id: string
|
||||||
user: User
|
user: UserPayload
|
||||||
}
|
}
|
||||||
|
|
||||||
interface GuildBanRemove {
|
interface GuildBanRemove {
|
||||||
guild_id: string
|
guild_id: string
|
||||||
user: User
|
user: UserPayload
|
||||||
}
|
}
|
||||||
|
|
||||||
interface GuildEmojiUpdate {
|
interface GuildEmojiUpdate {
|
||||||
|
@ -202,12 +201,12 @@ interface GuildMemberAddExtra {
|
||||||
|
|
||||||
interface GuildMemberRemove {
|
interface GuildMemberRemove {
|
||||||
guild_id: string
|
guild_id: string
|
||||||
user: User
|
user: UserPayload
|
||||||
}
|
}
|
||||||
interface GuildMemberUpdate {
|
interface GuildMemberUpdate {
|
||||||
guild_id: string
|
guild_id: string
|
||||||
roles: string[]
|
roles: string[]
|
||||||
user: User
|
user: UserPayload
|
||||||
nick?: string | undefined
|
nick?: string | undefined
|
||||||
joined_at: string
|
joined_at: string
|
||||||
premium_since?: string | undefined
|
premium_since?: string | undefined
|
||||||
|
@ -225,12 +224,12 @@ interface GuildMemberChunk {
|
||||||
|
|
||||||
interface GuildRoleCreate {
|
interface GuildRoleCreate {
|
||||||
guild_id: string
|
guild_id: string
|
||||||
role: Role
|
role: RolePayload
|
||||||
}
|
}
|
||||||
|
|
||||||
interface GuildRoleUpdate {
|
interface GuildRoleUpdate {
|
||||||
guild_id: string
|
guild_id: string
|
||||||
role: Role
|
role: RolePayload
|
||||||
}
|
}
|
||||||
|
|
||||||
interface GuildRoleDelete {
|
interface GuildRoleDelete {
|
||||||
|
@ -243,10 +242,10 @@ interface InviteCreate {
|
||||||
code: string
|
code: string
|
||||||
created_at: string
|
created_at: string
|
||||||
guild_id?: string
|
guild_id?: string
|
||||||
inviter?: User
|
inviter?: UserPayload
|
||||||
max_age: number
|
max_age: number
|
||||||
max_uses: number
|
max_uses: number
|
||||||
target_user?: User
|
target_user?: UserPayload
|
||||||
target_user_type?: number
|
target_user_type?: number
|
||||||
temporary: boolean
|
temporary: boolean
|
||||||
uses: number
|
uses: number
|
||||||
|
@ -275,7 +274,7 @@ interface MessageReactionAdd {
|
||||||
channel_id: string
|
channel_id: string
|
||||||
message_id: string
|
message_id: string
|
||||||
guild_id?: string
|
guild_id?: string
|
||||||
emoji: Emoji
|
emoji: EmojiPayload
|
||||||
}
|
}
|
||||||
|
|
||||||
interface MessageReactionRemove {
|
interface MessageReactionRemove {
|
||||||
|
@ -283,25 +282,25 @@ interface MessageReactionRemove {
|
||||||
channel_id: string
|
channel_id: string
|
||||||
message_id: string
|
message_id: string
|
||||||
guild_id?: string
|
guild_id?: string
|
||||||
emoji: Emoji
|
emoji: EmojiPayload
|
||||||
}
|
}
|
||||||
|
|
||||||
interface MessageReactionRemoveAll {
|
interface MessageReactionRemoveAll {
|
||||||
channel_id: string
|
channel_id: string
|
||||||
guild_id?: string
|
guild_id?: string
|
||||||
message_id: string
|
message_id: string
|
||||||
emoji: Emoji
|
emoji: EmojiPayload
|
||||||
}
|
}
|
||||||
|
|
||||||
interface MessageReactionRemove {
|
interface MessageReactionRemove {
|
||||||
channel_id: string
|
channel_id: string
|
||||||
guild_id?: string
|
guild_id?: string
|
||||||
message_id: string
|
message_id: string
|
||||||
emoji: Emoji
|
emoji: EmojiPayload
|
||||||
}
|
}
|
||||||
|
|
||||||
interface PresenceUpdate {
|
interface PresenceUpdate {
|
||||||
user: User
|
user: UserPayload
|
||||||
guild_id: string
|
guild_id: string
|
||||||
status: string
|
status: string
|
||||||
activities: ActivityPayload[]
|
activities: ActivityPayload[]
|
||||||
|
@ -323,7 +322,7 @@ interface Activity {
|
||||||
application_id: string
|
application_id: string
|
||||||
details?: string | undefined
|
details?: string | undefined
|
||||||
state?: string | undefined
|
state?: string | undefined
|
||||||
emoji?: Emoji | undefined
|
emoji?: EmojiPayload | undefined
|
||||||
party?: ActivityParty
|
party?: ActivityParty
|
||||||
assets?: ActivityAssets
|
assets?: ActivityAssets
|
||||||
secrets?: ActivitySecrets
|
secrets?: ActivitySecrets
|
||||||
|
@ -382,7 +381,7 @@ interface TypeStart {
|
||||||
guild_id?: string
|
guild_id?: string
|
||||||
user_id: string
|
user_id: string
|
||||||
timestamp: number
|
timestamp: number
|
||||||
member?: Member
|
member?: MemberPayload
|
||||||
}
|
}
|
||||||
|
|
||||||
interface VoiceServerUpdate {
|
interface VoiceServerUpdate {
|
||||||
|
|
|
@ -1,65 +1,64 @@
|
||||||
import { Channel } from '../structures/channel.ts'
|
import { ChannelPayload } from './channelTypes.ts'
|
||||||
import { Emoji } from '../structures/emoji.ts'
|
import { EmojiPayload } from './emojiTypes.ts'
|
||||||
import { Member } from '../structures/member.ts'
|
|
||||||
import { Role } from '../structures/role.ts'
|
|
||||||
import { User } from '../structures/user.ts'
|
|
||||||
import { PresenceUpdatePayload } from './presenceTypes.ts'
|
import { PresenceUpdatePayload } from './presenceTypes.ts'
|
||||||
|
import { RolePayload } from './roleTypes.ts'
|
||||||
|
import { UserPayload } from './userTypes.ts'
|
||||||
import { VoiceStatePayload } from './voiceTypes.ts'
|
import { VoiceStatePayload } from './voiceTypes.ts'
|
||||||
|
|
||||||
interface GuildPayload {
|
interface GuildPayload {
|
||||||
id: string
|
id: string
|
||||||
name: string
|
name: string
|
||||||
icon: string | undefined
|
icon?: string
|
||||||
icon_hash?: string | undefined
|
icon_hash?: string
|
||||||
splash: string | undefined
|
splash?: string
|
||||||
discovery_splash: string | undefined
|
discovery_splash?: string
|
||||||
owner?: boolean
|
owner?: boolean
|
||||||
owner_id: string
|
owner_id: string
|
||||||
permissions?: string
|
permissions?: string
|
||||||
region: string
|
region: string
|
||||||
afk_channel_id: string | undefined
|
afk_channel_id?: string
|
||||||
afk_timeout: number
|
afk_timeout: number
|
||||||
widget_enabled?: boolean
|
widget_enabled?: boolean
|
||||||
widge_channel_id?: string | undefined
|
widge_channel_id?: string
|
||||||
verification_level: string
|
verification_level: string
|
||||||
default_message_notifications: string
|
default_message_notifications: string
|
||||||
explicit_content_filter: string
|
explicit_content_filter: string
|
||||||
roles: Role[]
|
roles: RolePayload[]
|
||||||
emojis: Emoji[]
|
emojis: EmojiPayload[]
|
||||||
features: GuildFeatures[]
|
features: GuildFeatures[]
|
||||||
mfa_level: string
|
mfa_level: string
|
||||||
application_id: string | undefined
|
application_id?: string
|
||||||
system_channel_id: string | undefined
|
system_channel_id?: string
|
||||||
system_channel_flags: string
|
system_channel_flags: string
|
||||||
rules_channel_id: string | undefined
|
rules_channel_id?: string
|
||||||
joined_at?: string
|
joined_at?: string
|
||||||
large?: boolean
|
large?: boolean
|
||||||
unavailable: boolean
|
unavailable: boolean
|
||||||
member_count?: number
|
member_count?: number
|
||||||
voice_states?: VoiceStatePayload[]
|
voice_states?: VoiceStatePayload[]
|
||||||
members?: Member[]
|
members?: MemberPayload[]
|
||||||
channels?: Channel[]
|
channels?: ChannelPayload[]
|
||||||
presences?: PresenceUpdatePayload[]
|
presences?: PresenceUpdatePayload[]
|
||||||
max_presences?: number | undefined
|
max_presences?: number
|
||||||
max_members?: number
|
max_members?: number
|
||||||
vanity_url_code: string | undefined
|
vanity_url_code?: string
|
||||||
description: string | undefined
|
description?: string
|
||||||
banner: string | undefined
|
banner?: string
|
||||||
premium_tier: number
|
premium_tier: number
|
||||||
premium_subscription_count?: number
|
premium_subscription_count?: number
|
||||||
preferred_locale: string
|
preferred_locale: string
|
||||||
public_updates_channel_id: string | undefined
|
public_updates_channel_id?: string
|
||||||
max_video_channel_users?: number
|
max_video_channel_users?: number
|
||||||
approximate_number_count?: number
|
approximate_number_count?: number
|
||||||
approximate_presence_count?: number
|
approximate_presence_count?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
interface MemberPayload {
|
interface MemberPayload {
|
||||||
user: User
|
user: UserPayload
|
||||||
nick: string | undefined
|
nick?: string
|
||||||
roles: Role[]
|
roles: RolePayload[]
|
||||||
joined_at: string
|
joined_at: string
|
||||||
premium_since?: string | undefined
|
premium_since?: string
|
||||||
deaf: boolean
|
deaf: boolean
|
||||||
mute: boolean
|
mute: boolean
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import { Channel } from '../structures/channel.ts'
|
import { ChannelPayload } from './channelTypes.ts'
|
||||||
import { Guild } from '../structures/guild.ts'
|
import { GuildPayload } from './guildTypes.ts'
|
||||||
import { User } from '../structures/user.ts'
|
import { UserPayload } from './userTypes.ts'
|
||||||
|
|
||||||
export interface InvitePayload {
|
export interface InvitePayload {
|
||||||
code: string
|
code: string
|
||||||
guild?: Guild
|
guild?: GuildPayload
|
||||||
channel: Channel
|
channel: ChannelPayload
|
||||||
inviter?: User
|
inviter?: UserPayload
|
||||||
target_user?: User
|
target_user?: UserPayload
|
||||||
target_user_type?: number
|
target_user_type?: number
|
||||||
approximate_presence_count?: number
|
approximate_presence_count?: number
|
||||||
approximate_member_count?: number
|
approximate_member_count?: number
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { User } from '../structures/user.ts'
|
import { UserPayload } from './userTypes.ts'
|
||||||
|
|
||||||
interface PresenceUpdatePayload {
|
interface PresenceUpdatePayload {
|
||||||
user: User
|
user: UserPayload
|
||||||
guild_id: string
|
guild_id: string
|
||||||
status: string
|
status: string
|
||||||
activities: ActivityPayload
|
activities: ActivityPayload
|
||||||
|
|
|
@ -15,8 +15,3 @@ export class Snowflake {
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// BigInt라서 이걸 어케 할까 고심끝에 나온게 toString 읍
|
|
||||||
// 엄...
|
|
||||||
|
|
||||||
// deconstruct가 소멸자임? 색 봐서는 아닌거같은데
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { Guild } from '../structures/guild.ts'
|
import { GuildPayload } from './guildTypes.ts'
|
||||||
import { User } from '../structures/user.ts'
|
import { UserPayload } from './userTypes.ts'
|
||||||
|
|
||||||
export interface TemplatePayload {
|
export interface TemplatePayload {
|
||||||
code: string
|
code: string
|
||||||
|
@ -7,10 +7,10 @@ export interface TemplatePayload {
|
||||||
description: string | undefined
|
description: string | undefined
|
||||||
usage_count: number
|
usage_count: number
|
||||||
creator_id: string
|
creator_id: string
|
||||||
creator: User
|
creator: UserPayload
|
||||||
created_at: string
|
created_at: string
|
||||||
updated_at: string
|
updated_at: string
|
||||||
source_guild_id: string
|
source_guild_id: string
|
||||||
serialized_source_guild: Guild
|
serialized_source_guild: GuildPayload
|
||||||
is_dirty: boolean | undefined
|
is_dirty: boolean | undefined
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// https://discord.com/developers/docs/topics/opcodes-and-status-codes#voice
|
// https://discord.com/developers/docs/topics/opcodes-and-status-codes#voice
|
||||||
import { Member } from '../structures/member.ts'
|
import { MemberPayload } from './guildTypes.ts'
|
||||||
|
|
||||||
enum VoiceOpcodes { // VoiceOpcodes 추가 - UnderC -
|
enum VoiceOpcodes { // VoiceOpcodes 추가 - UnderC -
|
||||||
IDENTIFY = 0,
|
IDENTIFY = 0,
|
||||||
|
@ -31,9 +31,9 @@ enum VoiceCloseCodes {
|
||||||
|
|
||||||
export interface VoiceStatePayload {
|
export interface VoiceStatePayload {
|
||||||
guild_id?: string
|
guild_id?: string
|
||||||
channel_id: string | undefined
|
channel_id?: string
|
||||||
user_id: string
|
user_id: string
|
||||||
member?: Member
|
member?: MemberPayload
|
||||||
session_id: string
|
session_id: string
|
||||||
deaf: boolean
|
deaf: boolean
|
||||||
mute: boolean
|
mute: boolean
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import { User } from '../structures/user.ts'
|
import { UserPayload } from './userTypes.ts'
|
||||||
|
|
||||||
export interface WebhookPayload {
|
export interface WebhookPayload {
|
||||||
id: string
|
id: string
|
||||||
type: 1 | 2
|
type: 1 | 2
|
||||||
guild_id?: string
|
guild_id?: string
|
||||||
channel_id: string
|
channel_id: string
|
||||||
user?: User
|
user?: UserPayload
|
||||||
name: string | undefined
|
name?: string
|
||||||
avatar: string | undefined
|
avatar?: string
|
||||||
token?: string
|
token?: string
|
||||||
application_id: string | undefined
|
application_id?: string
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
"module": "ESNext",
|
"module": "ESNext",
|
||||||
/* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
|
/* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
|
||||||
"lib": [
|
"lib": [
|
||||||
"esnext",
|
"esnext"
|
||||||
], /* Specify library files to be included in the compilation. */
|
] /* Specify library files to be included in the compilation. */,
|
||||||
// "allowJs": true, /* Allow javascript files to be compiled. */
|
// "allowJs": true, /* Allow javascript files to be compiled. */
|
||||||
// "checkJs": true, /* Report errors in .js files. */
|
// "checkJs": true, /* Report errors in .js files. */
|
||||||
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
|
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
|
||||||
|
|
Loading…
Reference in a new issue