client.on('interactionCreate', async interaction => { if (!interaction.isSelectMenu() && !interaction.isButton() && !interaction.isModalSubmit()) return; if (interaction.isSelectMenu()) { if (interaction.customId === 'select') { await interaction.deferReply({ ephemeral: true }); let ticketType; let parentId; let roleId; let emojis; switch (interaction.values[0]) { case 'supp': ticketType = 'supporto'; parentId = '1118981329804083220'; roleId = '1118825118253207682'; emojis = { close: '⚠️', settings: '⚙️', claim: '📌' }; break; case 'partner': ticketType = 'partner'; parentId = '1118981032507609199'; roleId = '1118825284553166848'; emojis = { close: '🔒', settings: '⚙️', claim: '🤝' }; break; case 'bandi': ticketType = 'bandi'; parentId = '1118985840526364672'; roleId = '1118825293499596871'; emojis = { close: '📜', settings: '⚙️', claim: '📝' }; break; default: break; } const retorno = new MessageEmbed() .setDescription(`⚠️ <@${interaction.user.id}> Hai già aperto un ticket.`) .setColor("#2f3136"); const channels = interaction.guild.channels.cache.find(c => c.topic === `id utente・${interaction.user.id}`); if (channels) { await interaction.editReply({ embeds: [retorno] }); return; } const channel = await interaction.guild.channels.create(`📁・${ticketType}-${interaction.user.username}`, { parent: parentId, topic: `id utente・${interaction.user.id}`, permissionOverwrites: [ { id: interaction.user.id, allow: ['SEND_MESSAGES', 'VIEW_CHANNEL', 'ATTACH_FILES'], }, { id: interaction.guild.roles.cache.get(roleId), allow: ['SEND_MESSAGES', 'VIEW_CHANNEL'], }, { id: interaction.guild.id, deny: ['VIEW_CHANNEL'], }, ], type: 'text', }); const ticketEmbed = new MessageEmbed() .setDescription(`<@${interaction.user.id}> Ticket creato nel canale <#${channel.id}>`) .setColor("#2f3136"); await interaction.editReply({ embeds: [ticketEmbed] }); channel.send(`<@${interaction.user.id}> - <@&${roleId}>`); const embedd = new MessageEmbed() .setAuthor(`${interaction.guild.name} Tickets`, 'https://media.discordapp.net/attachments/864098025722871828/942174733594665000/cm.png', 'https://discord.gg/crosshairmod') .setDescription(`<@${interaction.user.id}>, Benvenuto nel TICKET ${ticketType.toUpperCase()}`) .setColor("#2f3136") .setFooter("Bot developed by VDEVHD"); const ticketf = new MessageButton() .setLabel('Chiudi il ticket') .setStyle('SECONDARY') .setCustomId('fecharticket') .setEmoji(emojis.close); const exx = new MessageButton() .setLabel('Settings Staff') .setStyle('SECONDARY') .setCustomId('extr') .setEmoji(emojis.settings); const claim = new MessageButton() .setLabel('Claim Ticket') .setStyle('SECONDARY') .setCustomId('cl') .setEmoji(emojis.claim); const buttons = new MessageActionRow().addComponents(ticketf, exx, claim); channel.send({ embeds: [embedd], components: [buttons] }); if (ticketType === 'supporto') { channel.send({ content: `Ciao <@${interaction.user.id}>, fai il comando /fivem e vedi se riesci a trovare l'errore`, ephemeral: true }); } else if (ticketType === 'partner') { const embed = new MessageEmbed() .setDescription(`Ciao <@${interaction.user.id}>, ci assicuri che hai fatto la <#1118981659740602408> e letto i <#1118825664775196692>?`); channel.send({ embeds: [embed] }); } } } else if (interaction.isButton()) { switch (interaction.customId) { case 'fecharticket': if (!interaction.member.roles.cache.has("1118825118253207682")) return interaction.reply({ content: "Non hai il permesso", ephemeral: true }); let channel2 = interaction.message.channel.topic.split("・")[1]; const user6 = client.users.cache.get(channel2); await interaction.channel.permissionOverwrites.set([ { id: user6, deny: ['SEND_MESSAGES', 'VIEW_CHANNEL'], }, { id: interaction.guild.roles.cache.get('1118825118253207682'), allow: ['SEND_MESSAGES', 'VIEW_CHANNEL'], }, { id: interaction.guild.id, deny: ['VIEW_CHANNEL'], }, ]); interaction.channel.setName(`⛔・Chiusura-ticket`); const chiuso = new MessageEmbed() .setColor("2f3136") .setDescription(`Il Ticket verrà chiuso da <@${interaction.user.id}>`); const ticketc = new MessageButton() .setLabel('Conferma chiusura') .setStyle('SECONDARY') .setCustomId('fcticket') .setEmoji('1167907066204127253'); const bt = new MessageActionRow().addComponents(ticketc); interaction.message.channel.send({ embeds: [chiuso], components: [bt] }); break; case 'fcticket': const logticket2 = interaction.message.guild.channels.cache.find(channel => channel.name === `︱🕵🏽・transcript`); channel2 = interaction.channel.topic.split("・")[1]; const user = client.users.cache.get(channel2); setTimeout(() => { const currentdate = new Date(); const datetime = ``; interaction.message.channel.messages.fetch().then(async (messages) => { const output = messages.map(m => `${new Date(m.createdAt).toLocaleString('pt-br')} - ${m.author.tag}: ${m.attachments.size > 0 ? m.attachments.first().proxyURL : m.content}`).join('\n'); let response; try { response = await sourcebin.create([ { name: ' ', content: output, languageId: 'text', }, ], { title: `Ticket Logs`, description: 'Crosshairmod Log - https://discord.gg/crosshairmod', }); } catch (e) { console.log(e); return; } const row = new MessageActionRow() .addComponents( new MessageButton() .setLabel('Transcript URL') .setStyle('LINK') .setEmoji('1004704418295459840') .setURL(response.url) ); function readTicketCountFromFile() { try { const data = fs.readFileSync('ticketCount.json', 'utf8'); return JSON.parse(data) || {}; } catch (err) { return {}; } } function incrementTicketCount(staffId) { const ticketChiusiStaffCount = readTicketCountFromFile(); ticketChiusiStaffCount[staffId] = (ticketChiusiStaffCount[staffId] || 0) + 1; writeTicketCountToFile(ticketChiusiStaffCount); return ticketChiusiStaffCount[staffId]; } function writeTicketCountToFile(count) { try { fs.writeFileSync('ticketCount.json', JSON.stringify(count), 'utf8'); } catch (err) { console.error(err); } } let ticketChiusiStaffCount = readTicketCountFromFile(); try { const logl = interaction.message.guild.channels.cache.find(channel => channel.name === `︱🕵🏽・conteggio`); channel2 = interaction.channel.topic.split("・")[1]; const user = client.users.cache.get(channel2); const staffMember = interaction.user; const ticketCount = incrementTicketCount(staffMember.id); const log = new MessageEmbed() .setColor("#3498db") .setTitle(`${interaction.guild.name} - Conteggio Ticket`) .setDescription(`Lo staff ha chiuso un ticket`) .addField('Membro dello staff', `<@${staffMember.id}>`, true) .addField('Ticket aperto da', `<@${user.id}>`, true) .addField('Conteggio totale', ticketCount.toString(), true) .setFooter('https://discord.gg/crosshairmod'); logl.send({ embeds: [log] }); const embedlog = new Discord.MessageEmbed() .setColor("2f3136") .setAuthor(`${interaction.guild.name} Tickets`, ``, 'https://discord.gg/crosshairmod') .addField(`Ticket chiuso da:`, `<@${interaction.user.id}>`, true) .addField('Ticket aperto da_', `<@${user.id}>`, true) .addField('Ticket Transcript:', `[\`📄 Clicca qui\`](${response.url})`, true) .addField('Chiuso:', `${datetime}`, true) .setFooter("Bot developed by VDEVHD") logticket2.send({ embeds: [embedlog], components: [row] }), user.send({ embeds: [embedlog] }) } catch (err) { console.log(err) }}) }) }} })