#GuildScheduledEventUpdate with Fetching Subscribers
1 messages · Page 1 of 1 (latest)
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.
as in the guildScheduledEventUserAdd event is emitted?
then fetchSubscribers should be able to fetch said subscriber
how did you determine it's unable to fetch them?
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