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

如何用Python为Discord审核机器人实现踢人命令?排查命令未找到报错

解决Discord机器人"kick"命令找不到的问题

嘿,我看你遇到了命令识别的问题,这大概率是命令没和正确的Bot实例绑定导致的,另外代码里还有几处小细节得调整,我给你一步步理清楚:

1. 先确认用对了机器人实例类型

如果你的机器人是用discord.Client()初始化的,那@commands.command()装饰器完全不会生效——Client类不支持命令扩展功能,必须改用commands.Bot()来创建实例。举个正确的初始化例子:

import discord
from discord.ext import commands

# 替换成你的前缀和机器人Token
bot = commands.Bot(command_prefix='!', intents=discord.Intents.all())

@bot.event
async def on_ready():
    print(f'成功登录:{bot.user}')

2. 把命令绑定到Bot实例上

你原来用的@commands.command()是通用装饰器,得改成和你创建的Bot实例关联的装饰器(比如上面的@bot.command()),不然机器人根本不知道这个命令属于它:

@bot.command()
@commands.has_permissions(kick_members=True)
async def kick(ctx, member: discord.Member, *, reason=None):
    # 纠正:原来的client.kick是错误写法,正确调用成员对象的kick方法
    await member.kick(reason=reason)
    # 修正拼写错误:kick → kicked,再加个理由的判断更友好
    await ctx.send(f'用户 {member.mention} 已被踢出{",理由:" + reason if reason else ""}')

3. 别忘了开启必要的Intents权限

去Discord开发者门户的机器人页面,开启「Server Members Intent」和「Message Content Intent」,然后初始化Bot时传入intents=discord.Intents.all()(或者按需开启),不然机器人可能拿不到成员信息,甚至接收不到命令消息。

4. 最后检查启动方式

运行机器人时要用bot.run('你的机器人Token'),而不是原来的client.run(),确保整个流程都围绕Bot实例走。

这样调整后,你的kick命令应该就能被机器人识别并正常执行了~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 14:02:55