Как мне узнать, находятся ли бот и пользователь на одном сервере?

#node.js #discord #discord.js

Вопрос:

Я попробовал коды в нескольких открытых запросах на помощь здесь, но не смог получить желаемый результат. Что я хочу, так это, если бот и пользователь находятся на одном сервере, я хочу, чтобы он отправил сообщение на консоль, если нет, я хочу, чтобы он отправил сообщение о том, что это не гвинея.

Я пробовал такой код:

 const serverid = "serverid "
const userid = "userid "
const server = client.guilds.cache.get(serverid)
if (server.members.cache.find(userid)) {
console.log("I am on the same server as this user.")
} else return console.log("I am not in the same group as this user!")
 

но этого не произошло

Ответ №1:

Согласно документации Клиента, client.members даже не существует. Но, предполагая, что это так, имейте в виду, что боты могут знать только об онлайн-пользователях (или, по крайней мере, о пользователях, которые недавно были в Сети).

Вы можете перебирать гильдии, в которых находится ваш бот, и использовать await guild.members.fetch(userId) их (см. Это и это). Это даже найдет пользователей в автономном режиме, поэтому в основном позволяет вам проверить, является ли кто-то частью этой гильдии, предполагая, что вы сами в ней участвуете.

Ответ №2:

попробуйте заменить server.members.cache.find(userid) на server.members.cache.get(userid) если вы используете идентификатор или просто используйте server.members.cache.find(u => u.id == userid)