如何在discord.py中获取Embed的文本内容与作者信息?
识别Embed消息文本与作者信息的可行方案
以Discord平台为例(Embed消息最常见的应用场景),可以通过消息对象的结构化属性直接提取所需信息,以下是具体实现方式:
- 监听消息事件后,先检查消息是否包含Embed内容(通过
embeds数组判断) - 提取Embed文本:
- 标题:
embed.title - 主描述文本:
embed.description - 自定义字段文本:遍历
embed.fields数组,每个字段包含name(字段名)和value(字段值)
- 标题:
- 提取作者信息:直接读取
embed.author对象,其中name为作者名称,iconURL为作者头像链接(若存在)
代码示例(Discord.js v14)
client.on('messageCreate', (message) => { // 过滤非Embed消息 if (message.embeds.length === 0) return; const targetEmbed = message.embeds[0]; // 提取文本内容 const title = targetEmbed.title ?? '无标题'; const description = targetEmbed.description ?? '无描述'; const fieldsContent = targetEmbed.fields.length > 0 ? targetEmbed.fields.map(f => `${f.name}: ${f.value}`).join('\n') : '无自定义字段'; // 提取作者信息 const authorInfo = targetEmbed.author ? `作者名: ${targetEmbed.author.name}\n头像链接: ${targetEmbed.author.iconURL()}` : '无作者信息'; // 输出或处理提取到的信息 console.log(`=== Embed内容 ===`); console.log(title); console.log(description); console.log(fieldsContent); console.log(`=== 作者信息 ===`); console.log(authorInfo); });
如果是其他平台的Embed消息,核心逻辑一致:找到消息携带的结构化Embed对象,直接读取对应属性即可。不同平台的Embed结构会有细微差异,但title、description、author这类核心字段基本通用。
内容的提问来源于stack exchange,提问作者captainowl
相关产品推荐
相关产品推荐

