discord.py报错:'Bot' object has no attribute 'get' 求助
问题解决方案
核心错误修复
你的代码中出现AttributeError: 'Bot' object has no attribute 'get',是因为错误调用了获取频道的方法:
- 错误写法:
client.get.channel(828249420784205824) - 正确写法:
client.get_channel(828249420784205824)get_channel是Bot类的方法,而非属性,必须通过括号调用。
其他必改问题
- 事件名称错误:
on_member_leave不是discord.py的标准事件,成员离开服务器时触发的事件是on_member_remove,需修改事件装饰器。 - 成员意图开启:即使代码中使用了
Intents.all(),仍需在Discord开发者门户的机器人设置中开启Server Members Intent,否则on_member_join和on_member_remove事件不会被触发。
修正后的完整代码
import discord from discord.ext import commands from discord.ext.commands import has_permissions intents = discord.Intents.all() client = commands.Bot(command_prefix='.', intents=intents) @client.event async def on_ready(): await client.change_presence(activity=discord.Game(name="chess with your mum")) print("Bot is ready") @client.event async def on_member_join(member): channel = client.get_channel(828249420784205824) await channel.send(f'{member} dolaczyl do serwera!') # English: "joined the server!" @client.event async def on_member_remove(member): channel = client.get_channel(828249420784205824) await channel.send(f'{member} opuscil serwer!') # English: "left the server!" @client.command() @has_permissions(ban_members=True) async def ban(ctx, member : discord.Member, *, reason=None): await member.ban(reason=reason) await ctx.send(f'Uzytkownik {member} dostal bana!') # English: "got banned" @client.command() @has_permissions(kick_members=True) async def kick(ctx, member : discord.Member, *, reason=None): await member.kick(reason=reason) await ctx.send(f'Uzytkownik {member} zostal wyrzucony!') # English: "got kicked" client.run('TOKEN')
额外注意事项
- 确认机器人账号拥有目标频道的消息发送权限。
- 若目标频道为私有频道,需将机器人添加至该频道的权限组并授予发送消息权限。
内容的提问来源于stack exchange,提问作者Max Żukowski
相关产品推荐
相关产品推荐

