MCPcopy
hub / github.com/codebymitch/TitanBot / handleNameTemplateModal

Function handleNameTemplateModal

src/commands/JoinToCreate/jointocreate.js:367–451  ·  view source on GitHub ↗
(interaction, triggerChannel, currentConfig, client)

Source from the content-addressed store, hash-verified

365}
366
367async 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

Callers 1

handleConfigSubcommandFunction · 0.85

Calls 4

hasManageGuildPermissionFunction · 0.90
updateChannelConfigFunction · 0.90
logConfigurationChangeFunction · 0.90
successEmbedFunction · 0.90

Tested by

no test coverage detected