不和谐JS |使用命令编辑嵌入

时间:2021-02-03 21:53:50

标签: javascript node.js discord discord.js

我尝试更改每个命令已经发送的嵌入。 我得到了一个命令,可以进行嵌入并将其发送到用户定义的通道 (selchannel) 中。 但是当我尝试编辑嵌入时,我得到:

<块引用>

DiscordAPIError:无法编辑由其他用户创作的消息

但是消息是由机器人发送的,为什么它会这样说?

我如何发送原始嵌入:

// constructing Embed...
let messageEmbed = await client.channels.cache.get(selchannel).send({embed: EmbedMessage})
module.exports = {
        messageEmbed,
        EmbedMessage
    }

我如何尝试编辑它:

module.exports = {
name: 'edit-embed',
description: 'Edits send Embed',
async execute(message, args) {
    const Discord = require('discord.js');
    const { messageEmbed } = require('./embed');
    const { EmbedMessage } = require('./embed');
    const { prefix } = require('/home/ubuntu/discord-bot/main.js');
    const sender = `${message.author.tag}`;
    const InputSlice = message.content.slice(prefix.length).trim().split(' ');
    const sEmbed = args.shift().toLowerCase();
    const newEmbed = new Discord.MessageEmbed()

    .setColor('#8022FF')
    .setTitle('.........:')
    .addFields(
        {name: '\u200B', value: '\u200B'},
        {name: '........: ', value: ' ............' }, 
        {name: '\u200B', value: '\u200B'}
    )
    .setImage('...........')
    .setFooter(`............  -(${sender})-`);  

    message.edit(sEmbed).then(newEmbed);
}

}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可能应该将嵌入分配给变量作为消息对象,然后您可以使用 .edit(您的其他变量)

换句话说,您需要向 execute() 函数添加另一个变量(将消息作为消息对象)

如果你愿意,这里有一个你可以如何做的例子(我认为)

// constructing Embed...
let messageEmbed = await client.channels.cache.get(selchannel).send({embed: EmbedMessage})
module.exports = {
        messageEmbed,
        EmbedMessage
    }

module.exports = {
name: 'edit-embed',
description: 'Edits send Embed',
async execute(message, args, botEmbed) { //add botEmbed (which is a message object)
    const Discord = require('discord.js');
    const { messageEmbed } = require('./embed');
    const { EmbedMessage } = require('./embed');
    const { prefix } = require('/home/ubuntu/discord-bot/main.js');
    const sender = `${message.author.tag}`;
    const InputSlice = message.content.slice(prefix.length).trim().split(' ');
    const sEmbed = args.shift().toLowerCase();
    const newEmbed = new Discord.MessageEmbed()

    .setColor('#8022FF')
    .setTitle('.........:')
    .addFields(
        {name: '\u200B', value: '\u200B'},
        {name: '........: ', value: ' ............' }, 
        {name: '\u200B', value: '\u200B'}
    )
    .setImage('...........')
    .setFooter(`............  -(${sender})-`);  

    botEmbed.edit(sEmbed).then(newEmbed); //change message to botEmbed
}

然后当您调用编辑函数时,只需传入另一个属性,即您发送的嵌入的 message object

我希望这有效! (没测试过)