Add edit channel feature
This commit is contained in:
		
							parent
							
								
									dced786e60
								
							
						
					
					
						commit
						9688d248e3
					
				
					 9 changed files with 122 additions and 26 deletions
				
			
		
							
								
								
									
										2
									
								
								mod.ts
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								mod.ts
									
										
									
									
									
								
							|  | @ -92,7 +92,7 @@ export type { | ||||||
|   ChannelPayload, |   ChannelPayload, | ||||||
|   FollowedChannel, |   FollowedChannel, | ||||||
|   GuildNewsChannelPayload, |   GuildNewsChannelPayload, | ||||||
|   GuildChannelCategoryPayload, |   GuildCategoryChannelPayload, | ||||||
|   GuildChannelPayload, |   GuildChannelPayload, | ||||||
|   GuildTextChannelPayload, |   GuildTextChannelPayload, | ||||||
|   GuildVoiceChannelPayload, |   GuildVoiceChannelPayload, | ||||||
|  |  | ||||||
|  | @ -6,7 +6,6 @@ export const guildIntegrationsUpdate: GatewayEventHandler = async ( | ||||||
|   gateway: Gateway, |   gateway: Gateway, | ||||||
|   d: GuildIntegrationsUpdatePayload |   d: GuildIntegrationsUpdatePayload | ||||||
| ) => { | ) => { | ||||||
|   console.log(d) |  | ||||||
|   const guild: Guild | undefined = await gateway.client.guilds.get(d.guild_id) |   const guild: Guild | undefined = await gateway.client.guilds.get(d.guild_id) | ||||||
|   if (guild === undefined) return |   if (guild === undefined) return | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ import { CategoryChannel } from '../structures/guildCategoryChannel.ts' | ||||||
| import { GuildTextChannel } from '../structures/textChannel.ts' | import { GuildTextChannel } from '../structures/textChannel.ts' | ||||||
| import { VoiceChannel } from '../structures/guildVoiceChannel.ts' | import { VoiceChannel } from '../structures/guildVoiceChannel.ts' | ||||||
| import { | import { | ||||||
|   GuildChannelCategoryPayload, |   GuildCategoryChannelPayload, | ||||||
|   GuildTextChannelPayload, |   GuildTextChannelPayload, | ||||||
|   GuildVoiceChannelPayload |   GuildVoiceChannelPayload | ||||||
| } from '../types/channel.ts' | } from '../types/channel.ts' | ||||||
|  | @ -16,7 +16,7 @@ import { ChannelsManager } from './channels.ts' | ||||||
| export type GuildChannelPayloads = | export type GuildChannelPayloads = | ||||||
|   | GuildTextChannelPayload |   | GuildTextChannelPayload | ||||||
|   | GuildVoiceChannelPayload |   | GuildVoiceChannelPayload | ||||||
|   | GuildChannelCategoryPayload |   | GuildCategoryChannelPayload | ||||||
| export type GuildChannel = GuildTextChannel | VoiceChannel | CategoryChannel | export type GuildChannel = GuildTextChannel | VoiceChannel | CategoryChannel | ||||||
| 
 | 
 | ||||||
| export class GuildChannelsManager extends BaseChildManager< | export class GuildChannelsManager extends BaseChildManager< | ||||||
|  |  | ||||||
|  | @ -1,38 +1,56 @@ | ||||||
| import { Client } from '../models/client.ts' | import { Client } from '../models/client.ts' | ||||||
| import { Channel } from './channel.ts' | import { Channel } from './channel.ts' | ||||||
| import { GuildChannelCategoryPayload, Overwrite } from '../types/channel.ts' | import { | ||||||
|  |   GuildCategoryChannelPayload, | ||||||
|  |   ModifyGuildCategoryChannelOption, | ||||||
|  |   ModifyGuildCategoryChannelPayload, | ||||||
|  |   Overwrite | ||||||
|  | } from '../types/channel.ts' | ||||||
| import { Guild } from './guild.ts' | import { Guild } from './guild.ts' | ||||||
|  | import { CHANNEL } from '../types/endpoint.ts' | ||||||
| 
 | 
 | ||||||
| export class CategoryChannel extends Channel { | export class CategoryChannel extends Channel { | ||||||
|   guildID: string |   guildID: string | ||||||
|   name: string |   name: string | ||||||
|   position: number |   position: number | ||||||
|   permissionOverwrites: Overwrite[] |   permissionOverwrites: Overwrite[] | ||||||
|   nsfw: boolean |  | ||||||
|   guild: Guild |   guild: Guild | ||||||
|   parentID?: string |   parentID?: string | ||||||
| 
 | 
 | ||||||
|   constructor(client: Client, data: GuildChannelCategoryPayload, guild: Guild) { |   constructor(client: Client, data: GuildCategoryChannelPayload, 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.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.parentID = data.parent_id |     this.parentID = data.parent_id | ||||||
|     // TODO: Cache in Gateway Event Code
 |     // TODO: Cache in Gateway Event Code
 | ||||||
|     // cache.set('guildcategorychannel', this.id, this)
 |     // cache.set('guildcategorychannel', this.id, this)
 | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   readFromData(data: GuildChannelCategoryPayload): void { |   readFromData(data: GuildCategoryChannelPayload): void { | ||||||
|     super.readFromData(data) |     super.readFromData(data) | ||||||
|     this.guildID = data.guild_id ?? this.guildID |     this.guildID = data.guild_id ?? this.guildID | ||||||
|     this.name = data.name ?? this.name |     this.name = data.name ?? this.name | ||||||
|     this.position = data.position ?? this.position |     this.position = data.position ?? this.position | ||||||
|     this.permissionOverwrites = |     this.permissionOverwrites = | ||||||
|       data.permission_overwrites ?? this.permissionOverwrites |       data.permission_overwrites ?? this.permissionOverwrites | ||||||
|     this.nsfw = data.nsfw ?? this.nsfw |  | ||||||
|     this.parentID = data.parent_id ?? this.parentID |     this.parentID = data.parent_id ?? this.parentID | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   async edit( | ||||||
|  |     options?: ModifyGuildCategoryChannelOption | ||||||
|  |   ): Promise<CategoryChannel> { | ||||||
|  |     const body: ModifyGuildCategoryChannelPayload = { | ||||||
|  |       name: options?.name, | ||||||
|  |       position: options?.position, | ||||||
|  |       permission_overwrites: options?.permissionOverwrites, | ||||||
|  |       parent_id: options?.parentID | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     const resp = await this.client.rest.patch(CHANNEL(this.id), body) | ||||||
|  | 
 | ||||||
|  |     return new CategoryChannel(this.client, resp, this.guild) | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,5 +1,11 @@ | ||||||
| import { Client } from '../models/client.ts' | import { Client } from '../models/client.ts' | ||||||
| import { GuildNewsChannelPayload, Overwrite } from '../types/channel.ts' | import { | ||||||
|  |   GuildNewsChannelPayload, | ||||||
|  |   ModifyGuildNewsChannelOption, | ||||||
|  |   ModifyGuildNewsChannelPayload, | ||||||
|  |   Overwrite | ||||||
|  | } from '../types/channel.ts' | ||||||
|  | import { CHANNEL } from '../types/endpoint.ts' | ||||||
| import { Guild } from './guild.ts' | import { Guild } from './guild.ts' | ||||||
| import { TextChannel } from './textChannel.ts' | import { TextChannel } from './textChannel.ts' | ||||||
| 
 | 
 | ||||||
|  | @ -36,4 +42,20 @@ export class NewsChannel extends TextChannel { | ||||||
|     this.parentID = data.parent_id ?? this.parentID |     this.parentID = data.parent_id ?? this.parentID | ||||||
|     this.topic = data.topic ?? this.topic |     this.topic = data.topic ?? this.topic | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   async edit(options?: ModifyGuildNewsChannelOption): Promise<NewsChannel> { | ||||||
|  |     const body: ModifyGuildNewsChannelPayload = { | ||||||
|  |       name: options?.name, | ||||||
|  |       position: options?.position, | ||||||
|  |       permission_overwrites: options?.permissionOverwrites, | ||||||
|  |       parent_id: options?.parentID, | ||||||
|  |       type: options?.type, | ||||||
|  |       topic: options?.topic, | ||||||
|  |       nsfw: options?.nsfw | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     const resp = await this.client.rest.patch(CHANNEL(this.id), body) | ||||||
|  | 
 | ||||||
|  |     return new NewsChannel(this.client, resp, this.guild) | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,7 +1,13 @@ | ||||||
| import { VoiceServerUpdateData } from '../gateway/handlers/index.ts' | import { VoiceServerUpdateData } from '../gateway/handlers/index.ts' | ||||||
| import { VoiceStateOptions } from '../gateway/index.ts' | import { VoiceStateOptions } from '../gateway/index.ts' | ||||||
| import { Client } from '../models/client.ts' | import { Client } from '../models/client.ts' | ||||||
| import { GuildVoiceChannelPayload, Overwrite } from '../types/channel.ts' | import { | ||||||
|  |   GuildVoiceChannelPayload, | ||||||
|  |   ModifyVoiceChannelOption, | ||||||
|  |   ModifyVoiceChannelPayload, | ||||||
|  |   Overwrite | ||||||
|  | } from '../types/channel.ts' | ||||||
|  | import { CHANNEL } from '../types/endpoint.ts' | ||||||
| import { Channel } from './channel.ts' | import { Channel } from './channel.ts' | ||||||
| import { Guild } from './guild.ts' | import { Guild } from './guild.ts' | ||||||
| import { VoiceState } from './voiceState.ts' | import { VoiceState } from './voiceState.ts' | ||||||
|  | @ -14,7 +20,6 @@ export class VoiceChannel extends Channel { | ||||||
|   guild: Guild |   guild: Guild | ||||||
|   position: number |   position: number | ||||||
|   permissionOverwrites: Overwrite[] |   permissionOverwrites: Overwrite[] | ||||||
|   nsfw: boolean |  | ||||||
|   parentID?: string |   parentID?: string | ||||||
| 
 | 
 | ||||||
|   constructor(client: Client, data: GuildVoiceChannelPayload, guild: Guild) { |   constructor(client: Client, data: GuildVoiceChannelPayload, guild: Guild) { | ||||||
|  | @ -26,7 +31,6 @@ export class VoiceChannel extends Channel { | ||||||
|     this.position = data.position |     this.position = data.position | ||||||
|     this.guild = guild |     this.guild = guild | ||||||
|     this.permissionOverwrites = data.permission_overwrites |     this.permissionOverwrites = data.permission_overwrites | ||||||
|     this.nsfw = data.nsfw |  | ||||||
|     this.parentID = data.parent_id |     this.parentID = data.parent_id | ||||||
|     // TODO: Cache in Gateway Event Code
 |     // TODO: Cache in Gateway Event Code
 | ||||||
|     // cache.set('guildvoicechannel', this.id, this)
 |     // cache.set('guildvoicechannel', this.id, this)
 | ||||||
|  | @ -85,7 +89,21 @@ export class VoiceChannel extends Channel { | ||||||
|     this.position = data.position ?? this.position |     this.position = data.position ?? this.position | ||||||
|     this.permissionOverwrites = |     this.permissionOverwrites = | ||||||
|       data.permission_overwrites ?? this.permissionOverwrites |       data.permission_overwrites ?? this.permissionOverwrites | ||||||
|     this.nsfw = data.nsfw ?? this.nsfw |  | ||||||
|     this.parentID = data.parent_id ?? this.parentID |     this.parentID = data.parent_id ?? this.parentID | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   async edit(options?: ModifyVoiceChannelOption): Promise<VoiceChannel> { | ||||||
|  |     const body: ModifyVoiceChannelPayload = { | ||||||
|  |       name: options?.name, | ||||||
|  |       position: options?.position, | ||||||
|  |       permission_overwrites: options?.permissionOverwrites, | ||||||
|  |       parent_id: options?.parentID, | ||||||
|  |       bitrate: options?.bitrate, | ||||||
|  |       user_limit: options?.userLimit | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     const resp = await this.client.rest.patch(CHANNEL(this.id), body) | ||||||
|  | 
 | ||||||
|  |     return new VoiceChannel(this.client, resp, this.guild) | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -4,10 +4,16 @@ import { | ||||||
|   GuildTextChannelPayload, |   GuildTextChannelPayload, | ||||||
|   MessageOption, |   MessageOption, | ||||||
|   MessageReference, |   MessageReference, | ||||||
|  |   ModifyGuildTextChannelOption, | ||||||
|  |   ModifyGuildTextChannelPayload, | ||||||
|   Overwrite, |   Overwrite, | ||||||
|   TextChannelPayload |   TextChannelPayload | ||||||
| } from '../types/channel.ts' | } from '../types/channel.ts' | ||||||
| import { CHANNEL_MESSAGE, CHANNEL_MESSAGES } from '../types/endpoint.ts' | import { | ||||||
|  |   CHANNEL, | ||||||
|  |   CHANNEL_MESSAGE, | ||||||
|  |   CHANNEL_MESSAGES | ||||||
|  | } from '../types/endpoint.ts' | ||||||
| import { Channel } from './channel.ts' | import { Channel } from './channel.ts' | ||||||
| import { Embed } from './embed.ts' | import { Embed } from './embed.ts' | ||||||
| import { Guild } from './guild.ts' | import { Guild } from './guild.ts' | ||||||
|  | @ -164,4 +170,19 @@ export class GuildTextChannel extends TextChannel { | ||||||
|     this.topic = data.topic ?? this.topic |     this.topic = data.topic ?? this.topic | ||||||
|     this.rateLimit = data.rate_limit_per_user ?? this.rateLimit |     this.rateLimit = data.rate_limit_per_user ?? this.rateLimit | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   async edit( | ||||||
|  |     options?: ModifyGuildTextChannelOption | ||||||
|  |   ): Promise<GuildTextChannel> { | ||||||
|  |     const body: ModifyGuildTextChannelPayload = { | ||||||
|  |       name: options?.name, | ||||||
|  |       position: options?.position, | ||||||
|  |       permission_overwrites: options?.permissionOverwrites, | ||||||
|  |       parent_id: options?.parentID | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     const resp = await this.client.rest.patch(CHANNEL(this.id), body) | ||||||
|  | 
 | ||||||
|  |     return new GuildTextChannel(this.client, resp, this.guild) | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -34,14 +34,12 @@ client.on('channelUpdate', (b: EveryChannelTypes, a: EveryChannelTypes) => { | ||||||
|   if (b.type === ChannelTypes.GUILD_TEXT) { |   if (b.type === ChannelTypes.GUILD_TEXT) { | ||||||
|     const before = (b as unknown) as GuildTextChannel |     const before = (b as unknown) as GuildTextChannel | ||||||
|     const after = (a as unknown) as GuildTextChannel |     const after = (a as unknown) as GuildTextChannel | ||||||
|     console.log( |     before.send('', { | ||||||
|       before.send('', { |       embed: new Embed({ | ||||||
|         embed: new Embed({ |         title: 'Channel Update', | ||||||
|           title: 'Channel Update', |         description: `Name Before: ${before.name}\nName After: ${after.name}` | ||||||
|           description: `Name Before: ${before.name}\nName After: ${after.name}` |  | ||||||
|         }) |  | ||||||
|       }) |       }) | ||||||
|     ) |     }) | ||||||
|   } |   } | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
|  | @ -94,6 +92,26 @@ client.on('messageCreate', async (msg: Message) => { | ||||||
|       }) |       }) | ||||||
|       .join('\n') as string |       .join('\n') as string | ||||||
|     msg.channel.send('Channels List:\n' + data) |     msg.channel.send('Channels List:\n' + data) | ||||||
|  |   } else if (msg.content === '!messages') { | ||||||
|  |     const col = await msg.channel.messages.array() | ||||||
|  |     const data = col | ||||||
|  |       ?.slice(-5) | ||||||
|  |       .map((c: Message, i: number) => { | ||||||
|  |         return `${i + 1}. ${c.content}` | ||||||
|  |       }) | ||||||
|  |       .join('\n') as string | ||||||
|  |     msg.channel.send('Top 5 Message List:\n' + data) | ||||||
|  |   } else if (msg.content === '!editChannel') { | ||||||
|  |     // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
 | ||||||
|  |     const channel = msg.channel as GuildTextChannel | ||||||
|  |     const newChannel = await channel.edit({ | ||||||
|  |       name: 'gggg' | ||||||
|  |     }) | ||||||
|  |     if (newChannel.name === 'gggg') { | ||||||
|  |       msg.channel.send('Done!') | ||||||
|  |     } else { | ||||||
|  |       msg.channel.send('Failed...') | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ import { | ||||||
|   ChannelTypes, |   ChannelTypes, | ||||||
|   DMChannelPayload, |   DMChannelPayload, | ||||||
|   GroupDMChannelPayload, |   GroupDMChannelPayload, | ||||||
|   GuildChannelCategoryPayload, |   GuildCategoryChannelPayload, | ||||||
|   GuildNewsChannelPayload, |   GuildNewsChannelPayload, | ||||||
|   GuildTextChannelPayload, |   GuildTextChannelPayload, | ||||||
|   GuildVoiceChannelPayload, |   GuildVoiceChannelPayload, | ||||||
|  | @ -41,7 +41,7 @@ export type EveryChannelTypes = | ||||||
| 
 | 
 | ||||||
| export type EveryChannelPayloadTypes = | export type EveryChannelPayloadTypes = | ||||||
|   | ChannelPayload |   | ChannelPayload | ||||||
|   | GuildChannelCategoryPayload |   | GuildCategoryChannelPayload | ||||||
|   | GuildVoiceChannelPayload |   | GuildVoiceChannelPayload | ||||||
|   | EveryTextChannelPayloadTypes |   | EveryTextChannelPayloadTypes | ||||||
| 
 | 
 | ||||||
|  | @ -57,7 +57,7 @@ const getChannelByType = ( | ||||||
|         throw new Error('No Guild was provided to construct Channel') |         throw new Error('No Guild was provided to construct Channel') | ||||||
|       return new CategoryChannel( |       return new CategoryChannel( | ||||||
|         client, |         client, | ||||||
|         data as GuildChannelCategoryPayload, |         data as GuildCategoryChannelPayload, | ||||||
|         guild |         guild | ||||||
|       ) |       ) | ||||||
|     case ChannelTypes.GUILD_NEWS: |     case ChannelTypes.GUILD_NEWS: | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue