在聊天 discordjs 之间复制嵌入和修改
Posted
技术标签:
【中文标题】在聊天 discordjs 之间复制嵌入和修改【英文标题】:Copy embed and modify between chats discordjs 【发布时间】:2021-12-24 05:55:39 【问题描述】:我正在尝试更改有关嵌入消息的一些信息,然后从频道传输消息,但是当我尝试传输消息时,出现此错误:
RangeError [EMBED_FIELD_NAME]: MessageEmbed field names must be non-empty strings.
我正在尝试这样:
let title;
let fieldName;
let fieldValue;
if(message.channel.id == analiseChannelID && reaction.emoji.name === 'aprovada')
message.embeds.forEach(embeds =>
let title = embeds.title;
//console.log(embeds.title); // logging to console ✅
let fields = embeds.fields;
fields.forEach((field) =>
//console.log(field.name); // logging to console ✅
//console.log(field.value); // logging to console ✅
fieldName = field.name;
fieldValue = field.value;
);
let embed1 = new Discord.MessageEmbed().addFields(fieldName, fieldValue)
ChannelAprovada.send(embed1)
)
【问题讨论】:
【参考方案1】:您使用了需要对象作为参数的MessageEmbed#addFields
方法(带有s
)。将其更改为 MessageEmbed#addField
应该可以工作
let embed1 = new Discord.MessageEmbed()
.addField(fieldName, fieldValue) //no "s"
【讨论】:
它说消息是空的 您使用的是什么版本的 discord.js? 我使用的是 v16.11.0 @Maker__ 这是你的 node.js 版本,而不是 discord.js 我在哪里可以找到那个?【参考方案2】:正如@MrMythical 所说,将MessageEmbed#addFields 更改为MessageEmbed#addField 应该会对您有所帮助,但请尝试使用.addField(fieldName, `** ** $fieldValue`)
而不是.addField(fieldName, fieldValue)
!使用** **
应该可以帮助您防止出现错误,即使您的fieldValue
出于某种原因为空!
此外,在 discord.js v13 中,您必须使用 ChannelAprovada.send(embeds: [embed1])
而不是 ChannelAprovada.send(embed1)
来发送嵌入!
【讨论】:
【参考方案3】:再试一次。
.addFields( name: `text`, value: `text`)
对于不和谐 v.13
.addField("text", "text")
【讨论】:
.addFields 用于 Discord v.12,但在 v.13 中用于多个字段,所以我同意。 哦,这就是重点,我必须从旧消息嵌入中打印多个字段,例如:名称;姓;年龄 ||但这样甚至没有打印,并说字段是空的 @Maker__ 你找到你的 discord.js 版本了吗? 如果您使用的是 discord v.12,它可能会对您有所帮助,但如果您使用的是 discord v.13,那就另当别论了 我使用的是 13.2.0以上是关于在聊天 discordjs 之间复制嵌入和修改的主要内容,如果未能解决你的问题,请参考以下文章
如何在 DiscordJS 嵌入消息中使用本地文件作为缩略图?