many things

This commit is contained in:
DjDeveloperr 2021-01-25 17:04:43 +05:30
parent c1cd6276ae
commit dce4c99cbd
6 changed files with 100 additions and 18 deletions

View File

@ -44,16 +44,18 @@ export const guildEmojiUpdate: GatewayEventHandler = async (
}
}
gateway.client.emit('guildEmojisUpdate', guild)
for (const emoji of deleted) {
gateway.client.emit('guildEmojiDelete', guild, emoji)
gateway.client.emit('guildEmojiDelete', emoji)
}
for (const emoji of added) {
gateway.client.emit('guildEmojiAdd', guild, emoji)
gateway.client.emit('guildEmojiAdd', emoji)
}
for (const emoji of updated) {
gateway.client.emit('guildEmojiUpdate', guild, emoji.before, emoji.after)
gateway.client.emit('guildEmojiUpdate', emoji.before, emoji.after)
}
}
}

View File

@ -113,11 +113,12 @@ export interface VoiceServerUpdateData {
guild: Guild
}
/** All Client Events */
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
export type ClientEvents = {
/** When Client has successfully connected to Discord */
ready: [shard: number]
/** When a successful reconnect has been made */
/** When a reconnect was requested by Discord */
reconnect: [shard: number]
/** When a successful session resume has been done */
resumed: [shard: number]
@ -178,25 +179,28 @@ export type ClientEvents = {
* @param guild Guild in which Emoji was added
* @param emoji The Emoji which was added
*/
guildEmojiAdd: [guild: Guild, emoji: Emoji]
guildEmojiAdd: [emoji: Emoji]
/**
* An Emoji was deleted from Guild
* @param guild Guild from which Emoji was deleted
* @param emoji Emoji which was deleted
*/
guildEmojiDelete: [Guild, Emoji]
guildEmojiDelete: [emoji: Emoji]
/**
* An Emoji in a Guild was updated
* @param guild Guild in which Emoji was updated
* @param before Emoji object before update
* @param after Emoji object after update
*/
guildEmojiUpdate: [guild: Guild, before: Emoji, after: Emoji]
guildEmojiUpdate: [before: Emoji, after: Emoji]
/**
* Guild's Integrations were updated
* @param guild The Guild object
*/
guildIntegrationsUpdate: [guild: Guild]
/**
* Guild's Emojis were updated
* @param guild The Guild object
*/
guildEmojisUpdate: [guild: Guild]
/**
* A new Member has joined a Guild
* @param member The Member object

View File

@ -4,5 +4,6 @@ export const reconnect: GatewayEventHandler = async (
gateway: Gateway,
d: any
) => {
gateway.client.emit('reconnect', gateway.shards?.[0] ?? 0)
gateway.reconnect()
}

View File

@ -30,7 +30,7 @@ export class Message extends SnowflakeBase {
author: User
member?: Member
content: string
editedTimestamp?: string
editedTimestamp?: Date
tts: boolean
mentions: MessageMentions
attachments: Attachment[]
@ -62,7 +62,10 @@ export class Message extends SnowflakeBase {
this.guildID = data.guild_id
this.author = author
this.content = data.content
this.editedTimestamp = data.edited_timestamp
this.editedTimestamp =
data.edited_timestamp === undefined
? undefined
: new Date(data.edited_timestamp)
this.tts = data.tts
this.mentions = new MessageMentions(this.client, this)
this.attachments = data.attachments
@ -89,7 +92,10 @@ export class Message extends SnowflakeBase {
this.channelID = data.channel_id ?? this.channelID
this.guildID = data.guild_id ?? this.guildID
this.content = data.content ?? this.content
this.editedTimestamp = data.edited_timestamp ?? this.editedTimestamp
this.editedTimestamp =
data.edited_timestamp === undefined
? this.editedTimestamp
: new Date(data.edited_timestamp)
this.tts = data.tts ?? this.tts
this.attachments = data.attachments ?? this.attachments
this.embeds = data.embeds.map((v) => new Embed(v)) ?? this.embeds

View File

@ -1,10 +1,10 @@
import { Client } from '../models/client.ts'
import { SnowflakeBase } from './base.ts'
import { Base } from './base.ts'
import { RoleModifyPayload, RolePayload } from '../types/role.ts'
import { Permissions } from '../utils/permissions.ts'
import { Guild } from './guild.ts'
export class Role extends SnowflakeBase {
export class Role extends Base {
id: string
guild: Guild
name: string

View File

@ -24,6 +24,7 @@ import { Channel } from './channel.ts'
import { Embed } from './embed.ts'
import { Emoji } from './emoji.ts'
import { Guild } from './guild.ts'
import { CategoryChannel } from './guildCategoryChannel.ts'
import { Invite } from './invite.ts'
import { Member } from './member.ts'
import { Message } from './message.ts'
@ -244,7 +245,7 @@ export class GuildTextChannel extends TextChannel {
permissionOverwrites: Overwrite[]
nsfw: boolean
parentID?: string
rateLimit: number
slowmode: number
topic?: string
guild: Guild
@ -266,7 +267,7 @@ export class GuildTextChannel extends TextChannel {
this.nsfw = data.nsfw
this.parentID = data.parent_id
this.topic = data.topic
this.rateLimit = data.rate_limit_per_user
this.slowmode = data.rate_limit_per_user
}
readFromData(data: GuildTextChannelPayload): void {
@ -279,7 +280,7 @@ export class GuildTextChannel extends TextChannel {
this.nsfw = data.nsfw ?? this.nsfw
this.parentID = data.parent_id ?? this.parentID
this.topic = data.topic ?? this.topic
this.rateLimit = data.rate_limit_per_user ?? this.rateLimit
this.slowmode = data.rate_limit_per_user ?? this.slowmode
}
/** Edit the Guild Text Channel */
@ -290,7 +291,10 @@ export class GuildTextChannel extends TextChannel {
name: options?.name,
position: options?.position,
permission_overwrites: options?.permissionOverwrites,
parent_id: options?.parentID
parent_id: options?.parentID,
nsfw: options?.nsfw,
topic: options?.topic,
rate_limit_per_user: options?.rateLimitPerUser
}
const resp = await this.client.rest.patch(CHANNEL(this.id), body)
@ -388,4 +392,69 @@ export class GuildTextChannel extends TextChannel {
.remove(memberOWs.length === 0 ? 0 : memberOWs.map((e) => Number(e.deny)))
.add(memberOWs.length === 0 ? 0 : memberOWs.map((e) => Number(e.allow)))
}
/** Edit name of the channel */
async setName(name: string): Promise<GuildTextChannel> {
return await this.edit({ name })
}
/** Edit topic of the channel */
async setTopic(topic: string): Promise<GuildTextChannel> {
return await this.edit({ topic })
}
/** Edit topic of the channel */
async setCategory(
category: CategoryChannel | string
): Promise<GuildTextChannel> {
return await this.edit({
parentID: typeof category === 'object' ? category.id : category
})
}
/** Edit position of the channel */
async setPosition(position: number): Promise<GuildTextChannel> {
return await this.edit({ position })
}
/** Edit Slowmode of the channel */
async setSlowmode(slowmode?: number | null): Promise<GuildTextChannel> {
return await this.edit({ rateLimitPerUser: slowmode ?? null })
}
/** Edit NSFW property of the channel */
async setNSFW(nsfw: boolean): Promise<GuildTextChannel> {
return await this.edit({ nsfw })
}
/** Set Permission Overwrites of the Channel */
async setOverwrites(overwrites: Overwrite[]): Promise<GuildTextChannel> {
return await this.edit({ permissionOverwrites: overwrites })
}
/** Add a Permission Overwrite */
async addOverwrite(overwrite: Overwrite): Promise<GuildTextChannel> {
const overwrites = this.permissionOverwrites
overwrites.push(overwrite)
return await this.edit({ permissionOverwrites: overwrites })
}
/** Remove a Permission Overwrite */
async removeOverwrite(id: string): Promise<GuildTextChannel> {
if (this.permissionOverwrites.findIndex((e) => e.id === id) < 0)
throw new Error('Permission Overwrite not found')
const overwrites = this.permissionOverwrites.filter((e) => e.id !== id)
return await this.edit({ permissionOverwrites: overwrites })
}
/** Edit a Permission Overwrite */
async editOverwrite(overwrite: Overwrite): Promise<GuildTextChannel> {
const index = this.permissionOverwrites.findIndex(
(e) => e.id === overwrite.id
)
if (index < 0) throw new Error('Permission Overwrite not found')
const overwrites = this.permissionOverwrites
overwrites[index] = overwrite
return await this.edit({ permissionOverwrites: overwrites })
}
}