message.channel.members 不再包含文本频道中的所有用户

Posted

技术标签:

【中文标题】message.channel.members 不再包含文本频道中的所有用户【英文标题】:message.channel.members no longer contains all users in a text channel 【发布时间】:2021-02-12 10:58:49 【问题描述】:

我有一个简单的命令,它在文本频道中提到了一个随机用户。它运行了好几个星期,直到今天。

TL;DR: channel.members 是一个曾经包含文本频道所有用户的地图,但现在不再如此。是我这边有错误还是有什么变化?

在今天之前,地图将正确地包含在发生消息事件的文本通道中的所有用户。现在,出于某种原因,在这张地图中有一个作者和一个机器人本身 + 看似随机的人。

起初他似乎也在语音频道中包括了人,现在没有人在任何语音频道中,并且在第一条消息之后,地图中只有我和一个机器人,当我要求某人做一个命令,那么他也出现在了地图中。

所以这让我认为消息事件的 arg 中的频道属性可能有一张地图,其中包含在 bot 上线时发送任何消息的人的地图,但这将如何解释来自语音频道的人?此外,在今天之前,他会随机分配任何人,甚至是那些从未在任何频道中发布过消息的人。

Discord API 最近有变化吗?因为我找不到任何公告或类似的东西,我不知道为什么它不再起作用了。我什至检查了从昨天到几天前的几次提交,但它仍然如此。

我仔细检查了所有内容,我确定有些人在任何地方都没有说什么,我看到机器人上次在 10 月 28 日提到了这些人。

main.js

bot.on('message', message => 
    if (!message.content.startsWith(prefix) || message.author.bot) return;
    require(`./commands/random_member`).execute(message, null);
);

random_member.js

module.exports = 
    name: 'random_member',
    usage: 'random_member',
    description: "random_member",
    execute(message, args) 
        const member = message.channel.members.random();
        message.channel.send(`$member`);
    

【问题讨论】:

我想你可能有和这个***.com/questions/64559390/…类似的问题 【参考方案1】:

Worthy Alpaca 帮我发表了评论。

“首先,您必须从 Discord 开发者网站手动启用 Intent。转到应用程序,选择您的应用程序,然后在侧边栏上找到“机器人”选项卡。然后您可以向下滚动,直到看到以下内容:“

我已启用这两个选项,我的问题已消失。

来源: None of my discord.js guildmember events are emitting, my user caches are basically empty, and my functions are timing out?

【讨论】:

以上是关于message.channel.members 不再包含文本频道中的所有用户的主要内容,如果未能解决你的问题,请参考以下文章

时光不老我们不散这句话是啥意思 时光不老我们不散这句话解释

C语言 不允许使用不完整的类型

时光不老,我们不散的下一句是啥?

C语言 不允许使用不完整的类型

时光不老,我们不散珍惜友情的说说

时光不老我们不散,天不会不蓝,我不会不在。