这个问题令我头疼。
我正在尝试编辑不和谐信息,但它只是无法工作。
我收到错误:slotDisplayer.edit不是函数
exports["%slots play"] = function(args, data) {
var frame_count = utils.getRandomInt(15, 25);
var main_reels = utils.newReels(3);
var slotDisplayer = data.channel.send(`You spent 1 on this slot.\n\nSpinning...`);
slotDisplayer.then(function(msg){
utils.nextFrame(main_reels, 0, 0, frameDisplay);
return msg;
}).catch(function(err){
console.log(err);
});
console.log(slotDisplayer);
function frameDisplay(res) {
var f = res.frame;
console.log(slotDisplayer);
console.log(`|${f[0][0]} | ${f[0][1]} | ${f[0][2]} |\n|${f[1][0]} | ${f[1][1]} | ${f[1][2]} |\n|${f[2][0]} | ${f[2][1]} | ${f[2][2]} |`);
slotDisplayer.edit(utils.generateFrame()).catch(function(err){
console.log(err);
});
if(frame_count > res.frame_index){
var properIndex = res.index >= main_reels[0].length - 2 ? 0 : res.index;
setTimeout(function(){utils.nextFrame(main_reels, properIndex,res.frame_index,frameDisplay);}, 200);
} else {
var payobj = utils.logic(res.frame);
slotDisplayer.edit(`|${f[0][0]} | ${f[0][1]} | ${f[0][2]} |\n|${f[1][0]} | ${f[1][1]} | ${f[1][2]} |\n|${f[2][0]} | ${f[2][1]} | ${f[2][2]} |\n${payobj.message}`);
}
}
}
我需要一个在discord.js中编辑消息的示例。
答案 0 :(得分:3)
您需要使用.then()。
data.channel.send("blah blah").then((msg)=>{
//your code here! msg.edit will work here.
})
原因是因为channel.send()根据API返回Promise:https://discord.js.org/#/docs/main/stable/class/TextChannel?scrollTo=send
此外,您可以将消息对象分配给.then()中的另一个变量,这样您就不必处理大量难以处理的缩进。