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

新手求助:如何让Discord机器人响应消息时发送Embed?

解决Discord机器人发送Embed的问题

嘿,我帮你排查下代码里的问题——你没法成功发送Embed主要是几个参数缺失和拼写错误导致的,我一步步给你修正:

先说说你代码里的核心问题:

  • discord.Embed里的标题参数拼错了:tiitle → 应该是title
  • color参数不能传空字符串,得用Discord提供的颜色对象或者十六进制数值(比如discord.Color.red()或者0xFF0000)
  • szn.get_channel()必须传入具体的频道ID数字(比如你的服务器里「通用」频道的ID),不然机器人不知道要发去哪个频道
  • add_field()是必填name(字段标题)和value(字段内容)的,空着会报错
  • set_footer()至少要传text参数,用来设置底部的脚本文字

另外额外提个新手容易踩的坑:如果用的是Discord.py v2.0以上版本,你需要在Discord开发者门户的机器人设置里开启Message Content Intent,不然on_message事件可能不会触发(机器人收不到你的info指令)。

修正后的完整代码示例:

@szn.event
async def on_message(message):
    # 避免机器人自己触发自己的消息
    if message.author == szn.user:
        return
    
    if message.content == 'info':
        # 替换成你要发送的频道ID(数字类型)
        general_channel = szn.get_channel(123456789012345678)
        # 创建Embed对象,修复拼写错误,设置颜色和标题
        myEmbed = discord.Embed(title="Test Embed", description="这是一个测试Embed消息", color=discord.Color.blue())
        # 添加字段,必填name和value,还可以加inline=True让字段并排
        myEmbed.add_field(name="基础信息", value="这是机器人发送的第一个Embed", inline=False)
        myEmbed.add_field(name="作者", value="新手开发者", inline=True)
        myEmbed.add_field(name="版本", value="v1.0", inline=True)
        # 设置脚本文字
        myEmbed.set_footer(text="来自你的Discord机器人")
        # 发送Embed消息
        await general_channel.send(embed=myEmbed)

补充说明:

  • 频道ID怎么找?打开Discord的「开发者模式」(设置→高级→开发者模式),然后右键频道→复制ID
  • 颜色可以用discord.Color里的预设值,比如green()、purple(),也可以自己传十六进制整数(比如0x1E90FF是 DodgerBlue)
  • 如果不想指定固定频道,也可以直接回复触发消息的用户:await message.reply(embed=myEmbed),这样更灵活

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:15:52