Using a Function to Respond

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

All the code below goes inside the "Receiving the Event" block.

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