首页 > 解决方案 > 如何检查用户是否未定义

问题描述

我有一个向用户发送 DM 的命令,用户的定义如下:

    let user;
    if (message.mentions.users.first()) {
      user = message.mentions.users.first();
    } else if (args[0]) {
      user = message.guild.members.cache.get(args[0]).user;
    }

但是,如果我 ping 一个不在此服务器中的用户或编写不在此服务器中的用户@user,它会发送一个错误“用户未定义”。我尝试制作if (user == "undefined"),但它只是在它到达它之前中止,或者如果我把它放在上面它就无法工作。

标签: javascriptnode.jsdiscord.js

解决方案


您可以获取并检查是否存在具有该 ID 的用户,而不是查找具有该 ID 的成员message.guild.members然后从那里获取该用户。如果它不存在,您可以简单地检查您不必检查它是否是.client.usersargs[0]if (!user)undefined

const user = message.mentions.users.first() || message.client.users.cache.get(args[0]);

if (!user) 
  return message.channel.send('There is no user mentioned');

message.channel.send(`You mentioned ${user}`);

您还可以使用fetch()来获取用户而不是依赖cache

let user;

try {
  user = message.mentions.users.first() || (await message.client.users.fetch(args[0]));
} catch (error) { console.log(error); }

if (!user) 
  return message.channel.send('There is no user mentioned');

message.channel.send(`You mentioned ${user}`);

在此处输入图像描述


推荐阅读