(guild, member, options = {})
| 480 | } |
| 481 | |
| 482 | export async function createTemporaryChannel(guild, member, options = {}) { |
| 483 | try { |
| 484 | if (!guild || !member) { |
| 485 | throw new TitanBotError( |
| 486 | 'Invalid guild or member', |
| 487 | ErrorTypes.VALIDATION |
| 488 | ); |
| 489 | } |
| 490 | |
| 491 | const { |
| 492 | nameTemplate, |
| 493 | userLimit, |
| 494 | bitrate, |
| 495 | parentId |
| 496 | } = options; |
| 497 | |
| 498 | if (nameTemplate) { |
| 499 | validateChannelNameTemplate(nameTemplate); |
| 500 | } |
| 501 | if (userLimit !== undefined) { |
| 502 | validateUserLimit(userLimit); |
| 503 | } |
| 504 | if (bitrate !== undefined) { |
| 505 | validateBitrate(bitrate / 1000); |
| 506 | } |
| 507 | |
| 508 | const channelName = formatChannelName(nameTemplate || '{username}\'s Room', { |
| 509 | username: member.user.username, |
| 510 | displayName: member.displayName, |
| 511 | userTag: member.user.tag, |
| 512 | guildName: guild.name |
| 513 | }); |
| 514 | |
| 515 | const tempChannel = await guild.channels.create({ |
| 516 | name: channelName, |
| 517 | type: ChannelType.GuildVoice, |
| 518 | parent: parentId, |
| 519 | userLimit: userLimit === 0 ? undefined : userLimit, |
| 520 | bitrate: bitrate || 64000, |
| 521 | permissionOverwrites: [ |
| 522 | { |
| 523 | id: member.id, |
| 524 | allow: [PermissionFlagsBits.Connect, PermissionFlagsBits.Speak, PermissionFlagsBits.PrioritySpeaker, PermissionFlagsBits.MoveMembers] |
| 525 | }, |
| 526 | { |
| 527 | id: guild.id, |
| 528 | allow: [PermissionFlagsBits.Connect, PermissionFlagsBits.Speak] |
| 529 | } |
| 530 | ] |
| 531 | }); |
| 532 | |
| 533 | logger.info(`Created temporary voice channel ${tempChannel.name} (${tempChannel.id}) for user ${member.user.tag}`); |
| 534 | |
| 535 | return { |
| 536 | id: tempChannel.id, |
| 537 | name: tempChannel.name, |
| 538 | ownerId: member.id |
| 539 | }; |
nothing calls this directly
no test coverage detected