You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord电台机器人报错:'Member'对象无'voice'属性求助

解决Discord机器人AttributeError: 'Member' object has no attribute 'voice'问题

1. 启用必要的网关意图

这个错误大概率是因为未开启members和voice_states特权意图。Discord.py v2.x版本起,必须显式启用这些意图才能获取成员的语音状态信息。

在代码中添加意图配置:

import discord
from discord.ext import commands

# 初始化意图,开启必要权限
intents = discord.Intents.default()
intents.members = True
intents.voice_states = True

# 初始化机器人时传入意图
bot = commands.Bot(command_prefix="你的命令前缀", intents=intents)

同时登录Discord开发者平台,进入你的机器人应用页面,找到Privileged Gateway Intents板块,打开Server Members Intent和Voice States Intent开关并保存更改。

2. 限制命令仅在服务器内执行

如果用户在DM中执行命令,ctx.author会是discord.User对象而非discord.Member,User对象没有voice属性。需要先判断命令执行环境:

@bot.command()
async def join(ctx):
    # 检查是否在服务器频道
    if not ctx.guild:
        await ctx.send("这个命令只能在服务器内使用!")
        return
    
    # 获取用户语音状态
    voice_state = ctx.author.voice
    if not voice_state:
        await ctx.send("你得先加入一个语音频道!")
        return
    
    # 连接到用户所在的语音频道
    await voice_state.channel.connect()

3. 确认Discord.py版本

确保使用Discord.py v2.x及以上版本,旧版本的意图机制和属性逻辑存在差异。可以通过以下命令检查版本:

pip show discord.py

如果版本过低,执行升级:

pip install --upgrade discord.py

内容的提问来源于stack exchange,提问作者Gambriwis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 16:02:10