update custom channel discord
This commit is contained in:
@@ -6,7 +6,7 @@ export interface VoiceChannelsServiceInterface<
|
||||
createVoiceChannel(name: string): Promise<C>;
|
||||
|
||||
cloneVoiceChannel(
|
||||
user_id: string,
|
||||
user: string,
|
||||
channel: C,
|
||||
options?: { name?: string; position?: number },
|
||||
): Promise<C>;
|
||||
|
||||
@@ -7,12 +7,15 @@ import type {
|
||||
|
||||
export class DynamicVoiceChannelsService<
|
||||
C extends { name: string; id: string },
|
||||
U extends { name: string; id: string },
|
||||
> {
|
||||
private voiceChannelsService: VoiceChannelsServiceInterface<C>;
|
||||
dynamicVoiceChannels: z.output<typeof DynamicVoiceChannels>;
|
||||
validChannelIds = new Set<string>();
|
||||
dynamicVoiceChannelsMap: z.output<typeof DynamicVoiceChannelsMap>;
|
||||
createdChannelIdsSet = new Set<string>();
|
||||
private channelNumberCounter = 1;
|
||||
private usedNumbers = new Set<number>();
|
||||
|
||||
constructor(
|
||||
voiceChannelsService: VoiceChannelsServiceInterface<C>,
|
||||
@@ -30,8 +33,18 @@ export class DynamicVoiceChannelsService<
|
||||
);
|
||||
}
|
||||
|
||||
private getNextChannelNumber(): number {
|
||||
while (this.usedNumbers.has(this.channelNumberCounter)) {
|
||||
this.channelNumberCounter++;
|
||||
}
|
||||
const number = this.channelNumberCounter;
|
||||
this.usedNumbers.add(number);
|
||||
this.channelNumberCounter++;
|
||||
return number;
|
||||
}
|
||||
|
||||
async createDynamicVoiceChannel(
|
||||
user_id: string,
|
||||
user: U,
|
||||
channel_id: string,
|
||||
): Promise<C | undefined> {
|
||||
if (!this.validChannelIds.has(channel_id)) return;
|
||||
@@ -42,11 +55,14 @@ export class DynamicVoiceChannelsService<
|
||||
|
||||
if (!channel) return;
|
||||
|
||||
const channelNumber = this.getNextChannelNumber();
|
||||
|
||||
const newChannel = await this.voiceChannelsService.cloneVoiceChannel(
|
||||
user_id,
|
||||
user.id,
|
||||
channel,
|
||||
{
|
||||
name: channel.name,
|
||||
name: `${channelNumber}`,
|
||||
position: 99,
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user