update custom channel discord

This commit is contained in:
mo
2026-03-17 10:32:22 +01:00
parent e4425b23be
commit 13fd3d5812
5 changed files with 30 additions and 7 deletions

View File

@@ -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>;

View File

@@ -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,
},
);