我正在尝试创建一个不和谐的嵌入,该嵌入在按下反应时会更新。到目前为止,这是我尝试过的:
bot.on('message', message => {
// if (message.author.bot) return;
const args = message.content.slice(prefix.length).trim().split(/ +/g);
let msg = message.content.toLowerCase();
if (msg === 'test2') {
message.channel.send(embed)
.then(async embedmsg =>
await embedmsg.react('⚔️')).then(() => {
let collector = embedmsg.createReactionCollector(() => {
return true;
}, {
dispose: true,
});
collector.on('collect', (reaction, user) => {
let emojiName = reaction.emoji.name;
if (user.id == bot.user.id) return;
if (emojiName != '⚔️') return;
console.log('here')
embedmsg.edit(newEmbed1)
一切似乎正常,但我收到错误消息msg
(node:58428) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'createReactionCollector' of undefined
是的,我已经声明了var embedmsg。 如果我更改行:
let collector = embedmsg.createReactionCollector(() => {
收件人:
let collector = message.createReactionCollector(() => {
它仅在原始“ test2”消息上运行收集器,由于它不是由机器人发送的,因此无法对其进行编辑。任何提示将不胜感激!由于我已经很长时间没有编码了,所以这可能是一个超级容易的修复程序。
答案 0 :(得分:1)
embedmsg
不再定义,因为您关闭了.then()
方法。
message.channel.send(embed)
.then(async embedmsg =>
await embedmsg.react('⚔️'))
// ^^
// since you ended the callback, embedmsg is no longer defined.
.then(() => {
相反,使用:
message.channel.send(embed).then(async (embedmsg) => {
await embedmsg.react("⚔️").then(() => {
let collector = embedmsg.createReactionCollector(
() => {
return true;
},
{
dispose: true,
}
);
});
}); // close the callback down here instead