#Star role (reward)

2 messages · Page 1 of 1 (latest)

unreal fox
#

I have programmed a code so that the person with the most messages at the end of the day (8pm) is given a role: Star of the day.
However my code doesn't work very well or it is random: it is possible that the role is given but it is not given at 8pm
@copper badger have already explained some problems in my code!
My code :

#
const { QuickDB } = require("quick.db");
const db = new QuickDB();
const STAR_ROLE_ID = '1088118341765447790';
const STAR_CHANNEL_ID = '1088122597889282179';
const { Events, EmbedBuilder } = require('discord.js');

module.exports = {
  name: Events.MessageCreate,
  once: false,
  async execute(message, client) {
    if (message.author.bot) return; // ignore les bots

    const today = new Date().toISOString().slice(0, 10);
    const memberKey = `${message.guild.id}.${message.author.id}.${today}`;

    // Incrémente le compteur de messages du membre pour aujourd'hui
    await db.add(memberKey, 1);

    // Vérifie si le membre a envoyé le plus de messages aujourd'hui
    const memberData = (await db.all()).filter((data) => data.id.startsWith(`${message.guild.id}.${message.author.id}`));
    const messageCount = memberData.reduce((acc, data) => acc + data.value, 0);
    const currentStar = await db.get(`stars.${today}`);

    if (!currentStar || messageCount > currentStar.messageCount) {
      // Retire le rôle à l'ancien star
      if (currentStar) {