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

Discord.py能否在单个文件中定义多个自定义命令?

问题解答

Discord.py完全支持在单个文件里定义多个自定义命令,你遇到的问题核心是只有第一个命令添加了@bot.command()装饰器,其余命令没加——这个装饰器是告诉Discord.py“这是一个bot命令”的关键,没加的话bot根本不会把这些函数识别成命令。

你的代码里只在TestCommand前加了装饰器,后面的AddRoles、RemoveRoles等都没加,所以bot只会响应第一个命令,其余的都会提示“command not found”。

修正后的代码示例:

# 导入相关模块
import discord
from discord.ext import commands

# 定义辅助函数
def helper_func():
    # 辅助逻辑实现
    pass

# 配置intents(根据需求调整)
intents = discord.Intents.default()
intents.message_content = True  # 若需处理消息内容,必须开启此权限

# 初始化bot
bot = commands.Bot(command_prefix='$', intents=intents)

# 每个命令都需要单独添加@bot.command()装饰器
@bot.command()
async def TestCommand(ctx, *params):
    # 命令逻辑
    await ctx.send("测试命令执行成功")

@bot.command()
async def AddRoles(ctx, *params):
    # 命令逻辑
    await ctx.send("添加角色命令执行成功")

@bot.command()
async def RemoveRoles(ctx, *params):
    # 命令逻辑
    await ctx.send("移除角色命令执行成功")

@bot.command()
async def AddToList(ctx, *params):
    # 命令逻辑
    await ctx.send("添加到列表命令执行成功")

# 启动bot
bot.run("你的Bot令牌")

额外注意:

  • 所有命令函数的第一个参数必须是ctx(上下文对象),这是Discord.py命令的强制要求,原代码缺失ctx也可能引发异常
  • 确保intents配置符合你的功能需求,比如涉及消息内容处理时,必须开启message_content权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:50:33