每当我尝试使用VoiceChannel.members或Guild.members时,它都不会给出适用成员的完整列表。我在文本命令中从上下文获取VoiceChannel和Guild,如下所示:
@bot.command(name='followme')
async def follow_me(ctx):
if ctx.author.voice != None:
guild = ctx.guild
tracking = ctx.author
channel = tracking.voice.channel后来我试着像这样使用这个频道:
for member in channel.members:
if member.voice.mute != True:
await member.edit(mute=True)然而,它只是在找到我的用户,尽管频道中还有其他用户。
我发现,唯一能准确描述频道成员的方法是:
channel.voice_states.keys()使用voice_states,我可以得到一个准确的成员列表,但只有当我仍然需要操纵成员本身时,才能通过他们的I。所以我试了一下:
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也没有正常工作。
任何关于如何使这一工作正常工作的投入将是非常感谢的。
发布于 2020-10-09 20:20:26
截至10月7日,不和谐已经改变了他们的API,要求机器人声明网关意图。确保您的discord.py至少更新为1.5版本,并启用成员意图:
import discord
from discord.ext import commands
intents = discord.Intents.default()
intents.members = True
bot = commands.Bot(command_prefix='!', intents=intents)https://stackoverflow.com/questions/64286555
复制相似问题