如何解决messageid出现问题,并将反应收集器放置在discord.js中的正确消息上
我正在尝试创建一个不和谐的嵌入,该嵌入在按下反应时会更新。到目前为止,这是我尝试过的:
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”消息上运行收集器,由于它不是由机器人发送的,因此无法对其进行编辑。任何提示将不胜感激!由于我已经很长时间没有编码了,所以这可能是一个超级容易的修复程序。
解决方法
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。