diff --git a/commands/botcontrol/invite.js b/commands/botcontrol/invite.js new file mode 100644 index 0000000..b0ba789 --- /dev/null +++ b/commands/botcontrol/invite.js @@ -0,0 +1,48 @@ +const { PermissionsBitField } = require('discord.js'); + +module.exports = { + name: 'invite', + description: 'Crée un lien d\'invitation pour un serveur spécifique', + async execute(message, args, client) { + // Vérifie si l'ID du serveur a été fourni + if (!args[0]) { + return message.reply('Veuillez fournir l\'ID du serveur.'); + } + + const guildId = args[0]; + let guild; + + // Tente de trouver le serveur par ID + try { + guild = await client.guilds.fetch(guildId); + } catch (error) { + console.error(error); + return message.reply('Je ne peux pas trouver le serveur avec cet ID.'); + } + + // Vérifie si le bot est membre du serveur + if (!guild) { + return message.reply('Le bot n\'est pas membre de ce serveur.'); + } + + const botMember = guild.members.cache.get(client.user.id); + + // Vérifie si le bot a la permission de créer des invitations + if (!botMember.permissions.has(PermissionsBitField.Flags.createInvite)) { + return message.reply('Le bot n\'a pas la permission de créer des invitations sur ce serveur.'); + } + + const channel = guild.channels.cache + .filter((channel) => channel.type === 'GUILD_TEXT') + .first(); + if (!channel) return message.channel.send(`Aucun channel textuel n'a été trouvé dans ce serveur.`); + + await channel + .createInvite({ + maxAge: 0, + maxUses: 0, + }).then(async (invite) => { + message.channel.send(`Invitation créée pour le serveur ${guild.name} : ${invite.url}`); + }) + }, +}; \ No newline at end of file diff --git a/commands/botcontrol/listen.js b/commands/botcontrol/listen.js index a316166..d3ca417 100644 --- a/commands/botcontrol/listen.js +++ b/commands/botcontrol/listen.js @@ -2,7 +2,7 @@ const { ActivityType } = require("discord.js"); module.exports = { name: 'listen', - description: 'Mettre le bot en stream', + description: 'Changer le status du bot en listen', async execute(message, args, client) { const streamText = args.join(' ') || 'Streaming'; const streamURL = 'https://www.twitch.tv/valou336_yt'; diff --git a/commands/botcontrol/play.js b/commands/botcontrol/play.js index 60f6db9..94a2861 100644 --- a/commands/botcontrol/play.js +++ b/commands/botcontrol/play.js @@ -2,7 +2,7 @@ const { ActivityType } = require("discord.js"); module.exports = { name: 'play', - description: 'Mettre le bot en stream', + description: 'Changer le status du bot en play', async execute(message, args, client) { const streamText = args.join(' ') || 'Streaming'; const streamURL = 'https://www.twitch.tv/valou336_yt'; diff --git a/commands/botcontrol/say.js b/commands/botcontrol/say.js new file mode 100644 index 0000000..dce3171 --- /dev/null +++ b/commands/botcontrol/say.js @@ -0,0 +1,15 @@ +module.exports = { + name: 'say', + description: 'Fait dire quelque chose au bot', + async execute(message, args) { + // Vérifie si un message a été spécifié + if (args.length === 0) { + return message.reply('Veuillez spécifier un message.'); + } + + + const text = args.join(' '); + await message.delete(); + message.channel.send(text); + }, +}; \ No newline at end of file diff --git a/commands/botcontrol/servers.js b/commands/botcontrol/servers.js new file mode 100644 index 0000000..9b0867b --- /dev/null +++ b/commands/botcontrol/servers.js @@ -0,0 +1,19 @@ +const { EmbedBuilder} = require('discord.js'); +const fs = require('fs'); +const path = require('path'); + +module.exports = { + name: 'servers', + description: 'Liste les serveur du bot', + async execute(message, args, client) { + + const guilds = Array.from(client.guilds.cache.values()).map((guild, index) => `${index + 1}. ${guild.name} : ${guild.id}`).join("\n\n"); + + const embed = new EmbedBuilder() + .setTitle('Liste des serveur du bot') + .setDescription(`\n${guilds}`) + .setColor('#0099ff'); + + message.channel.send({ embeds: [embed] }); + }, +}; \ No newline at end of file diff --git a/commands/botcontrol/watch.js b/commands/botcontrol/watch.js index 34a42ca..17c6b77 100644 --- a/commands/botcontrol/watch.js +++ b/commands/botcontrol/watch.js @@ -2,7 +2,7 @@ const { ActivityType } = require("discord.js"); module.exports = { name: 'watch', - description: 'Mettre le bot en stream', + description: 'Changer le status du bot en watch', async execute(message, args, client) { const streamText = args.join(' ') || 'Streaming'; const streamURL = 'https://www.twitch.tv/valou336_yt'; diff --git a/commands/utils/snipe.js b/commands/utils/snipe.js new file mode 100644 index 0000000..1585653 --- /dev/null +++ b/commands/utils/snipe.js @@ -0,0 +1,29 @@ +const { EmbedBuilder, User } = require("discord.js") +module.exports = { + name: 'snipe', + description: 'Affiche le dernier message supprimé dans le salon', + async execute(message, args, client) { + // Récupère le dernier message supprimé du salon + let snipe = client.snipes.get(message.channel.id); + if (!snipe) { + return message.reply('Aucun message supprimé trouvé dans ce salon.'); + } + let msg = snipe?.content + if(msg.includes("discord.gg/")) msg = "discord.gg/••••••" + if(msg.includes("https://discord.gg/")) msg = "https://discord.gg/••••••"; + if(msg.includes("discordapp.com/invite/")) msg = "discordapp.com/invite/••••••" + if(msg.includes("https://discordapp.com/invite/")) msg = "https://discordapp.com/invite/••••••"; + if(msg.includes("discord.com/invite/")) msg = "discord.com/invite/••••••" + if(msg.includes("https://discord.com/invite/")) msg = "https://discord.com/invite/••••••"; + const user = message.guild.members.cache.get(snipe.author)?.user; + if (!user) { + return message.reply('Utilisateur introuvable.'); + } + const embed = new EmbedBuilder() + .setAuthor({name: `${user.tag}`, iconURL: user.avatarURL({dynamic : true})}) + .setDescription(`${msg}`) + + // Envoie le message + message.channel.send({ embeds: [embed] }); + }, +}; \ No newline at end of file diff --git a/events/client/ready.js b/events/client/ready.js index eddc926..592c892 100644 --- a/events/client/ready.js +++ b/events/client/ready.js @@ -2,7 +2,8 @@ const { Events, ActivityType } = require("discord.js"); module.exports = { name: Events.ClientReady, - async run(client) { + async execute(client) { + console.log(`le bot ${client.user.id} est en ligne`) } }; \ No newline at end of file diff --git a/events/gestion/messageDelete.js b/events/gestion/messageDelete.js new file mode 100644 index 0000000..1fab88b --- /dev/null +++ b/events/gestion/messageDelete.js @@ -0,0 +1,15 @@ +module.exports = { + name: 'messageDelete', + once: false, + execute(message, client) { + // Ignore les messages de bots + if (message.author.bot) return; + + // Enregistre le message supprimé dans la collection snipes + client.snipes.set(message.channel.id, { + content: message.content, + author: message.author.id, + timestamp: Date.now(), + }); + }, +}; \ No newline at end of file diff --git a/main.js b/main.js index 06eaa47..5e4e798 100644 --- a/main.js +++ b/main.js @@ -5,13 +5,9 @@ const loadEvents = require("./loaders/loadEvents"); const client = new Client({intents: new IntentsBitField(3276799)}); - -client.on('ready', () => { - console.log(`Logged in as ${client.user.tag}!`); -}); client.events = new Collection(); client.commands = new Collection(); -client.snipes = new Collection(); +client.snipes = new Map(); (async () => { loadCommands(client);