discord.py开发机器人时报错Client对象无get_member属性如何解决
问题原因解析
discord.Client实例本身没有get_member方法:成员对象属于特定服务器(Guild),你需要先拿到对应服务器的实例,再调用服务器实例的get_member方法,且该方法一次只能接收1个整数类型的用户ID,不能同时传多个ID。- 你当前获取成员、频道的代码写在全局作用域,会在机器人启动还未完成和Discord服务器连接的时候就执行,就算方法正确也拿不到有效对象,只会返回
None。 - 你先后定义了两次
on_message函数,第一次加了@client.event装饰器的会被第二次未加装饰器的覆盖,最终事件不会正常触发。 get_channel、get_member方法接收的ID必须是整数类型,你传入的字符串ID会导致获取失败。- 新版discord.py需要主动声明并开启权限意图,否则无法正常读取成员、消息内容。
修正后的代码示例
import discord # 声明权限意图,需要同时在Discord开发者后台的Bot设置页开启对应特权意图 intents = discord.Intents.default() intents.message_content = True intents.members = True client = discord.Client(intents=intents) # 存储频道、成员对象的全局变量,等机器人登录完成后再赋值 brazil_channels = [] target_members = [] # 替换为你的服务器ID(整数格式) GUILD_ID = 替换为你的服务器数字ID @client.event async def on_ready(): # 机器人登录完成后再获取资源 guild = client.get_guild(GUILD_ID) # 加载目标频道 brazil_channels.append(guild.get_channel(817415267256500226)) brazil_channels.append(guild.get_channel(820528316468559892)) brazil_channels.append(guild.get_channel(847980697658458113)) brazil_channels.append(guild.get_channel(867262779139948575)) # 加载目标成员 target_members.append(guild.get_member(178326748616720394)) target_members.append(guild.get_member(156247530563174400)) target_members.append(guild.get_member(96013123013595136)) target_members.append(guild.get_member(253307143665614849)) print(f"机器人已登录:{client.user}") @client.event async def on_message(message): if message.author == client.user: return if message.content.startswith('!timetogroove'): # 批量移动所有目标成员到第一个巴西频道 for member in target_members: # 先判断成员是否在语音频道,避免报错 if member and member.voice: await member.move_to(brazil_channels[0]) await message.channel.send("已移动所有目标成员") # 替换为你的机器人Token client.run("你的机器人Token")
后续开发及Stack Overflow发帖建议
- 发帖时务必标注你使用的discord.py版本,v1.x和v2.x版本语法差异极大,没有版本信息很容易得到无效回答
- 报错要贴完整的Traceback信息,同时附上对应触发报错的代码段
- 开发前先了解discord.py的基础对象层级:Client > Guild(服务器) > Member(成员)/Channel(频道),很多方法都需要从对应层级的对象调用
- 所有Discord的ID(服务器、用户、频道等)都是整数格式,涉及到ID传参时不要加引号转成字符串
- 测试功能时可以先加必要的空值判断,避免成员不在语音频道、资源未加载完成之类的场景导致报错
内容的提问来源于stack exchange,提问作者TheSatiricalMoose
相关产品推荐
相关产品推荐

