Fetch a message (by ID) and edit it
15,562
Solution 1
Got it working.
Used this:
message.channel.fetchMessages({around: msgId, limit: 1})
.then(msg => {
const fetchedMsg = msg.first();
fetchedMsg.edit(embed);
});
Solution 2
Old publication but may help those currently looking for it.
For V.13 it can be used this way:
<#Channel>.messages.fetch('messageID').then(msg => msg.edit('newMessage'))
I tested it that way and it worked perfectly.
Related videos on Youtube
Author by
ItzDerock
Updated on June 04, 2022Comments
-
ItzDerock almost 2 years
I'm trying to edit a message the bot sent, in a different function.
const msg = message.channel.fetchMessage(msgId); msg.edit(embed);
Didn't work because msg.edit is not a function.
message.channel.messages.fetch({around: "352292052538753025", limit: 1}) .then(messages => { messages.first().edit("test"); });
Didn't work because .fetch is not a function.
function update(msgId, time, channelid, prize, winnersInt, message) { setTimeout(function(){ let gtime = time/3600000 + " hours remaining!"; if(time < 3600000) { gtime = time/60000 + " minuets remaining!"; } console.log(gtime + "p: " + prize); let embed = new Discord.RichEmbed() .setColor("#7289da") .setTitle("Giveaway!") .addField('Prize: ', prize) .addField('Amount of winners: ', winnersInt) .addField('Time: ', gtime) const msg = message.channel.fetchMessage(msgId); msg.edit(embed); time - 60000; if(time > 0) { update(msgId, time, channel, prize, winnersInt, message); } }, 60000); }
I expect the message to be edited.
-
Chloe Liliace almost 4 yearsThanks! This is for v11. For those people using v12, use
message.channel.messages.fetch
instead.