运行此代码时不断收到此错误

Posted

技术标签:

【中文标题】运行此代码时不断收到此错误【英文标题】:Keep getting this error when running this code 【发布时间】:2020-10-03 15:44:11 【问题描述】:

我正在尝试创建验证通道,用户将在其中使用反应验证自己。 我尝试从验证通道获取消息并尝试执行此代码:

 const mReaction = new Discord.MessageReaction();
 const message = mReaction.message;
 const verified = 'verifiedID';
 const unverified = 'unverifiedID';
 if(message.reactions.cache.find(r => r.emoji === '✅') || message.channel.id == 'channelID')
     message.member.roles.add(verified);
     message.member.roles.remove(unverified);
 

当我运行代码时,我不断得到:

TypeError: Cannot read property 'me' of undefined
    at new MessageReaction (D:\Users\Rastik\Desktop\discord bot\node_modules\discord.js\src\structures\MessageReaction.js:35:20)
    at Object.<anonymous> (D:\Users\Rastik\Desktop\discord bot\main.js:98:20)
    at Module._compile (internal/modules/cjs/loader.js:1200:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1220:10)
    at Module.load (internal/modules/cjs/loader.js:1049:32)
    at Function.Module._load (internal/modules/cjs/loader.js:937:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47

所以我想请你们帮助我,如果有人愿意帮助我,我将不胜感激。

【问题讨论】:

我认为您没有显示正确的代码,在代码块中没有对.me 的调用,显示第 98 行(如错误所示)和 98 周围的行相关的。 在第 98 行开始独立代码块,该代码块是我发送的整个代码块。 【参考方案1】:

错误是您正在凭空创建MessageReaction

const mReaction = new Discord.MessageReaction();

如果您查看文档,就会发现您需要客户端、数据和消息。

https://discord.js.org/#/docs/main/stable/class/MessageReaction

const message = mReaction.message 它如何知道反应指的是哪条消息?你没有定义任何东西

总而言之,这些代码毫无意义。

如果你想做一个验证消息反应系统,你需要监听messageReactionAdd事件,但由于该事件只监听缓存的消息,你需要使用raw事件或部分

我将展示部分方式。

主文件:

const client = new Client( partials: ["REACTION", "MESSAGE"]);

然后你需要以某种方式处理messageReactionAdd 事件,

client.on("messageReactionAdd", async (reaction, user) => 
  if(reaction.partial) await reaction.fetch();
  //you should have one message with the checkmark emoji, that users need to press
  //to join, insert the msg id here
  if(reaction.message.id !== "id") return;


  //now you validate the user, if they have the role already return if not add.
);

【讨论】:

感谢您的回答,我在注意到您的评论前几​​个小时就知道了,但仍然非常感谢您尝试帮助我:)

以上是关于运行此代码时不断收到此错误的主要内容,如果未能解决你的问题,请参考以下文章

运行.kv文件时,我不断收到语法错误。我该如何解决? [关闭]

为啥我在此代码中收到 SIGABRT 错误 [关闭]

我正在尝试在用户键入时查询 firebase 数据库,但我不断收到此错误

尝试调用我的应用程序时不断收到此错误

我不断收到此错误:“阅读器关闭时调用读取无效”

我正在尝试使用硒,但不断收到此错误 [重复]