javascript - 如何检查用户是否未定义
问题描述
我有一个向用户发送 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")
,但它只是在它到达它之前中止,或者如果我把它放在上面它就无法工作。
解决方案
您可以获取并检查是否存在具有该 ID 的用户,而不是查找具有该 ID 的成员message.guild.members
然后从那里获取该用户。如果它不存在,您可以简单地检查您不必检查它是否是.client.users
args[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}`);
推荐阅读
- python - Elasticsearch 7.0:过滤 must_not 查询错误
- database - 如何使用 ColdFusion 检查数据库的值?
- python - python读取xml文件并转换成csv文件
- python - Python 2.7:如何在运行 python gui .exe 脚本时摆脱 cmd 窗口
- r - kmeans 模型输出不是“如预期”
- rest - 在执行之前查询/测试 K8S API 请求是否被授权
- python - Pyspark Groupby 并计算数组中的字符串
- xamarin.forms - 从 IMarkupExtension 访问 ContentPage
- c# - MVC5 根据另一个文本框值动态禁用文本框
- python - 出现错误:在 django 中使用参数“(1,)”反转“更新”