Files
SpigotWatch/events/message.js
2026-02-25 18:51:11 +01:00

85 lines
2.8 KiB
JavaScript

export default {
name: "messageCreate",
async execute(client, message) {
if (message.author.bot || !message.guild) return;
if (message.content === `<@${client.bot.user.id}>`)
return message.reply(`Mein Prefix ist: \`${client.config.prefix}\``);
if (!message.content.startsWith(client.config.prefix)) return;
const args = message.content
.slice(client.config.prefix.length)
.trim()
.split(" ");
const commandName = args.shift().toLowerCase();
const command =
client.commands.get(commandName) ||
client.commands.get(client.aliases.get(commandName));
if (
!command ||
(!command.guild.includes("all") &&
!command.guild.includes(message.guild.id))
)
return;
// Cooldown check
if (client.cooldowns.has(`${message.guild.id}-${message.author.id}`)) {
if (
command.name ===
client.cooldowns.get(`${message.guild.id}-${message.author.id}`)
)
return message.reply(
`Bitte warte ${command.cooldown} Sekunde(n) bevor du diesen Befehl erneut verwendest!`
);
}
// NSFW check
if (command.nsfw && !message.channel.nsfw)
return message.reply(
"Dieser Befehl ist als NSFW markiert. Bitte verwende ihn in einem NSFW-Kanal!"
);
// Args check
if (command.args_required > 0 && args.length < command.args_required) {
if (!command.args_usage)
return message.reply("Du hast nicht genug Argumente für diesen Befehl angegeben!");
else
return message.reply(
`Du hast nicht genug Argumente für diesen Befehl angegeben! Korrekte Nutzung: \`${client.config.prefix}${command.name} ${command.args_usage}\``
);
}
// User permissions check
if (command.user_permissions?.length > 0) {
if (!message.member.permissions.has(command.user_permissions))
return message.reply(
`Du hast keine Berechtigung diesen Befehl auszuführen! \`${command.user_permissions.join("` `")}\``
);
}
// Bot permissions check
if (command.bot_permissions?.length > 0) {
if (!message.guild.members.me.permissions.has(command.bot_permissions))
return message.reply(
`Ich habe nicht die erforderlichen Berechtigungen! \`${command.bot_permissions.join("` `")}\``
);
}
// Mark as prefix command
message.isSlash = false;
command.execute(client, message, args);
client.logger.info(
`[cmd] [${message.guild.name}] [#${message.channel.name}] (${message.author.username}) ${message.content}`
);
// Update cooldowns
client.cooldowns.set(`${message.guild.id}-${message.author.id}`, command.name);
setTimeout(() => {
client.cooldowns.delete(`${message.guild.id}-${message.author.id}`);
}, command.cooldown * 1000);
},
};