(interaction, triggerChannel, currentConfig, client)
| 365 | } |
| 366 | |
| 367 | async function handleNameTemplateModal(interaction, triggerChannel, currentConfig, client) { |
| 368 | try { |
| 369 | const TEMPLATE_OPTIONS = [ |
| 370 | { label: "{username}'s Room (Default)", value: "{username}'s Room" }, |
| 371 | { label: "{username}'s Channel", value: "{username}'s Channel" }, |
| 372 | { label: "{username}'s Lounge", value: "{username}'s Lounge" }, |
| 373 | { label: "{username}'s Space", value: "{username}'s Space" }, |
| 374 | { label: "{displayName}'s Room", value: "{displayName}'s Room" }, |
| 375 | { label: "{username}'s VC", value: "{username}'s VC" }, |
| 376 | { label: "{username}'s Music Room", value: "{username}'s Music Room" }, |
| 377 | { label: "{username}'s Gaming Room", value: "{username}'s Gaming Room" }, |
| 378 | { label: "{username}'s Chat Room", value: "{username}'s Chat Room" }, |
| 379 | { label: "{username}'s Private Room", value: "{username}'s Private Room" }, |
| 380 | ]; |
| 381 | |
| 382 | const currentTemplate = currentConfig.channelConfig?.nameTemplate |
| 383 | || currentConfig.channelNameTemplate |
| 384 | || "{username}'s Room"; |
| 385 | |
| 386 | const templateSelect = new StringSelectMenuBuilder() |
| 387 | .setCustomId('template') |
| 388 | .setPlaceholder('Pick a name template...') |
| 389 | .setOptions( |
| 390 | TEMPLATE_OPTIONS.map(o => ({ |
| 391 | label: o.label, |
| 392 | value: o.value, |
| 393 | default: o.value === currentTemplate, |
| 394 | })), |
| 395 | ); |
| 396 | |
| 397 | const templateLabel = new LabelBuilder() |
| 398 | .setLabel('Channel name template') |
| 399 | .setStringSelectMenuComponent(templateSelect); |
| 400 | |
| 401 | const modal = new ModalBuilder() |
| 402 | .setCustomId(`jtc_name_modal_${triggerChannel.id}`) |
| 403 | .setTitle('Channel Name Template') |
| 404 | .addLabelComponents(templateLabel); |
| 405 | |
| 406 | await interaction.showModal(modal); |
| 407 | |
| 408 | const modalSubmission = await interaction.awaitModalSubmit({ |
| 409 | filter: (i) => i.customId === `jtc_name_modal_${triggerChannel.id}` && i.user.id === interaction.user.id, |
| 410 | time: 60000 |
| 411 | }); |
| 412 | |
| 413 | if (!hasManageGuildPermission(modalSubmission.member)) { |
| 414 | await modalSubmission.reply({ |
| 415 | content: '❌ You need **Manage Server** permission to modify these settings.', |
| 416 | flags: MessageFlags.Ephemeral |
| 417 | }); |
| 418 | return; |
| 419 | } |
| 420 | |
| 421 | const [newTemplate] = modalSubmission.fields.getStringSelectValues('template'); |
| 422 | |
| 423 | await updateChannelConfig(client, interaction.guild.id, triggerChannel.id, { |
| 424 | nameTemplate: newTemplate |
no test coverage detected