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

Discord.py开发求助:用户信息接收、类生成及命令前缀失效问题

问题修复与代码调整

核心问题分析

你的代码同时初始化了discord.Client和commands.Bot两个实例,这直接导致命令前缀(command_prefix)失效——因为Bot的命令系统和Client的事件处理相互冲突,而且你最后启动的是Client实例,Bot根本没在运行。另外,把命令函数嵌套在on_message里也是错误写法,Discord.py的命令系统不会识别这种定义。

调整后的完整代码

import discord
from discord.ext import commands
import char  # 你的类文件

# 只初始化Bot实例即可,Bot继承自Client,无需单独创建Client
intents = discord.Intents.all()
bot = commands.Bot(command_prefix='!', intents=intents)

# 用字典存储创建的类实例,比globals更安全易管理
char_instances = {}
char_num = 0

@bot.event
async def on_ready():
    await bot.change_presence(status=discord.Status.online, activity=discord.Game("Game"))
    print(f"已登录为 {bot.user}")

@bot.event
async def on_message(message):
    # 先处理自定义消息逻辑
    if message.content == "test":
        await message.channel.send(f"{message.author} | {message.author.mention}, Hello")
        await message.author.send(f"{message.author} | {message.author.mention}, User, Hello")
    
    if message.content == "!help":
        await message.channel.send("hello, I'm bot 0.0.1 Alpha") 
    
    # 必须添加这句,否则Bot的命令系统无法解析用户输入的命令
    await bot.process_commands(message)

@bot.command(name="make")
async def create_char(ctx, name: str, data: str):
    global char_num
    # 创建char类实例并存入字典
    char_instances[f"char_{char_num}"] = char(name=name, Sffter=data, username=ctx.author.name)
    char_num += 1
    await ctx.send(f"done, {name}!")

# 替换为你的Bot令牌后运行
bot.run('你的BotToken')

关键调整点

  • 移除冗余的Client实例:只保留commands.Bot,所有事件和命令都绑定到Bot上,最后用bot.run()启动。
  • 修正命令定义方式:用@bot.command()装饰器定义!make命令,参数直接对应用户输入的[name]和[data]。
  • 处理消息与命令的优先级:在on_message末尾加上await bot.process_commands(message),确保自定义消息处理完成后,Bot能正常解析命令。
  • 安全存储实例:用字典char_instances替代globals(),避免污染全局命名空间,后续管理实例也更方便。
  • 修复字符串格式化错误:改用f-string简化写法,同时修正了send方法的参数错误(不能传多个独立字符串,需合并为一个)。

额外注意事项

  • 确保你的char.py中类的参数定义和代码调用匹配(比如Sffter参数是否存在)。
  • 替换代码中的'你的BotToken'为你实际的Discord Bot令牌。
  • 如果需要接收带空格的data参数,可以把最后一个参数改为*data,这样能将多个单词合并为一个参数接收。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:05:38