我试图用机器人的ID来获取一个公会,但它似乎不起作用。每当我运行这个程序时,它都会输出客户机所在的每个公会的集合。
e是从JSON文件中读取的,id属性是来自服务器的直接副本。
client.guilds.fetch(e.id).then((guild) => {
// logs every available guild instead of the one where id is e.id
console.log(guild)
})这是我的意图和部分
const client = new Discord.Client({
intents: [
Intents.FLAGS.GUILDS,
Intents.FLAGS.GUILD_MESSAGES,
Intents.FLAGS.DIRECT_MESSAGES,
Intents.FLAGS.GUILD_MESSAGE_REACTIONS,
Intents.FLAGS.DIRECT_MESSAGE_REACTIONS
],
partials: ['MESSAGE', 'CHANNEL', 'REACTION'],
});发布于 2022-01-16 18:41:35
有两个选项;要么是id是undefined,要么是数字。
因为fetch只接受GuildResolvable或FetchGuildOptions/FetchGuildsOptions对象作为其参数。如果你传递其他的东西,它就会被忽略,所有可用的公会都会被获取(就像你提到的那样)。
我认为您的id是块雪花,正如您提到的,它来自一个JSON文件。雪花should always be strings。如果将这些If存储为数字,JS很难解释它们。任何大于MAX_SAFE_INTEGER的数字都会变成不同的数字,如果您提供了不同的ID,那么每个可用的行会都会被获取。
例如,如果你的雪花是921423246421811231,它就变成了921423246421811200。尝试运行下面的代码段,您将看到它记录了第二个数字,而不是e.id的值。
let e = {
id: 921423246421811231
}
console.log(e.id)
要解决这个问题,请确保将id作为字符串存储在JSON文件中:
{
"id": "921423246421811231"
}https://stackoverflow.com/questions/70732419
复制相似问题