在 Discord 客户端上检测用户是否存在 (Discord.js)

Detecting if User Exists on the Discord Client (Discord.js)

我一直在尝试检测 Discord 客户端本身是否存在用户...我使用了这个:

var user_id;

//on message and after assigning user_id
if(client.users.cache.get(user_id) !== undefined) {
//checks if user does exist on the client and does action (it always thinks it's undefined for some reason)
}

你能帮帮我吗?感谢您的帮助...

谢谢, Rako 游戏

欢迎来到 SO!这就是我如何做到的。 UserManager#Cache is a collection, so you can use Collection#has 检查您要查找的内容是否存在。演示:

const userId = "000000000000000000";
const exists = client.users.cache.has(userId);
console.log(exists); // true or false

// Advice to stop making cringe code --no worries, we've all been there before ;)
if (exists) doSomething(); // And not: if (exists === true), although it still can be used in other places
if (!exists) do SomethingElse(); // And definitely not: if (exists === false)

当然,这将在缓存中搜索,因此如果用户在您的机器人启动时未执行任何操作,它将无法工作。获取并测试用户是否存在 UserManager#fetch:

const exists = await client.users.fetch(userId); // Warning: await here. To be used in async functions, or to be replaced by .then()
// Here, the user is cached
console.log(exists); // undefined or User; can be check as in the snippet above. You can still wrap 'exists' with Boolean() if you feel more comfortable having boolean values