discord.py获取指定语音频道成员列表失败问题求助
排查discord.py语音频道成员列表为空的问题
嘿,我帮你梳理下Discord突袭机器人里,语音频道成员列表memids为空的几个常见原因,都是开发时容易踩的坑:
先确认你拿到了正确的语音频道对象
很多时候问题出在获取频道这一步。比如你用discord.utils.get的时候,是不是频道名拼错了?或者没限定服务器范围?先打印voice_channel看看是不是None——如果频道对象本身是空的,那肯定拿不到成员。
正确的获取示例:# 从上下文或指定服务器获取频道 voice_channel = discord.utils.get(ctx.guild.voice_channels, name="突袭频道")机器人权限不够
你的机器人得有访问目标语音频道的权限才行!去服务器角色设置里,给机器人分配查看频道和连接语音频道的权限,不然它根本读不到频道里的成员信息。用了废弃的属性(针对discord.py v2.x)
如果你用的是新版discord.py(v2.x及以上),旧的voice_channel.voice_members已经被弃用了,得用voice_channel.members来获取成员列表。比如正确生成memids的代码:memids = [member.id for member in voice_channel.members] print(memids)成员意图没开启
discord.py需要启用成员缓存才能正确获取成员信息。你得做两步:- 在Discord开发者门户里,找到你的机器人,开启Server Members Intent(特权网关意图里的选项);
- 初始化Bot时开启成员意图:
intents = discord.Intents.default() intents.members = True bot = discord.Bot(intents=intents)
没开这个的话,缓存里没有成员数据,自然拿不到列表。
机器人不在目标服务器
别笑,真的有这种情况!确认你的机器人已经成功加入了突袭服务器,没有被踢或者限制访问。
内容的提问来源于stack exchange,提问作者Matthew Kopie
相关产品推荐
相关产品推荐

