const { Events, MessageFlags } = require("discord.js"); require("dotenv").config(); const { client, mClient } = require("../index"); const prefix = process.env.D_Prefix; const db = mClient.db(process.env.M_DB); module.exports = { name: Events.MessageCreate, once: false, async execute(message) { if (message.author.bot) return; /* * Daily number handler * Only does something if Ersti/Zweiti/Dritti is detected. */ if (message.channelId === "353902391021535244") { const numbered = { Erst: "Ersti", Zweit: "Zweiti", Dritt: "Dritti" }; const found = Object.entries(numbered).find(([stem]) => new RegExp(`\\b\\w*${stem}\\w*\\b`, "i").test(message.content) )?.[1]; if (found) { const numberedColl = db.collection("items_daily_numbers"); const today = new Date().toLocaleDateString("en-CA", { timeZone: "Europe/Berlin" }); await numberedColl.findOneAndUpdate( { date: today }, { $setOnInsert: { date: today, positions: { Ersti: null, Zweiti: null, Dritti: null } } }, { upsert: true } ); const result = await numberedColl.findOneAndUpdate( { date: today, [`positions.${found}`]: null, "positions.Ersti.userId": { $ne: message.author.id }, "positions.Zweiti.userId": { $ne: message.author.id }, "positions.Dritti.userId": { $ne: message.author.id } }, { $set: { [`positions.${found}`]: { userId: message.author.id, timestamp: new Date() } } }, { returnDocument: "after" } ); if (!result) { await message.reply({ content: "❌ Du kannst pro Tag nur eine Position beanspruchen, und sie muss noch frei sein.", flags: MessageFlags.Ephemeral }); } else { await message.reply({ content: `✅ Du bist ${found}! :point_right: :point_left: <@${message.author.id}>`, flags: MessageFlags.Ephemeral }); } // Only stop here if this was actually a number claim. return; } } /* * Command handler */ if (!message.content.startsWith(prefix)) return; const args = message.content .slice(prefix.length) .trim() .split(/ +/); const cmd = args.shift().toLowerCase(); let command = client.legacyCommands.get(cmd); if (!command) { command = client.aliases.get(cmd) ? client.legacyCommands.get(client.aliases.get(cmd)) : null; } if (!command) return; try { await command.execute(message, args); } catch (error) { console.error(error); } } };