首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让VoiceChannel.members和Guild.members返回完整列表时的问题

让VoiceChannel.members和Guild.members返回完整列表时的问题
EN

Stack Overflow用户
提问于 2020-10-09 20:02:10
回答 1查看 821关注 0票数 0

每当我尝试使用VoiceChannel.members或Guild.members时,它都不会给出适用成员的完整列表。我在文本命令中从上下文获取VoiceChannel和Guild,如下所示:

代码语言:javascript
复制
@bot.command(name='followme')
async def follow_me(ctx):
    if ctx.author.voice != None:
        guild = ctx.guild
        tracking = ctx.author
        channel = tracking.voice.channel

后来我试着像这样使用这个频道:

代码语言:javascript
复制
for member in channel.members:
            if member.voice.mute != True:
                await member.edit(mute=True)

然而,它只是在找到我的用户,尽管频道中还有其他用户。

我发现,唯一能准确描述频道成员的方法是:

代码语言:javascript
复制
channel.voice_states.keys()

使用voice_states,我可以得到一个准确的成员列表,但只有当我仍然需要操纵成员本身时,才能通过他们的I。所以我试了一下:

代码语言:javascript
复制
for key in channel.voice_states.keys():
            member = guild.get_member(key)
            if member.voice.mute != True:
                await member.edit(mute=True)

然而,公会并没有提取正确的用户集合,尽管验证了所有is都是正确的,guild.members也没有正常工作。

任何关于如何使这一工作正常工作的投入将是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-09 20:20:26

截至10月7日,不和谐已经改变了他们的API,要求机器人声明网关意图。确保您的discord.py至少更新为1.5版本,并启用成员意图:

代码语言:javascript
复制
import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.members = True 

bot = commands.Bot(command_prefix='!', intents=intents)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64286555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档