javascript - 为什么我在 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 步:启用 Intent
- 转到您的Bot App Dev
- 选择你的机器人
- 前往
Bot
机器人部分并向下滚动,直到看到“Privileged Gateway Intents”并选择“PRESENCE INTENT”和“SERVER MEMBERS INTENT”
例子
第 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
}
深入,但我希望它有所帮助。
推荐阅读
- php - 获取包含特定产品品牌的 WooCommerce 产品类别
- react-native - 是否有任何与 react-native-web 兼容的日期选择器?
- r - 如何修复我创建的函数中的“filter_”错误?
- struct - 基于变量输入在 Julia 中创建结构
- python - 尝试避免在每个 .py 文件运行时加载大型数据集
- openscad - OpenSCAD 中带有穿孔或网状外部的空心 3D 形状?
- google-cloud-platform - POSTMAN:无法完成 OAuth2.0 登录
- javascript - 以随机顺序渲染图像数组
- laravel - 只设置一次碳时区
- python - 在具有 SLURM 的 HPC 系统上使用 GNU Parallel 运行具有两个输入文件的 python 文件的多个实例