Some fixes. Working on Child Managers (not added, will continue tomorrow)
This commit is contained in:
parent
79a06f43d7
commit
99630d74cf
17 changed files with 158 additions and 37 deletions
|
@ -1,4 +1,5 @@
|
||||||
import { Channel } from '../../structures/channel.ts'
|
import { Channel } from '../../structures/channel.ts'
|
||||||
|
import { Guild } from "../../structures/guild.ts"
|
||||||
import getChannelByType from '../../utils/getChannelByType.ts'
|
import getChannelByType from '../../utils/getChannelByType.ts'
|
||||||
import { Gateway, GatewayEventHandler } from '../index.ts'
|
import { Gateway, GatewayEventHandler } from '../index.ts'
|
||||||
|
|
||||||
|
@ -10,8 +11,12 @@ export const channelUpdate: GatewayEventHandler = async (
|
||||||
|
|
||||||
if (oldChannel !== undefined) {
|
if (oldChannel !== undefined) {
|
||||||
await gateway.client.channels.set(d.id, d)
|
await gateway.client.channels.set(d.id, d)
|
||||||
|
let guild: undefined | Guild;
|
||||||
|
if(d.guild_id) {
|
||||||
|
guild = await gateway.client.guilds.get(d.guild_id) || undefined
|
||||||
|
}
|
||||||
if (oldChannel.type !== d.type) {
|
if (oldChannel.type !== d.type) {
|
||||||
const channel: Channel = getChannelByType(gateway.client, d) ?? oldChannel
|
const channel: Channel = getChannelByType(gateway.client, d, guild) ?? oldChannel
|
||||||
gateway.client.emit('channelUpdate', oldChannel, channel)
|
gateway.client.emit('channelUpdate', oldChannel, channel)
|
||||||
} else {
|
} else {
|
||||||
const before = oldChannel.refreshFromData(d)
|
const before = oldChannel.refreshFromData(d)
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { Gateway, GatewayEventHandler } from '../index.ts'
|
||||||
import { Guild } from '../../structures/guild.ts'
|
import { Guild } from '../../structures/guild.ts'
|
||||||
import { GuildPayload } from "../../types/guild.ts"
|
import { GuildPayload } from "../../types/guild.ts"
|
||||||
|
|
||||||
export const guildCreate: GatewayEventHandler = async(gateway: Gateway, d: any) => {
|
export const guildCreate: GatewayEventHandler = async(gateway: Gateway, d: GuildPayload) => {
|
||||||
let guild: Guild | void = await gateway.client.guilds.get(d.id)
|
let guild: Guild | void = await gateway.client.guilds.get(d.id)
|
||||||
if (guild !== undefined) {
|
if (guild !== undefined) {
|
||||||
// It was just lazy load, so we don't fire the event as its gonna fire for every guild bot is in
|
// It was just lazy load, so we don't fire the event as its gonna fire for every guild bot is in
|
||||||
|
@ -11,6 +11,7 @@ export const guildCreate: GatewayEventHandler = async(gateway: Gateway, d: any)
|
||||||
} else {
|
} else {
|
||||||
await gateway.client.guilds.set(d.id, d)
|
await gateway.client.guilds.set(d.id, d)
|
||||||
guild = new Guild(gateway.client, d as GuildPayload)
|
guild = new Guild(gateway.client, d as GuildPayload)
|
||||||
|
await guild.roles.fromPayload(d.roles)
|
||||||
gateway.client.emit('guildCreate', guild)
|
gateway.client.emit('guildCreate', guild)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
|
import { User } from "../../structures/user.ts"
|
||||||
|
import { CLIENT_USER } from "../../types/endpoint.ts"
|
||||||
import { Gateway, GatewayEventHandler } from '../index.ts'
|
import { Gateway, GatewayEventHandler } from '../index.ts'
|
||||||
|
|
||||||
export const resume: GatewayEventHandler = (gateway: Gateway, d: any) => {
|
export const resume: GatewayEventHandler = async (gateway: Gateway, d: any) => {
|
||||||
gateway.debug(`Session Resumed!`)
|
gateway.debug(`Session Resumed!`)
|
||||||
gateway.client.emit('resume')
|
gateway.client.emit('resume')
|
||||||
|
if(gateway.client.user === undefined) gateway.client.user = new User(gateway.client, await gateway.client.rest.get(CLIENT_USER()) as any)
|
||||||
gateway.client.emit('ready')
|
gateway.client.emit('ready')
|
||||||
}
|
}
|
|
@ -89,7 +89,7 @@ class Gateway {
|
||||||
}, this.heartbeatInterval)
|
}, this.heartbeatInterval)
|
||||||
|
|
||||||
if (!this.initialized) {
|
if (!this.initialized) {
|
||||||
this.sendIdentify()
|
this.sendIdentify(this.client.forceNewSession)
|
||||||
this.initialized = true
|
this.initialized = true
|
||||||
} else {
|
} else {
|
||||||
console.log("Calling Resume")
|
console.log("Calling Resume")
|
||||||
|
|
24
src/managers/BaseChildManager.ts
Normal file
24
src/managers/BaseChildManager.ts
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
import { Client } from "../models/client.ts";
|
||||||
|
import { BaseManager } from "./BaseManager.ts";
|
||||||
|
|
||||||
|
export class BaseChildManager<T, T2> {
|
||||||
|
client: Client
|
||||||
|
parent: BaseManager<T, T2>
|
||||||
|
|
||||||
|
constructor(client: Client, parent: BaseManager<T, T2>) {
|
||||||
|
this.client = client
|
||||||
|
this.parent = parent
|
||||||
|
}
|
||||||
|
|
||||||
|
async get(key: string): Promise<T2 | void> {
|
||||||
|
return await this.parent.get(key)
|
||||||
|
}
|
||||||
|
|
||||||
|
async set(key: string, value: T) {
|
||||||
|
return await this.parent.set(key, value)
|
||||||
|
}
|
||||||
|
|
||||||
|
async delete(key: string): Promise<any> {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
import { Client } from "../models/client.ts";
|
import { Client } from "../models/client.ts";
|
||||||
import { Base } from "../structures/base.ts";
|
import { Collection } from "../utils/collection.ts";
|
||||||
|
|
||||||
export class BaseManager<T, T2> {
|
export class BaseManager<T, T2> {
|
||||||
client: Client
|
client: Client
|
||||||
|
@ -22,11 +22,26 @@ export class BaseManager<T, T2> {
|
||||||
return new this.dataType(this.client, raw) as any
|
return new this.dataType(this.client, raw) as any
|
||||||
}
|
}
|
||||||
|
|
||||||
async set(key: string, value: T) {
|
set(key: string, value: T) {
|
||||||
return this.client.cache.set(this.cacheName, key, value)
|
return this.client.cache.set(this.cacheName, key, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
async delete(key: string) {
|
delete(key: string) {
|
||||||
return this.client.cache.delete(this.cacheName, key)
|
return this.client.cache.delete(this.cacheName, key)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
array(): Promise<void | T2[]> {
|
||||||
|
return (this.client.cache.array(this.cacheName) as T[]).map(e => new this.dataType(this.client, e)) as any
|
||||||
|
}
|
||||||
|
|
||||||
|
async collection(): Promise<Collection<string, T2>> {
|
||||||
|
const arr = await this.array() as void | T2[]
|
||||||
|
if(arr === undefined) return new Collection()
|
||||||
|
let collection = new Collection()
|
||||||
|
for (const elem of arr) {
|
||||||
|
// @ts-ignore
|
||||||
|
collection.set(elem.id, elem)
|
||||||
|
}
|
||||||
|
return collection
|
||||||
|
}
|
||||||
}
|
}
|
31
src/managers/GuildChannelsManager.ts
Normal file
31
src/managers/GuildChannelsManager.ts
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
import { Client } from "../models/client.ts";
|
||||||
|
import { Guild } from "../structures/guild.ts";
|
||||||
|
import { CategoryChannel } from "../structures/guildCategoryChannel.ts";
|
||||||
|
import { GuildTextChannel } from "../structures/guildTextChannel.ts";
|
||||||
|
import { VoiceChannel } from "../structures/guildVoiceChannel.ts";
|
||||||
|
import { GuildChannelCategoryPayload, GuildTextChannelPayload, GuildVoiceChannelPayload } from "../types/channel.ts";
|
||||||
|
import { CHANNEL } from "../types/endpoint.ts";
|
||||||
|
import { BaseChildManager } from "./BaseChildManager.ts";
|
||||||
|
import { BaseManager } from "./BaseManager.ts";
|
||||||
|
|
||||||
|
export type GuildChannelPayload = GuildTextChannelPayload | GuildVoiceChannelPayload | GuildChannelCategoryPayload
|
||||||
|
export type GuildChannel = GuildTextChannel | VoiceChannel | CategoryChannel
|
||||||
|
|
||||||
|
export class GuildChannelsManager extends BaseChildManager<GuildChannelPayload, GuildChannel> {
|
||||||
|
guild: Guild
|
||||||
|
|
||||||
|
constructor(client: Client, parent: BaseManager<GuildChannelPayload, GuildChannel>, guild: Guild) {
|
||||||
|
super(client, parent)
|
||||||
|
this.guild = guild
|
||||||
|
}
|
||||||
|
|
||||||
|
async get(id: string): Promise<GuildChannel | void> {
|
||||||
|
const res = await this.parent.get(id)
|
||||||
|
if(res && res.guild.id == this.guild.id) return res
|
||||||
|
else return
|
||||||
|
}
|
||||||
|
|
||||||
|
delete(id: string) {
|
||||||
|
return this.client.rest.delete(CHANNEL(id))
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,6 +12,17 @@ export class MessagesManager extends BaseManager<MessagePayload, Message> {
|
||||||
super(client, "messages", Message)
|
super(client, "messages", Message)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async get(key: string): Promise<Message | void> {
|
||||||
|
const raw = await this._get(key)
|
||||||
|
if(!raw) return
|
||||||
|
let channel = await this.client.channels.get(raw.channel_id)
|
||||||
|
if(!channel) channel = await this.client.channels.fetch(raw.channel_id)
|
||||||
|
if(!channel) return
|
||||||
|
let author = new User(this.client, raw.author)
|
||||||
|
let mentions = new MessageMentions()
|
||||||
|
return new this.dataType(this.client, raw, channel, author, mentions) as any
|
||||||
|
}
|
||||||
|
|
||||||
fetch(channelID: string, id: string) {
|
fetch(channelID: string, id: string) {
|
||||||
return new Promise((res, rej) => {
|
return new Promise((res, rej) => {
|
||||||
this.client.rest.get(CHANNEL_MESSAGE(channelID, id)).then(async data => {
|
this.client.rest.get(CHANNEL_MESSAGE(channelID, id)).then(async data => {
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import { Client } from "../models/client.ts";
|
import { Client } from "../models/client.ts";
|
||||||
import { Guild } from "../structures/guild.ts";
|
import { Guild } from "../structures/guild.ts";
|
||||||
import { Role } from "../structures/role.ts";
|
import { Role } from "../structures/role.ts";
|
||||||
import { User } from "../structures/user.ts";
|
|
||||||
import { GUILD_ROLE } from "../types/endpoint.ts";
|
import { GUILD_ROLE } from "../types/endpoint.ts";
|
||||||
import { RolePayload } from "../types/role.ts";
|
import { RolePayload } from "../types/role.ts";
|
||||||
import { BaseManager } from "./BaseManager.ts";
|
import { BaseManager } from "./BaseManager.ts";
|
||||||
|
@ -22,4 +21,10 @@ export class RolesManager extends BaseManager<RolePayload, Role> {
|
||||||
}).catch(e => rej(e))
|
}).catch(e => rej(e))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fromPayload(roles: RolePayload[]) {
|
||||||
|
for(const role of roles) {
|
||||||
|
await this.guild.roles.set(role.id, role)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -14,7 +14,8 @@ import { MessagesManager } from "../managers/MessagesManager.ts"
|
||||||
export interface ClientOptions {
|
export interface ClientOptions {
|
||||||
token?: string
|
token?: string
|
||||||
intents?: GatewayIntents[]
|
intents?: GatewayIntents[]
|
||||||
cache?: ICacheAdapter
|
cache?: ICacheAdapter,
|
||||||
|
forceNewSession?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,6 +29,7 @@ export class Client extends EventEmitter {
|
||||||
token?: string
|
token?: string
|
||||||
cache: ICacheAdapter = new DefaultCacheAdapter(this)
|
cache: ICacheAdapter = new DefaultCacheAdapter(this)
|
||||||
intents?: GatewayIntents[]
|
intents?: GatewayIntents[]
|
||||||
|
forceNewSession?: boolean
|
||||||
|
|
||||||
users: UserManager = new UserManager(this)
|
users: UserManager = new UserManager(this)
|
||||||
guilds: GuildManager = new GuildManager(this)
|
guilds: GuildManager = new GuildManager(this)
|
||||||
|
@ -39,6 +41,7 @@ export class Client extends EventEmitter {
|
||||||
super()
|
super()
|
||||||
this.token = options.token
|
this.token = options.token
|
||||||
this.intents = options.intents
|
this.intents = options.intents
|
||||||
|
this.forceNewSession = options.forceNewSession
|
||||||
if(options.cache) this.cache = options.cache
|
if(options.cache) this.cache = options.cache
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -168,22 +168,22 @@ export class Guild extends Base {
|
||||||
this.joinedAt = data.joined_at ?? this.joinedAt
|
this.joinedAt = data.joined_at ?? this.joinedAt
|
||||||
this.large = data.large ?? this.large
|
this.large = data.large ?? this.large
|
||||||
this.memberCount = data.member_count ?? this.memberCount
|
this.memberCount = data.member_count ?? this.memberCount
|
||||||
this.voiceStates =
|
// this.voiceStates =
|
||||||
data.voice_states?.map(
|
// data.voice_states?.map(
|
||||||
v =>
|
// v =>
|
||||||
cache.get('voiceState', `${v.guild_id}:${v.user_id}`) ??
|
// cache.get('voiceState', `${v.guild_id}:${v.user_id}`) ??
|
||||||
new VoiceState(this.client, v)
|
// new VoiceState(this.client, v)
|
||||||
) ?? this.voiceStates
|
// ) ?? this.voiceStates
|
||||||
this.members =
|
// this.members =
|
||||||
data.members?.map(
|
// data.members?.map(
|
||||||
v =>
|
// v =>
|
||||||
cache.get('member', `${this.id}:${v.user.id}`) ??
|
// cache.get('member', `${this.id}:${v.user.id}`) ??
|
||||||
new Member(this.client, v)
|
// new Member(this.client, v)
|
||||||
) ?? this.members
|
// ) ?? this.members
|
||||||
this.channels =
|
// this.channels =
|
||||||
data.channels?.map(
|
// data.channels?.map(
|
||||||
v => cache.get('channel', v.id) ?? getChannelByType(this.client, v)
|
// v => cache.get('channel', v.id) ?? getChannelByType(this.client, v, this)
|
||||||
) ?? this.members
|
// ) ?? this.members
|
||||||
this.presences = data.presences ?? this.presences
|
this.presences = data.presences ?? this.presences
|
||||||
this.maxPresences = data.max_presences ?? this.maxPresences
|
this.maxPresences = data.max_presences ?? this.maxPresences
|
||||||
this.maxMembers = data.max_members ?? this.maxMembers
|
this.maxMembers = data.max_members ?? this.maxMembers
|
||||||
|
|
|
@ -4,7 +4,7 @@ import {
|
||||||
GuildChannelCategoryPayload,
|
GuildChannelCategoryPayload,
|
||||||
Overwrite
|
Overwrite
|
||||||
} from '../types/channel.ts'
|
} from '../types/channel.ts'
|
||||||
import cache from '../models/cache.ts'
|
import { Guild } from "./guild.ts"
|
||||||
|
|
||||||
export class CategoryChannel extends Channel {
|
export class CategoryChannel extends Channel {
|
||||||
guildID: string
|
guildID: string
|
||||||
|
@ -12,12 +12,14 @@ export class CategoryChannel extends Channel {
|
||||||
position: number
|
position: number
|
||||||
permissionOverwrites: Overwrite[]
|
permissionOverwrites: Overwrite[]
|
||||||
nsfw: boolean
|
nsfw: boolean
|
||||||
|
guild: Guild
|
||||||
parentID?: string
|
parentID?: string
|
||||||
|
|
||||||
constructor (client: Client, data: GuildChannelCategoryPayload) {
|
constructor (client: Client, data: GuildChannelCategoryPayload, guild: Guild) {
|
||||||
super(client, data)
|
super(client, data)
|
||||||
this.guildID = data.guild_id
|
this.guildID = data.guild_id
|
||||||
this.name = data.name
|
this.name = data.name
|
||||||
|
this.guild = guild
|
||||||
this.position = data.position
|
this.position = data.position
|
||||||
this.permissionOverwrites = data.permission_overwrites
|
this.permissionOverwrites = data.permission_overwrites
|
||||||
this.nsfw = data.nsfw
|
this.nsfw = data.nsfw
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Client } from '../models/client.ts'
|
import { Client } from '../models/client.ts'
|
||||||
import { GuildTextChannelPayload, Overwrite } from '../types/channel.ts'
|
import { GuildTextChannelPayload, Overwrite } from '../types/channel.ts'
|
||||||
import cache from '../models/cache.ts'
|
|
||||||
import { TextChannel } from './textChannel.ts'
|
import { TextChannel } from './textChannel.ts'
|
||||||
|
import { Guild } from "./guild.ts"
|
||||||
|
|
||||||
export class GuildTextChannel extends TextChannel {
|
export class GuildTextChannel extends TextChannel {
|
||||||
guildID: string
|
guildID: string
|
||||||
|
@ -12,15 +12,17 @@ export class GuildTextChannel extends TextChannel {
|
||||||
parentID?: string
|
parentID?: string
|
||||||
rateLimit: number
|
rateLimit: number
|
||||||
topic?: string
|
topic?: string
|
||||||
|
guild: Guild
|
||||||
|
|
||||||
get mention (): string {
|
get mention (): string {
|
||||||
return `<#${this.id}>`
|
return `<#${this.id}>`
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor (client: Client, data: GuildTextChannelPayload) {
|
constructor (client: Client, data: GuildTextChannelPayload, guild: Guild) {
|
||||||
super(client, data)
|
super(client, data)
|
||||||
this.guildID = data.guild_id
|
this.guildID = data.guild_id
|
||||||
this.name = data.name
|
this.name = data.name
|
||||||
|
this.guild = guild
|
||||||
this.position = data.position
|
this.position = data.position
|
||||||
this.permissionOverwrites = data.permission_overwrites
|
this.permissionOverwrites = data.permission_overwrites
|
||||||
this.nsfw = data.nsfw
|
this.nsfw = data.nsfw
|
||||||
|
|
|
@ -2,24 +2,27 @@ import cache from '../models/cache.ts'
|
||||||
import { Client } from '../models/client.ts'
|
import { Client } from '../models/client.ts'
|
||||||
import { GuildVoiceChannelPayload, Overwrite } from '../types/channel.ts'
|
import { GuildVoiceChannelPayload, Overwrite } from '../types/channel.ts'
|
||||||
import { Channel } from './channel.ts'
|
import { Channel } from './channel.ts'
|
||||||
|
import { Guild } from "./guild.ts"
|
||||||
|
|
||||||
export class VoiceChannel extends Channel {
|
export class VoiceChannel extends Channel {
|
||||||
bitrate: string
|
bitrate: string
|
||||||
userLimit: number
|
userLimit: number
|
||||||
guildID: string
|
guildID: string
|
||||||
name: string
|
name: string
|
||||||
|
guild: Guild
|
||||||
position: number
|
position: number
|
||||||
permissionOverwrites: Overwrite[]
|
permissionOverwrites: Overwrite[]
|
||||||
nsfw: boolean
|
nsfw: boolean
|
||||||
parentID?: string
|
parentID?: string
|
||||||
|
|
||||||
constructor (client: Client, data: GuildVoiceChannelPayload) {
|
constructor (client: Client, data: GuildVoiceChannelPayload, guild: Guild) {
|
||||||
super(client, data)
|
super(client, data)
|
||||||
this.bitrate = data.bitrate
|
this.bitrate = data.bitrate
|
||||||
this.userLimit = data.user_limit
|
this.userLimit = data.user_limit
|
||||||
this.guildID = data.guild_id
|
this.guildID = data.guild_id
|
||||||
this.name = data.name
|
this.name = data.name
|
||||||
this.position = data.position
|
this.position = data.position
|
||||||
|
this.guild = guild
|
||||||
this.permissionOverwrites = data.permission_overwrites
|
this.permissionOverwrites = data.permission_overwrites
|
||||||
this.nsfw = data.nsfw
|
this.nsfw = data.nsfw
|
||||||
this.parentID = data.parent_id
|
this.parentID = data.parent_id
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
import { Client } from '../models/client.ts'
|
import { Client } from '../models/client.ts'
|
||||||
import { GuildNewsChannelPayload, Overwrite } from '../types/channel.ts'
|
import { GuildNewsChannelPayload, Overwrite } from '../types/channel.ts'
|
||||||
|
import { Guild } from "./guild.ts"
|
||||||
import { TextChannel } from './textChannel.ts'
|
import { TextChannel } from './textChannel.ts'
|
||||||
|
|
||||||
export class NewsChannel extends TextChannel {
|
export class NewsChannel extends TextChannel {
|
||||||
guildID: string
|
guildID: string
|
||||||
|
guild: Guild
|
||||||
name: string
|
name: string
|
||||||
position: number
|
position: number
|
||||||
permissionOverwrites: Overwrite[]
|
permissionOverwrites: Overwrite[]
|
||||||
|
@ -11,10 +13,11 @@ export class NewsChannel extends TextChannel {
|
||||||
parentID?: string
|
parentID?: string
|
||||||
topic?: string
|
topic?: string
|
||||||
|
|
||||||
constructor (client: Client, data: GuildNewsChannelPayload) {
|
constructor (client: Client, data: GuildNewsChannelPayload, guild: Guild) {
|
||||||
super(client, data)
|
super(client, data)
|
||||||
this.guildID = data.guild_id
|
this.guildID = data.guild_id
|
||||||
this.name = data.name
|
this.name = data.name
|
||||||
|
this.guild = guild
|
||||||
this.position = data.position
|
this.position = data.position
|
||||||
this.permissionOverwrites = data.permission_overwrites
|
this.permissionOverwrites = data.permission_overwrites
|
||||||
this.nsfw = data.nsfw
|
this.nsfw = data.nsfw
|
||||||
|
|
|
@ -187,6 +187,10 @@ const INVITE = (inviteCODE: string): string =>
|
||||||
const VOICE_REGIONS = (guildID: string): string =>
|
const VOICE_REGIONS = (guildID: string): string =>
|
||||||
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/guilds/${guildID}/regions`
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/guilds/${guildID}/regions`
|
||||||
|
|
||||||
|
// Client User Endpoint
|
||||||
|
const CLIENT_USER = (): string =>
|
||||||
|
`${DISCORD_API_URL}/v${DISCORD_API_VERSION}/users/@me`
|
||||||
|
|
||||||
export default [
|
export default [
|
||||||
GUILDS,
|
GUILDS,
|
||||||
GUILD,
|
GUILD,
|
||||||
|
@ -204,6 +208,7 @@ export default [
|
||||||
GUILD_CHANNEL,
|
GUILD_CHANNEL,
|
||||||
GUILD_CHANNELS,
|
GUILD_CHANNELS,
|
||||||
GUILD_MEMBER,
|
GUILD_MEMBER,
|
||||||
|
CLIENT_USER,
|
||||||
GUILD_MEMBERS,
|
GUILD_MEMBERS,
|
||||||
GUILD_MEMBER_ROLE,
|
GUILD_MEMBER_ROLE,
|
||||||
GUILD_INVITES,
|
GUILD_INVITES,
|
||||||
|
@ -319,6 +324,7 @@ export {
|
||||||
CUSTOM_EMOJI,
|
CUSTOM_EMOJI,
|
||||||
GUILD_ICON,
|
GUILD_ICON,
|
||||||
GUILD_SPLASH,
|
GUILD_SPLASH,
|
||||||
|
CLIENT_USER,
|
||||||
GUILD_DISCOVERY_SPLASH,
|
GUILD_DISCOVERY_SPLASH,
|
||||||
GUILD_BANNER,
|
GUILD_BANNER,
|
||||||
DEFAULT_USER_AVATAR,
|
DEFAULT_USER_AVATAR,
|
||||||
|
|
|
@ -14,7 +14,9 @@ import { GroupDMChannel } from '../structures/groupChannel.ts'
|
||||||
import { CategoryChannel } from '../structures/guildCategoryChannel.ts'
|
import { CategoryChannel } from '../structures/guildCategoryChannel.ts'
|
||||||
import { NewsChannel } from '../structures/guildNewsChannel.ts'
|
import { NewsChannel } from '../structures/guildNewsChannel.ts'
|
||||||
import { VoiceChannel } from '../structures/guildVoiceChannel.ts'
|
import { VoiceChannel } from '../structures/guildVoiceChannel.ts'
|
||||||
import { TextChannel } from '../structures/textChannel.ts'
|
import { Guild } from "../structures/guild.ts"
|
||||||
|
import { GuildTextChannel } from "../structures/guildTextChannel.ts"
|
||||||
|
import { TextChannel } from "../structures/textChannel.ts"
|
||||||
|
|
||||||
const getChannelByType = (
|
const getChannelByType = (
|
||||||
client: Client,
|
client: Client,
|
||||||
|
@ -25,7 +27,8 @@ const getChannelByType = (
|
||||||
| GuildVoiceChannelPayload
|
| GuildVoiceChannelPayload
|
||||||
| DMChannelPayload
|
| DMChannelPayload
|
||||||
| GroupDMChannelPayload
|
| GroupDMChannelPayload
|
||||||
| ChannelPayload
|
| ChannelPayload,
|
||||||
|
guild?: Guild
|
||||||
):
|
):
|
||||||
| CategoryChannel
|
| CategoryChannel
|
||||||
| NewsChannel
|
| NewsChannel
|
||||||
|
@ -36,13 +39,17 @@ const getChannelByType = (
|
||||||
| undefined => {
|
| undefined => {
|
||||||
switch (data.type) {
|
switch (data.type) {
|
||||||
case ChannelTypes.GUILD_CATEGORY:
|
case ChannelTypes.GUILD_CATEGORY:
|
||||||
return new CategoryChannel(client, data as GuildChannelCategoryPayload)
|
if(!guild) throw new Error("No Guild was provided to construct Channel")
|
||||||
|
return new CategoryChannel(client, data as GuildChannelCategoryPayload, guild)
|
||||||
case ChannelTypes.GUILD_NEWS:
|
case ChannelTypes.GUILD_NEWS:
|
||||||
return new NewsChannel(client, data as GuildNewsChannelPayload)
|
if(!guild) throw new Error("No Guild was provided to construct Channel")
|
||||||
|
return new NewsChannel(client, data as GuildNewsChannelPayload, guild)
|
||||||
case ChannelTypes.GUILD_TEXT:
|
case ChannelTypes.GUILD_TEXT:
|
||||||
return new TextChannel(client, data as GuildTextChannelPayload)
|
if(!guild) throw new Error("No Guild was provided to construct Channel")
|
||||||
|
return new GuildTextChannel(client, data as GuildTextChannelPayload, guild)
|
||||||
case ChannelTypes.GUILD_VOICE:
|
case ChannelTypes.GUILD_VOICE:
|
||||||
return new VoiceChannel(client, data as GuildVoiceChannelPayload)
|
if(!guild) throw new Error("No Guild was provided to construct Channel")
|
||||||
|
return new VoiceChannel(client, data as GuildVoiceChannelPayload, guild)
|
||||||
case ChannelTypes.DM:
|
case ChannelTypes.DM:
|
||||||
return new DMChannel(client, data as DMChannelPayload)
|
return new DMChannel(client, data as DMChannelPayload)
|
||||||
case ChannelTypes.GROUP_DM:
|
case ChannelTypes.GROUP_DM:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue