【问题标题】:Bot Don't Send Tags | Discord.js机器人不发送标签 |不和谐.js
【发布时间】:2021-02-12 21:02:29
【问题描述】:

嘿,我制作了一个侦听频道的机器人,当频道中发送了一条消息时,该机器人将消息替换为嵌入消息内容的消息,但是当有人试图将某人标记为机器人时,我遇到了一些问题打印这个

(node:16552) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body
embed.image.url: Could not interpret "[]" as string.
    at RequestHandler.execute
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

当我添加附件时,它只发送测试!最后,我想将作者图像设置为与发送消息的用户相同...

这是我的代码:

bot.on('message', message=>{
    
    if (message.author.bot) return;
    if(message.channel.id == "771695635598278677") {
        message.delete()
        const user = message.mentions.users.first() || message.author;
        //let messageAttachment = message.attachments.size > 0 ? message.attachments.array()[0].url : null
        const dark = new Discord.MessageEmbed()
        .setColor('#000000')
        .setDescription(`${message.content}\n`)
        .addField('\n')
        .setAuthor("Twitter")
        .setImage(message.attachments)
        .setFooter('twitter', 'https://cdn.discordapp.com/attachments/564032243836780558/771614643159433226/Anonymous_emblem.svg.png')
        if(isNaN(message.content)) {
            message.channel.send(twitter)
        }
    }
});

如果有人可以帮助我,请告诉我...谢谢!

【问题讨论】:

  • 我很困惑。您缺少代码的某些部分。 “twitter”被定义为什么?它不存在。此外,您将嵌入定义为“暗”。
  • 对不起,它有效,我在这里更改了代码并将其命名为 twitter,它适用于我,我将其命名为 dark

标签: javascript discord.js embed message


【解决方案1】:

Message.attachments 返回一个 Collection 附件,而 MessageEmbed.setImage() 需要一个字符串(网址)。我相信您正在寻找的是Collection.prototype.first(),它将返回集合中的第一个MessageAttachment。从那里,您可以访问url 属性。

const dark = new Discord.MessageEmbed()
 .setColor('#000000')
 .setDescription(`${message.content}\n`)
 .addField('\n')
 .setAuthor('Twitter')
 .setImage(message.attachments.first().url)
 .setFooter(
  'twitter',
  'https://cdn.discordapp.com/attachments/564032243836780558/771614643159433226/Anonymous_emblem.svg.png'
 );

【讨论】:

  • 另外两个问题呢?它还打印错误 .setImage(message.attachments.first().url) ^ TypeError: Cannot read property 'url' of undefined
  • 供以后参考:每个问题只有一个问题。关于您的错误,这意味着用户没有发送任何附件,因此只需使用 || 运算符或可选链接来处理。对于 pfp 问题,setAuthor 的第二个参数可以是 message.author.displayAvatarURL()
  • 我该如何处理 ||?我应该补充什么?您的代码也有错误 TypeError: Cannot read property 'url' of undefined, URL is not defined, 那不是因为我没有添加附件
  • 你会回答吗?
  • "TypeError: Cannot read property 'url' of undefined" 并不意味着 url 未定义,这意味着 message.attachments.first() 未定义。发生这种情况的唯一方法是集合为空。您可以使用message.attachments.first()?.url(message.attachments.first() || {}).url 来处理。如果找不到任何附件,两者都将返回 undefined,从而处理错误。
猜你喜欢
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 2021-04-26
  • 2019-02-14
  • 2018-03-20
  • 2019-12-10
  • 1970-01-01
相关资源
最近更新 更多