【问题标题】:Using node.js and the discord.js library to message users when I run a command, but it only starts to work after the targeted user runs the command在我运行命令时使用 node.js 和 discord.js 库向用户发送消息,但它仅在目标用户运行命令后才开始工作
【发布时间】:2020-11-20 23:40:46
【问题描述】:

就像我在标题中所说的那样,我正在尝试创建一个 Discord 机器人,它会在我运行命令时向用户发送消息。但是,它仅在目标用户自己运行命令后才有效。在他们运行命令之后。我可以运行它,它会向他们发送消息。如果我重新启动机器人,目标用户需要运行命令才能让它再次工作。为什么会这样?我认为它可以做到,所以他们不需要先运行命令。

我使用的代码是这样的:

if (cmd === "cmd1"){
  bot.users.get("<user1ID>").send("Message");     
}

if (cmd === "cmd2"){
  bot.users.get("<user2ID").send("<Message>");
}

如果我在 user1 运行 cmd1 之前尝试运行 cmd1,它会在控制台中抛出一个错误,提示“TypeError:无法读取未定义的属性‘发送’。”机器人和用户在一个共同的服务器中。在我看来,问题是在用户自己运行命令之前不会缓存用户。我希望这样我可以运行命令来向人们发送消息,而无需他们先这样做。目的是通知一些人预先配置的消息。

【问题讨论】:

  • 使用.cache,它显示错误无法读取未定义的属性'get',没有.cache,它说无法读取未定义的属性'发送'。

标签: javascript node.js discord discord.js


【解决方案1】:

由于 Discord.js V12,在通过 id 获取成员时需要添加cache

bot.users.cache.get("<user1ID>").send("Message");

【讨论】:

  • 现在是TypeError: Cannot read property 'get' of undefined。我需要初始化缓存吗?
猜你喜欢
  • 2021-05-25
  • 1970-01-01
  • 2020-11-02
  • 1970-01-01
  • 2019-08-02
  • 1970-01-01
  • 2016-03-12
  • 2021-05-04
  • 1970-01-01
相关资源
最近更新 更多