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

Discord.py开发问题:.idea命令仅能向Embed传递首个短语如何解决

问题原因

discord.py框架的命令参数默认按空格切割输入内容,你当前仅定义了单个arg参数,只会接收第一个空格前的首个短语,后续内容会被直接丢弃。

修改方案

核心修改点

在arg参数前添加*标记,框架会自动将命令后所有的输入内容作为完整字符串传入arg,无需手动拼接。同时你代码中的pass_contxt存在拼写错误,正确写法为pass_context,如果你使用的是v1.x及以上版本的discord.py,该参数默认开启可直接省略。

修改后完整代码

兼容旧版本discord.py

@bot.command(pass_context=True)
async def идея(ctx, *, arg):
    await ctx.channel.purge(limit = 1)
    emb = discord.Embed(title=f'`Начато голосование на идею` 💡',
    description='Идея: ' + str(arg),
    colour=discord.Color.purple()
    )
    emb.set_footer(text = str(ctx.message.author))
    message = await ctx.send(embed=emb)
    await message.add_reaction('✅')
    await message.add_reaction('❌')
    print('>>Была отправлена идея: ' + str(arg))

适配discord.py v2.x版本(更简洁)

@bot.command()
async def идея(ctx, *, arg):
    await ctx.channel.purge(limit = 1)
    emb = discord.Embed(title=f'`Начато голосование на идею` 💡',
    description=f'Идея: {arg}',
    colour=discord.Color.purple()
    )
    emb.set_footer(text = str(ctx.author))
    message = await ctx.send(embed=emb)
    await message.add_reaction('✅')
    await message.add_reaction('❌')
    print(f'>>Была отправлена идея: {arg}')

可选优化(处理空输入)

如果需要避免用户未输入创意内容时抛出参数缺失错误,可以增加参数默认值和空值判断:

@bot.command()
async def идея(ctx, *, arg: str = None):
    await ctx.channel.purge(limit = 1)
    if not arg:
        await ctx.send("请输入创意内容后再提交", delete_after=5)
        return
    emb = discord.Embed(title=f'`Начато голосование на идею` 💡',
    description=f'Идея: {arg}',
    colour=discord.Color.purple()
    )
    emb.set_footer(text = str(ctx.author))
    message = await ctx.send(embed=emb)
    await message.add_reaction('✅')
    await message.add_reaction('❌')
    print(f'>>Была отправлена идея: {arg}')

修改完成后调用命令即可正常捕获完整的创意文本。

内容的提问来源于stack exchange,提问作者Евгений

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:06:07