【问题标题】:TypeError: Cannot read property 'id' of undefined (message.mentions.users.first())TypeError:无法读取未定义的属性“id”(message.mentions.users.first())
【发布时间】:2018-12-02 15:22:28
【问题描述】:

我正在用 JS 在我的 discord 机器人上编写一个关于经济的功能, 所以我需要获取我的成员的 id 并且我正在测试它

let defineduser = '';
  if (!args[1]){
    defineduser = message.author.id
  } else {
    let firstMentioned = message.mentions.users.first();
    defineduser = firstMentioned.id;

但这实际上不起作用......

我想让我的命令 '!addmoney' 带有 2 个参数: 数量和用户。 实际上金额有效,如果我不提供第二个参数,我的代码实际上有效,因为它是我的 ID。 我认为 message.mentions.users.first(); 已被弃用,但在 discord.js 文档中并未提及...

【问题讨论】:

  • 你能提供可实时测试的代码吗?使用<> 按钮
  • 为什么这不起作用?你尝试过什么?
  • lgtm,应该在客户端 message 事件中工作,将 'message' 作为参数传递。
  • 我刚试了一下,它对我有用...我们可以看看你发送的内容吗?
  • 我不是想向这个人发送消息,而只是从参数中恢复他的身份

标签: javascript discord.js


【解决方案1】:

Discord.js 在他们的文档中确实有 message.mentionshttps://discord.js.org/#/docs/main/stable/class/Message?scrollTo=mentions

回答者

假设消息是 !addmoney 10 <@0000000>

EDIT 当提及 @user 时,提及的文本是 <@[user's id]>

而 args 是 ["10", "<@0000000>"],这是假设您正确拆分了 message.content

let userID;
if(args[1]){
    let mention = message.mentions.users.first();
    userID = mention!=undefined ? mention.id : args[1];
    //You should also check if the id supplied via args[1] is a valid id.
}
else {
    console.error(`no id supplied`)
    return;
}

注意:我见过的大多数人都这样做

args = message.content.split(` `);
//args now equals ["!addmoney" "10", "<@0000000>"]
//which means args[1] = "10",
args.shift();
//args now equals ["10", "<@0000000>"]

希望这会有所帮助!

【讨论】:

  • 是的!这实际上有效:) 我不明白 discord 是如何处理这些函数的
猜你喜欢
  • 1970-01-01
  • 2020-03-06
  • 2021-09-06
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-22
相关资源
最近更新 更多