Discord.py中如何获取指定语音频道ID?代码返回None求排查
解决Discord.py获取语音频道返回None的问题
嘿,我来帮你排查这个问题!你的代码返回None,最核心的错误出在**type参数的写法**上,另外也给你列几个其他可能的排查点:
1. 最直接的错误:type参数用了字符串而非枚举值
你把ChannelType.voice用引号包成字符串"ChannelType.voice"传进去了,但实际上discord.ChannelType.voice是discord库提供的枚举常量,不能加引号。修复后的代码应该是这样:
import discord channel = discord.utils.get(message.guild.channels, name='general', type=discord.ChannelType.voice) print(channel)
2. 其他可能导致返回None的原因
如果修复后还是不行,可以检查这些点:
- 频道名称严格匹配:
discord.utils.get的name参数是完全匹配的,比如频道实际叫General(首字母大写)或者general-chat,你写'general'就会找不到,要确保名称完全一致。 - 机器人权限不足:你的机器人需要拥有
View Channels权限,不然它无法看到目标频道,自然获取不到对象。 - 重名频道存在:如果服务器里有多个叫
general的语音频道,discord.utils.get只会返回第一个匹配的,你可能需要结合其他条件(比如所属分类)来精准筛选。 - 频道类型是否正确:确认目标频道确实是语音频道,而不是舞台频道(如果是舞台频道,要改用
discord.ChannelType.stage_voice)。
内容的提问来源于stack exchange,提问作者ahmedquran12
相关产品推荐
相关产品推荐

