繁体   English   中英

为什么我在 Discord.js 中尝试获得公会时得到未定义的信息?

[英]Why am I getting an undefined when trying to get a Guild in Discord.js?

我对 Discord 机器人的工作还很陌生,但我正在尝试为 Discord 创建一个机器人,让所有成员加入公会,以便以后使用。 但是每次我尝试用它的 ID 获取公会时,它都会给出一个未定义的返回,即使我知道我输入了正确的 ID。

const Discord = require("discord.js");
const client = new Discord.Client();
const members = client.guilds.cache.get("guildID");

client.on('ready', () => {
    console.log(`Logged in as ${client.user.tag}!`);
});

client.on('message', msg => {
    console.log(members);
});

client.login('token');

难道我做错了什么?

你说的不是很清楚。 你说你想让你的机器人获得公会中的所有成员,但你却继续获得公会 ID。

假设您想让公会中的所有成员。 您需要做的第一件事是在您的机器人中启用并在您的代码中实现特权网关意图

第 1 步:启用意图

  1. Go 给你的Bot App Dev
  2. Select 你的机器人
  3. 前往机器人的Bot部分并向下滚动,直到您看到“特权网关意图”和 select“存在意图”和“服务器成员意图”

例子

图片

第 2 步:在代码中实施

const Discord = require('discord.js');
const client = new Discord.Client({ ws: { intents: new Discord.Intents(Discord.Intents.ALL) }});
                                          ^^^^^^^
                             This is what is making you access all server members within a guild

获取所有服务器成员的代码:

// If prefix not set: do this: const prefix = "!"; whatever you want
const prefix = "!";
// Usernames
const members = message.guild.members.cache.map(member => member.user.tag);
// ID's
const members = message.guild.members.cache.map(member => member.user.id);

if(message.content.startsWith(prefix + "test")){ // Gets all members usernames within the guild this message was sent on.
console.log(members) // Logs all each members username
}

深入,但我希望它有所帮助。

我相信这只是:

client.guilds.get("guildID"); 

并不是:

client.guilds.cache.get("guildID");

尝试改用这个:

client.guilds.fetch("guildID");

另外,我建议您将该行放在您的就绪事件中或您确定客户端在运行时已完全登录的地方,以确保在您运行时它已登录。

在客户端准备好之前,使用client.guilds.fetch('<guild id>')返回 promise。请注意,在触发就绪事件之前,客户端上的许多内容都未初始化,例如client.user

const members = client.guilds.cache.get("guildID"); 在就绪事件中。

尝试:

const members = client.guilds.cache.get("guildID");

list.members.cache.forEach(member => console.log(member.user.username)); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM