#GuildScheduledEventUpdate with Fetching Subscribers

1 messages · Page 1 of 1 (latest)

kindred vine
#

Yeah, you are right. It returns event's id, user and guild member.

#

Let me try it.

#

@gentle kayak, the problem is:
I am trying to subscribe to event with my alt too, but it only reads my "interested" interaction.

#

Although, mine gives duplicated error with MongoDB, but that is another problem I have to solve later on.

gentle kayak
kindred vine
# gentle kayak as in the `guildScheduledEventUserAdd` event is emitted? then `fetchSubscribers`...

Well, I just tried this code block for UserAdd event:

import { Events } from "discord.js";
import chalk from "chalk";
import UserForScheduledEvents from "../../schemas/User.js";

export default {
    name: Events.GuildScheduledEventUserAdd,
    once: false,
    execute: async (guildScheduledEvent, user) => {
        const newUser = new UserForScheduledEvents({
            userId: user.id,
            guildScheduledEventId: guildScheduledEvent.id,
        });

        try {
            await newUser.save();
            console.log(
                chalk.greenBright(
                    `${user.tag} has joined the event ${guildScheduledEvent.name}`,
                ),
            );
        } catch (error) {
            console.error(error);
        }
    },
};
#

And this for Update event:

import { Events, GuildScheduledEventStatus } from "discord.js";
import chalk from "chalk";
import UserForScheduledEvents from "../../schemas/User.js";

export default {
    name: Events.GuildScheduledEventUpdate,
    once: false,
    execute: async (oldGuildScheduledEvent, newGuildScheduledEvent) => {
        if (
            newGuildScheduledEvent.status === GuildScheduledEventStatus.Active
        ) {
            try {
                const guild = newGuildScheduledEvent.guild;

                const subscribers =
                    await newGuildScheduledEvent.fetchSubscribers();

                const joinedUserIDs = subscribers.map(
                    (subscriber) => subscriber.user.id,
                );
                console.log(chalk.yellowBright("Joined Users:"));
                console.log(joinedUserIDs);

                const fetchedUsers = await Promise.all(
                    joinedUserIDs.map((userId) => guild.members.fetch(userId)),
                );

                const validUsers = fetchedUsers.filter((user) => user);
                console.log(chalk.yellowBright("Valid Users:"));
                console.log(validUsers);

                const randomUser =
                    validUsers[Math.floor(Math.random() * validUsers.length)];
                console.log(chalk.yellowBright("Random User:"));
                console.log(randomUser);

                oldGuildScheduledEvent
                    .edit({ description: `${randomUser.id}` })
                    .then((guildScheduledEvent) =>
                        console.log(guildScheduledEvent),
                    )
                    .catch(console.error);
            } catch (error) {
                console.error(error);
            }
        }
    },
};
#

also I don't know why but my console is being spammed