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

如何用Pycord实现Discord嵌入消息的自定义字段命令

Pycord实现自定义数量嵌入字段的Discord命令

你的原代码参数类型不符合需求——定义的*fields是int类型,但我们需要接收每个字段的名称和值,所以得调整参数类型并优化输入逻辑。下面是完整的可运行实现:

from datetime import datetime
import discord
from discord.ext import commands

bot = commands.Bot(command_prefix="!", intents=discord.Intents.all())

@bot.slash_command(name="daily", description="发送带自定义字段的每日嵌入消息")
async def daily(ctx, *fields: discord.Option(str, description="每个字段格式:字段名:字段值,可输入多个")):
    today = datetime.today()
    d1 = today.strftime("%d/%m/%Y")
    embed = discord.Embed(title=f"{d1}", description="每日自定义字段消息", color=discord.Color.dark_purple())
    
    for field in fields:
        # 仅分割一次,避免值里包含冒号导致解析错误
        parts = field.split(":", 1)
        if len(parts) != 2:
            await ctx.respond(f"无效字段格式:`{field}`,请用「字段名:字段值」格式输入", ephemeral=True)
            return
        name, value = parts
        # 去除首尾空格优化显示
        embed.add_field(name=name.strip(), value=value.strip(), inline=False)
    
    embed.set_footer(text="自定义每日消息", icon_url=ctx.author.avatar.url if ctx.author.avatar else "")
    await ctx.respond(embed=embed)

bot.run("你的Bot令牌")

核心逻辑说明

  • 参数调整:将*fields改为str类型,支持用户输入任意数量的「字段名:字段值」格式字符串
  • 字段解析:用split(":", 1)分割输入内容,确保字段值里的冒号不会干扰解析
  • 错误防护:检查输入格式,若不符合要求直接返回提示,避免程序崩溃
  • 嵌入构建:循环解析后的名称和值,调用embed.add_field()添加到消息中,inline=False让每个字段单独占一行(需横向排列可改为True)

使用示例

在Discord中输入命令:
/daily 今日任务:完成代码编写 完成进度:80% 备注:需测试边界情况

即可生成包含3个自定义字段的嵌入消息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:06:24