Discord.js v14 TypeError when accessing embed footer properties

I’m encountering the same TypeError repeatedly in my Discord bot script that uses discord.js v14. The error message states TypeError: Cannot read properties of undefined (reading 'get'), and I’m struggling to identify the issue.

Here’s the part of my code that’s causing the problem:

let embedMessage = new EmbedBuilder(
  interaction.message.embeds[0]
).setColor(0x00FF00)
.setFooter({
  text: client.user.tag
});

interaction.message.edit({
  embeds: [embedMessage],
  components: [],
});

let memberUser = interaction.guild.members.cache.then(
  embedMessage.footer.get(client.user.tag)
);

This error occurs in the last line when I try to access the footer. I’m relatively new to discord.js v14, so I may be overlooking something simple. Any assistance would be appreciated!

You’re misunderstanding how embed footers work in discord.js v14. The footer property isn’t a collection with a get() method - it’s just an object with text and maybe an icon URL. When you use setFooter({ text: client.user.tag }), you’re only setting plain text. There’s no searchable collection. The line embedMessage.footer.get(client.user.tag) doesn’t work because footers don’t have a get method. If you want to retrieve a guild member, use the guild’s member cache: interaction.guild.members.cache.get(client.user.id). You need the user ID, not the tag. I hit the same confusion migrating from v13 to v14. The embed structure changes threw me off at first. Check the updated docs since tons of methods and properties changed between versions.

there’s another issue too - you’re using .then() on guild members cache, but that’s not a promise. just do let memberUser = interaction.guild.members.cache.get(client.user.id) directly. others covered the footer issue, but that .then() part will break your script

The issue is you’re confused about what embedMessage.footer actually is. After calling setFooter(), the footer becomes a plain object with text and iconURL properties - not a collection with methods like get(). When you try embedMessage.footer.get(client.user.tag), you’re calling a method that doesn’t exist on a basic object. I hit the same problem when moving to v14 since embed property access changed a lot. If you want the bot’s member object from the guild, just use interaction.guild.members.cache.get(client.user.id) directly instead of trying to extract it through the embed footer. The footer text is just a display string, not a reference to actual Discord objects.

The problem’s this line: embedMessage.footer.get(client.user.tag). Footer doesn’t have a get method - you’re mixing up embed operations with member cache stuff.

Footer is just text, not something you can search through. Want the member object? Grab it from the guild:

let memberUser = interaction.guild.members.cache.get(client.user.id);

Honestly though, managing Discord bots gets old fast with all these API quirks. I’ve switched to automating Discord stuff through Latenode instead of writing custom bot code.

Latenode lets you build visual workflows for Discord interactions, member management, and embeds without wrestling with discord.js version changes and constant debugging. You can trigger actions from Discord events and hook them up to other services easily.

The visual interface makes tracking your Discord automation way simpler, plus you don’t have to deal with syntax errors or API changes breaking everything.