Basic Bot setup
This commit is contained in:
73
src/events/interactionCreate/handleCommands.ts
Normal file
73
src/events/interactionCreate/handleCommands.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
import { Client, Interaction } from "discord.js";
|
||||
import { devs, testServer } from "../../../config.json"
|
||||
import getLocalCommands from "../../utils/getLocalCommands"
|
||||
import CommandInterface from "../../utils/commandInterface";
|
||||
|
||||
export default async (client: Client<true>, interaction: Interaction) => {
|
||||
if(!interaction.isChatInputCommand()) return;
|
||||
|
||||
const localCommands = await getLocalCommands() as CommandInterface[];
|
||||
|
||||
try {
|
||||
const commandObject = localCommands.find((cmd) => cmd.name == interaction.commandName);
|
||||
|
||||
if(!commandObject) return;
|
||||
|
||||
if(commandObject.devOnly){
|
||||
if(!devs.includes(interaction.user.id)) {
|
||||
interaction.reply({
|
||||
content: "Nur Developer können diesen Befehl ausführen!",
|
||||
ephemeral: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if(commandObject.testOnly){
|
||||
if(!(interaction.guildId === testServer)) {
|
||||
interaction.reply({
|
||||
content: "Diese Command kann bisher nur im Hauseigenden Test-Discord genutzt werden!",
|
||||
ephemeral: true,
|
||||
})
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if(commandObject.permissionsRequired?.length){
|
||||
for(const permission of commandObject.permissionsRequired){
|
||||
if(!interaction.memberPermissions?.has(permission)){
|
||||
interaction.reply({
|
||||
content: "Dir fehlen die Nötigen Berechtigungen zum Ausführen dieses Commands!",
|
||||
ephemeral: true,
|
||||
})
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(commandObject.botPermissions?.length){
|
||||
for(const permission of commandObject.botPermissions){
|
||||
const bot = interaction.guild?.members.me;
|
||||
|
||||
if(!bot?.permissions.has(permission)){
|
||||
interaction.reply({
|
||||
content: "Ich habe nicht genug Rechte um dies Auszuführen! Benötigt: " + commandObject.botPermissions,
|
||||
ephemeral: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(commandObject.onlyServerCommand){
|
||||
if(!interaction.inGuild()){
|
||||
interaction.reply("Dieser Command kann nur in einem Server ausgefürt werden!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
await commandObject.callback(client, interaction);
|
||||
} catch (error) {
|
||||
console.log(`Es gab einen Fehler den Comand auszuführen | ${error}`);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user