Using a Function to Respond

The better and more organized method of responding to embeds by utilizing an asynchronous function.

Call the Function

bot.js
if (command === 'help') {
    const description = 'description here';
    const embed = new Discord.MessageEmbed()
        .setTitle("Echo!")
        .setThumbnail(interaction.member.user.displayAvatarURL)
        .setDescription(description)
        .setAuthor(interaction.member.user.username);
        
    client.api.interactions(interaction.id, interaction.token).callback.post({
        data: {
            type: 4,
            data: await createAPIMessage(interaction, embed, Discord, client)
        }
    });
}

The Function

This code goes outside the if statement, inside the "Receiving the Event" block.

bot.js
async function createAPIMessage(interaction, content, D, client) {
    const apiMessage = await D.APIMessage.create(client.channels.resolve(interaction.channel_id), content)
        .resolveData()
        .resolveFiles();
    
    return {
        ...apiMessage.data,
        files: apiMessage.files
    };
}

Complete Example

Here's a complete sample for you to simply copy-paste and utilize:

bot.js
if (command === 'help') {
    // Here you could do anything. In this sample, I reply with an api interaction
    const description = 'description here';
    const embed = new Discord.MessageEmbed()
        .setTitle("Echo!")
        .setThumbnail(interaction.member.user.displayAvatarURL)
        .setDescription(description)
        .setAuthor(interaction.member.user.username);

    client.api.interactions(interaction.id, interaction.token).callback.post({
        data: {
            type: 4,
            data: await createAPIMessage(interaction, embed, Discord, client)
        }
    });
    
    
async function createAPIMessage(interaction, content, D, client) {
    const apiMessage = await D.APIMessage.create(client.channels.resolve(interaction.channel_id), content)
        .resolveData()
        .resolveFiles();

    return {
        ...apiMessage.data,
        files: apiMessage.files
    };
}

Last updated

Was this helpful?