新手求助:如何让Discord机器人响应消息时发送Embed?
解决Discord机器人发送Embed的问题
嘿,我帮你排查下代码里的问题——你没法成功发送Embed主要是几个参数缺失和拼写错误导致的,我一步步给你修正:
先说说你代码里的核心问题:
discord.Embed里的标题参数拼错了:tiitle→ 应该是titlecolor参数不能传空字符串,得用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
相关产品推荐
相关产品推荐

