机器人不发送标签 |不和谐.js

Posted

技术标签:

【中文标题】机器人不发送标签 |不和谐.js【英文标题】:Bot Don't Send Tags | Discord.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 【参考方案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,从而处理错误。

以上是关于机器人不发送标签 |不和谐.js的主要内容,如果未能解决你的问题,请参考以下文章

如何使不和谐的 js 机器人在某个时间在不和谐的确切文本通道中发送随机消息(我制作一个列表并发送它)

Bot 不发送附件 |不和谐.js

如何让一个不和谐的 js 机器人在某人获得某个角色后向他发送消息

自定义不和谐机器人:在特定文本通道中发送消息

如何将不和谐消息发送到另一个频道? (不和谐 JS)

发送消息时不和谐机器人出错