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:
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] });
  },
};
Was this page helpful?