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

discord.py 2.0+版本旧踢人命令失效问题的修复方案

Discord.py 1.7.3 升级到2.0+ 踢人命令修复方案

以下是你在Discord.py 1.7.3版本编写的踢人命令:

#kick
@client.command(pass_context = True)
@commands.has_permissions(kick_members=True)
async def kick(ctx, member: discord.Member, *, reason = None):
    emb = discord.Embed(title = 'Кик', colour = discord.Color.green() )
    await ctx.channel.purge(limit = 1)
    await member.kick(reason=reason)
    emb.set_author(name = member.name, icon_url= member.avatar_url)
    emb.add_field(name = 'Кик', value = 'кикнул игрока : {}'.format(member.mention))
    emb.set_footer(text = 'Был кикнут администратором {}'.format(ctx.author.name), icon_url = ctx.author.avatar.url)
    await ctx.send( embed= emb)
    await asyncio.sleep(5)
    await ctx.channel.purge(limit=1 )

升级到Discord.py 2.0.0及以上版本后该命令失效,需要修改两处关键内容:

  • 移除@client.command()中的pass_context=True参数:Discord.py 2.0+版本已自动传递上下文,该参数不再需要。
  • 将member.avatar_url替换为member.avatar.url:适配2.0+版本的头像属性调用方式。

修改后的完整代码如下:

#kick
@client.command()
@commands.has_permissions(kick_members=True)
async def kick(ctx, member: discord.Member, *, reason = None):
    emb = discord.Embed(title = 'Кик', colour = discord.Color.green() )
    await ctx.channel.purge(limit = 1)
    await member.kick(reason=reason)
    emb.set_author(name = member.name, icon_url= member.avatar.url)
    emb.add_field(name = 'Кик', value = 'кикнул игрока : {}'.format(member.mention))
    emb.set_footer(text = 'Был кикнут администратором {}'.format(ctx.author.name), icon_url = ctx.author.avatar.url)
    await ctx.send( embed= emb)
    await asyncio.sleep(5)
    await ctx.channel.purge(limit=1 )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 00:26:27