Discord.js中Embed的setAuthor方法报错:预期对象却收到字符串
错误提示明确指出setAuthor方法预期接收对象,但你传入了字符串'🎫 Cria um ticket aqui'。这是因为Discord.js v14及后续版本中,EmbedBuilder的setAuthor方法参数格式发生了变化——不再支持单独传入name和iconURL两个参数,必须传入一个包含对应属性的对象。
解决方案
修改setAuthor的调用方式,将原有的两个参数封装为对象:
- 原代码:
.setAuthor('🎫 Cria um ticket aqui', client.user.avatarURL()) - 修改后:
.setAuthor({ name: '🎫 Cria um ticket aqui', iconURL: client.user.avatarURL() })
同时注意,setFooter方法在v14中同样需要传入对象,你的原代码中该方法的调用格式也不符合要求,需要一并修改:
- 原代码:
.setFooter(client.config.footerText, client.user.avatarURL()) - 修改后:
.setFooter({ text: client.config.footerText, iconURL: client.user.avatarURL() })
修改后的完整代码片段
const { EmbedBuilder } = require('discord.js'); module.exports = { name: 'ready', async execute(client) { console.log('Bot Online!') console.log('Bot Dev Chain'); const oniChan = client.channels.cache.get(client.config.ticketChannel) function sendTicketMSG() { const embed = new EmbedBuilder() .setColor('ff0000') .setAuthor({ name: '🎫 Cria um ticket aqui', iconURL: client.user.avatarURL() }) .setDescription('Aqui pode abrir um ticket para obter\n\n **__<:SupportTeam:1013602711683473499> Suporte\n <:Servers:1013601908105171014> Adquirir a sua vps\n <a:developer_bot:1013602040745824336> Adquirir o seu bot de discord\n <a:partnership:1013602912162828308> Fazer uma Parceria__**') .setFooter({ text: client.config.footerText, iconURL: client.user.avatarURL() }) const row = new client.discord.MessageActionRow() .addComponents( new client.discord.MessageButton() .setCustomId('open-ticket') .setLabel('Cria um ticket aqui') .setEmoji('🎫') .setStyle('PRIMARY'), ); oniChan.send({ embeds: [embed], components: [row] }) }
内容的提问来源于stack exchange,提问作者Chain God
相关产品推荐
相关产品推荐

