TypeError: Cannot read properties of undefined (reading 'id')
Hey, I want to make a setlan command for my bot, when it sends the embed, it seems that the collector collects something itsself and the bot gives a "wtf" reply. Can anyone help me fix it?
DiscordJS version: 14.11.0
Code:
DiscordJS version: 14.11.0
Code:
const { SlashCommandBuilder } = require("@discordjs/builders");
const {
EmbedBuilder,
ActionRowBuilder,
ButtonBuilder,
ComponentType,
} = require("discord.js");
module.exports = {
data: new SlashCommandBuilder()
.setName("setlan")
.setDescription("Set Your Preferred Language!"),
async execute(interaction, client, profileData, language) {
const embed = new EmbedBuilder()
.setTitle(`${language.changing_language}`)
.setDescription(`> ${language.changing_language_description}`)
.setColor("#FFE700");
const row = new ActionRowBuilder().addComponents(
new ButtonBuilder()
.setCustomId("english")
.setLabel("English")
.setEmoji(":flag_gb:")
.setStyle("Primary"),
new ButtonBuilder()
.setCustomId("persian")
.setLabel("Persian")
.setEmoji(":flag_ir:")
.setStyle("Secondary"),
new ButtonBuilder()
.setCustomId("close_window")
.setLabel("Close window")
.setEmoji("⛔")
.setStyle("Danger")
);
const collector = await interaction.channel.createMessageCollector({
time: 300000,
componentType: ComponentType.Button,
});
collector.on("collect", (i) => {
if (i.user.id === interaction.user.id) {
if (i.customId == "english") {
profileData.lang = "English";
profileData.save();
i.reply({
content: `${language.change_language_success.replace(
"{language}",
"English"
)}`,
});
collector.stop();
} else if (i.customId == "persian") {
profileData.lang = "Persian";
profileData.save();
i.reply({
content: `${language.change_language_success.replace(
"{language}",
"فارسی"
)}`,
});
collector.stop();
} else if (i.customId == "close_window") {
interaction.deleteReply();
i.deferUpdate();
collector.stop();
} else {
i.reply({ content: "wtf", ephemeral: true });
}
} else {
i.reply({
content: `${language.these_buttons_arent_for_you}`,
ephemeral: true,
});
}
});
collector.on("end", (collected) => {
row.components[0].setDisabled(true);
row.components[1].setDisabled(true);
row.components[2].setDisabled(true);
interaction.editReply({ embeds: [embed], components: [row] });
});
await interaction.reply({ embeds: [embed], components: [row] });
},
};const { SlashCommandBuilder } = require("@discordjs/builders");
const {
EmbedBuilder,
ActionRowBuilder,
ButtonBuilder,
ComponentType,
} = require("discord.js");
module.exports = {
data: new SlashCommandBuilder()
.setName("setlan")
.setDescription("Set Your Preferred Language!"),
async execute(interaction, client, profileData, language) {
const embed = new EmbedBuilder()
.setTitle(`${language.changing_language}`)
.setDescription(`> ${language.changing_language_description}`)
.setColor("#FFE700");
const row = new ActionRowBuilder().addComponents(
new ButtonBuilder()
.setCustomId("english")
.setLabel("English")
.setEmoji(":flag_gb:")
.setStyle("Primary"),
new ButtonBuilder()
.setCustomId("persian")
.setLabel("Persian")
.setEmoji(":flag_ir:")
.setStyle("Secondary"),
new ButtonBuilder()
.setCustomId("close_window")
.setLabel("Close window")
.setEmoji("⛔")
.setStyle("Danger")
);
const collector = await interaction.channel.createMessageCollector({
time: 300000,
componentType: ComponentType.Button,
});
collector.on("collect", (i) => {
if (i.user.id === interaction.user.id) {
if (i.customId == "english") {
profileData.lang = "English";
profileData.save();
i.reply({
content: `${language.change_language_success.replace(
"{language}",
"English"
)}`,
});
collector.stop();
} else if (i.customId == "persian") {
profileData.lang = "Persian";
profileData.save();
i.reply({
content: `${language.change_language_success.replace(
"{language}",
"فارسی"
)}`,
});
collector.stop();
} else if (i.customId == "close_window") {
interaction.deleteReply();
i.deferUpdate();
collector.stop();
} else {
i.reply({ content: "wtf", ephemeral: true });
}
} else {
i.reply({
content: `${language.these_buttons_arent_for_you}`,
ephemeral: true,
});
}
});
collector.on("end", (collected) => {
row.components[0].setDisabled(true);
row.components[1].setDisabled(true);
row.components[2].setDisabled(true);
interaction.editReply({ embeds: [embed], components: [row] });
});
await interaction.reply({ embeds: [embed], components: [row] });
},
};