const { Client, GatewayIntentBits, MessageAttachment, MessageCreate, MessageEmbed, MessageActionRow, MessageButton, } = require('discord.js'); const { EmbedBuilder } = require('discord.js'); const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers, GatewayIntentBits.GuildVoiceStates, ] }); const fs = require('fs'); const token = ''; // Sostituisci con il tuo token const prefix = '/'; // Prefisso dei comandi const welcomeChannelID = ''; // Sostituisci con l'ID del canale di benvenuto const modLogChannelID = ''; // Sostituisci con l'ID del canale di moderazione client.on('ready', () => { console.log(`Il bot è online come ${client.user.tag}`); }); client.on('messageCreate', async (message) => { if (message.author.bot) return; if (message.content.startsWith(prefix)) { const args = message.content.slice(prefix.length).trim().split(/ +/); const command = args.shift().toLowerCase(); if (command === 'clear') { if (!args[0]) return message.reply('Specifica la quantità di messaggi da cancellare.'); const amount = parseInt(args[0]) + 1; if (isNaN(amount)) return message.reply('La quantità specificata non è valida.'); message.channel.bulkDelete(amount, true).catch((err) => { console.error(err); message.channel.send('Si è verificato un errore durante la cancellazione dei messaggi.'); }); console.log('Comando clear eseguito!'); } const wordsToFilter = ['word', 'word', 'word', 'word', 'word', 'word']; for (const word of wordsToFilter) { if (message.content.toLowerCase().includes(word)) { message.delete(); message.reply('Il tuo messaggio contiene una parola vietata.'); message.member.ban({ reason: 'Parola vietata nel messaggio' }) .then((member) => { message.channel.send(`${member.user.tag} è stato bannato per utilizzo di parole vietate.`); logBan(member, message.author, 'Parola vietata nel messaggio'); }) .catch((error) => console.error(error)); break; } } } if (command.roles) { const member = message.guild.member.cache.get(message.author.id); if (!member.roles.cache.some(r => r.name === command.role)) { return message.reply('Non puoi eseguire questo comando! ') } } }); client.on('messageCreate', async (message) => { // Resto del tuo codice per gestire i comandi, il filtro delle parole, ecc. }); client.on('guildMemberAdd', async (member) => { const welcomeChannel = await client.channels.fetch(''); //ID const roleID = ''; // Change for your role id member.roles.add(roleID); if (welcomeChannel) { const welcomeEmbed = new EmbedBuilder() .setColor('#e3c57b') .setTitle('Benvenuto/a!') .setDescription(`Benvenuto/a su ${member.guild.name}, ${member}!`) .setThumbnail(member.user.displayAvatarURL().toString()) //url here .addFields( { name: 'Regular field title', value: 'Some value here' }, { name: '\u200B', value: '\u200B' }, { name: 'Inline field title', value: 'Some value here', inline: true }, { name: 'Inline field title', value: 'Some value here', inline: true }, { name: 'Inline field title', value: 'Some value here', inline: true } ) .setImage('https://usagif.com/wp-content/uploads/gifs/sun-61.gif') //Here the URL is for a large image .setTimestamp() .setFooter({ text: 'Some footer text here', iconURL: 'https://i.ibb.co/gPbVWmx/Whats-App-Image-2024-01-30-at-23-23-42.jpg' }); welcomeChannel.send({ embeds: [welcomeEmbed] }); } }); function logBan(member, executor, reason) { const modLogChannel = client.channels.cache.get(modLogChannelID); if (modLogChannel) { const logMessage = `${executor.tag} ha bannato ${member.user.tag} per il motivo: ${reason}`; modLogChannel.send(logMessage); } } const supportChannelID = ''; // Sostituisci con l'ID del canale di supporto client.on('ready', async () => { // Creazione dell'embed per il ticket const ticketEmbed = new MessageEmbed() .setColor('#e3c57b') .setTitle('Ticket di Supporto') .setDescription('Clicca sul pulsante qui sotto per aprire un nuovo ticket di supporto.') .setTimestamp(); // Aggiunta del pulsante per aprire un nuovo ticket const openTicketButton = new MessageButton() .setCustomId('open_ticket') .setLabel('Apri Ticket') .setStyle('PRIMARY'); // Aggiunta del pulsante all'embed ticketEmbed.components = [new MessageActionRow().addComponents(openTicketButton)]; // Invio dell'embed nel canale di supporto const supportChannel = await client.channels.fetch(supportChannelID); if (supportChannel) { supportChannel.send({ content: 'Nuovo Ticket di Supporto:', embeds: [ticketEmbed] }); } }); client.on('interactionCreate', async (interaction) => { if (!interaction.isButton()) return; // Azioni del bottone if (interaction.customId === 'open_ticket') { // Creazione del ticket come hai già fatto prima const ticketChannel = await interaction.guild.channels.create(`ticket-${interaction.user.username}`, { type: 'text', parent: ticketCategoryID, permissionOverwrites: [ { id: interaction.guild.id, deny: ['VIEW_CHANNEL'], }, { id: interaction.user.id, allow: ['VIEW_CHANNEL'], }, ], }); // Invia un messaggio di benvenuto nel ticket const welcomeEmbed = new MessageEmbed() .setColor('#e3c57b') .setTitle('Benvenuto nel tuo ticket!') .setDescription('Un membro del nostro staff ti assisterà al più presto. Per chiudere il ticket, puoi utilizzare il comando `/close`.') .setTimestamp(); ticketChannel.send({ embeds: [welcomeEmbed] }); // Aggiungi pulsante per chiudere il ticket const closeRow = new MessageActionRow().addComponents( new MessageButton() .setCustomId('close_ticket') .setLabel('Chiudi Ticket') .setStyle('DANGER') ); ticketChannel.send({ content: 'Clicca sul pulsante per chiudere il ticket:', components: [closeRow] }); // Rispondi all'interazione interaction.reply({ content: `Il tuo ticket è stato creato! Entra in ${ticketChannel}`, ephemeral: true }); } }); client.login(token);