Discord.js - 如何编辑 message.embed() 语句?
Discord.js - how do I edit message.embed() statements?
我正在执行 ping 命令 -
编码非常简单,但我对如何编辑我正在使用的嵌入一无所知。这是我的代码 - 我正在使用命令处理程序来解释 exports.run 语句。
const Discord = require('discord.js')
exports.run = (bot, message, args) => {
const pingUpdate = new Discord.MessageEmbed()
.setColor('#0099ff')
.setDescription('pinging...')
message.channel.send(pingUpdate);
}
exports.help = {
name: 'ping'
}
我需要编辑 ping 更新嵌入以使 .description 编辑来执行此操作(简单的 ping 计算)
message.channel.send('pinging...').then((m) => m.edit(`${m.createdTimestamp - message.createdTimestamp}ms`))
这将使描述从 'pinging...' 更改为“示例毫秒”
提前致谢
这应该可行(没有时间测试 rn)
const Embed = new Discord.MessageEmbed()
.setDescription(":one:")
const newEmbed = new Discord.MessageEmbed()
.setDescription(":two:")
// Edit Part Below
var Msg = await message.channel.send(Embed); // sends message
Msg.edit(newEmbed) // edits message with newembed
编辑: 意识到我使用旧版本的 discord.js 已更新以使其适用于新版本
你走对了。但是对于 .setDescription
你需要创建新的 Embed 构造函数并添加描述。
message.channel.send('pinging...').then(msg => {
let embed = new Discord.MessageEmbed() //For discord v11 Change to new Discord.RichEmbed()
.setDescription(`${msg.createdTimestamp - message.createdTimestamp}`)
msg.edit(embed)
})
此外,除了 msg.createTimeStamp - message.createdTimestamp
你还可以 bot.ping.toFixed(2)
解决方案似乎又过时了,现在您应该使用
编辑嵌入消息
Message#edit({embeds:[MessageEmbed#]})
例如:
const oldEmbed = new MessageEmbed();
const messageHandle = await textChannel.send({embeds: [oldEmbed]});
const newEmbed = new MessageEmbed();
messageHandle.edit({embeds:[newEmbed]});
您实际上不必创建新的嵌入。可以编辑原文:
更新:根据 the docs,建议创建新嵌入,但您使用原始嵌入 pre-populate 新嵌入。然后,只需更新您需要的内容并使用新的嵌入编辑消息:
// the original embed posted during collected.on('end')
const embed = new MessageEmbed()
.setColor('0xff4400')
.setTitle(`My Awesome Embed`)
.setDescription('\u200b')
.setAuthor(collected.first().user.username, collected.first().user.displayAvatarURL())
.setImage(`https://via.placeholder.com/400x300.png/808080/000000?text=Placeholder`)
.setTimestamp(new Date())
.setThumbnail('https://via.placeholder.com/200x200.png/808080/000000?text=Placeholder');
// In the original embed, I have a placeholder image that the user
// can replace by posting a new message with the image they want
client.on('messageCreate', async message => {
// adding image to original embed
if (message.attachments.size > 0 && !message.author.bot) {
// get all messages with attachments
const messages = await client.channels.cache.get('<CHANNEL>').messages.fetch();
// get the newest message by the user
const d = messages.filter(msg => msg.embeds.length > 0).filter(m => message.author.username === m.embeds[0].author.name).first();
// create new embed using original as starter
const tempEmbed = new MessageEmbed(d.embeds[0])
// update desired values
tempEmbed.setImage(message.attachments.first().url);
// edit/update the message
d.edit({ embeds: [tempEmbed] });
// delete the posted image
message.delete();
}
});
我正在执行 ping 命令 - 编码非常简单,但我对如何编辑我正在使用的嵌入一无所知。这是我的代码 - 我正在使用命令处理程序来解释 exports.run 语句。
const Discord = require('discord.js')
exports.run = (bot, message, args) => {
const pingUpdate = new Discord.MessageEmbed()
.setColor('#0099ff')
.setDescription('pinging...')
message.channel.send(pingUpdate);
}
exports.help = {
name: 'ping'
}
我需要编辑 ping 更新嵌入以使 .description 编辑来执行此操作(简单的 ping 计算)
message.channel.send('pinging...').then((m) => m.edit(`${m.createdTimestamp - message.createdTimestamp}ms`))
这将使描述从 'pinging...' 更改为“示例毫秒”
提前致谢
这应该可行(没有时间测试 rn)
const Embed = new Discord.MessageEmbed()
.setDescription(":one:")
const newEmbed = new Discord.MessageEmbed()
.setDescription(":two:")
// Edit Part Below
var Msg = await message.channel.send(Embed); // sends message
Msg.edit(newEmbed) // edits message with newembed
编辑: 意识到我使用旧版本的 discord.js 已更新以使其适用于新版本
你走对了。但是对于 .setDescription
你需要创建新的 Embed 构造函数并添加描述。
message.channel.send('pinging...').then(msg => {
let embed = new Discord.MessageEmbed() //For discord v11 Change to new Discord.RichEmbed()
.setDescription(`${msg.createdTimestamp - message.createdTimestamp}`)
msg.edit(embed)
})
此外,除了 msg.createTimeStamp - message.createdTimestamp
你还可以 bot.ping.toFixed(2)
解决方案似乎又过时了,现在您应该使用
编辑嵌入消息Message#edit({embeds:[MessageEmbed#]})
例如:
const oldEmbed = new MessageEmbed();
const messageHandle = await textChannel.send({embeds: [oldEmbed]});
const newEmbed = new MessageEmbed();
messageHandle.edit({embeds:[newEmbed]});
您实际上不必创建新的嵌入。可以编辑原文:
更新:根据 the docs,建议创建新嵌入,但您使用原始嵌入 pre-populate 新嵌入。然后,只需更新您需要的内容并使用新的嵌入编辑消息:
// the original embed posted during collected.on('end')
const embed = new MessageEmbed()
.setColor('0xff4400')
.setTitle(`My Awesome Embed`)
.setDescription('\u200b')
.setAuthor(collected.first().user.username, collected.first().user.displayAvatarURL())
.setImage(`https://via.placeholder.com/400x300.png/808080/000000?text=Placeholder`)
.setTimestamp(new Date())
.setThumbnail('https://via.placeholder.com/200x200.png/808080/000000?text=Placeholder');
// In the original embed, I have a placeholder image that the user
// can replace by posting a new message with the image they want
client.on('messageCreate', async message => {
// adding image to original embed
if (message.attachments.size > 0 && !message.author.bot) {
// get all messages with attachments
const messages = await client.channels.cache.get('<CHANNEL>').messages.fetch();
// get the newest message by the user
const d = messages.filter(msg => msg.embeds.length > 0).filter(m => message.author.username === m.embeds[0].author.name).first();
// create new embed using original as starter
const tempEmbed = new MessageEmbed(d.embeds[0])
// update desired values
tempEmbed.setImage(message.attachments.first().url);
// edit/update the message
d.edit({ embeds: [tempEmbed] });
// delete the posted image
message.delete();
}
});