如何用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
相关产品推荐
相关产品推荐

