我的机器人如何解决此“附件不是构造函数”错误?

时间:2019-06-09 07:31:19

标签: javascript discord.js

当我为Discord制作机器人并尝试附加图片时,由于这个错误,我无法做到

这是一款运行于Discord.js上的Discord机器人 我一开始就尝试使用const Attachment,但这没用,在代码中删除了new和const也没用

        case 'about':
            message.channel.send('I am Damabot, developed by Damadion!')
            const attachment = new Attachment('./DidYouThinkIAmTheRealFace.png')
            message.channel.send('I am Damabot, developed by Damadion!' + attachment)
            console.log('Bot successfully replied')
            break;

我希望它发送附件,但没有发送并发送此错误

4 个答案:

答案 0 :(得分:0)

您可以这样做:

message.channel.send('I am Damabot, developed by Damadion!', { files: ['./DidYouThinkIAmTheRealFace.png'] });

它将文件直接添加到消息中,因此您不必那样做。我在机器人中使用了这种方法,效果很好。

答案 1 :(得分:0)

Attachment是Discord.js中的类。除非您对require语句(const { Attachment } = require('discord.js')使用解构分配,否则Node.js会尝试基于代码中的类构造Attachment对象。如果发现没有任何内容,则会引发错误。

如果要坚持构造附件对象,可以使用:

const attachment = new Discord.Attachment('./path/to/file.png', 'name'); // name is optional

message.channel.send('Hey there', attachment)
  .catch(console.error);

否则,您可以像这样使用消息的files属性:

message.channel.send('Hey there', {
  files: ['./path/to/file.png']
})
.catch(console.error);

后者允许您还发送嵌入(也可以使用嵌入中的附件)。

Discord.js Docs

答案 2 :(得分:0)

对我来说,以下代码有效:

const attachment = new Discord.MessageAttachment("url");
channel.send(attachment);

Discord.Attachment替换为Discord.MessageAttachement

答案 3 :(得分:0)

我有同样的问题。我运行npm install来更新我的软件包,并检查我的不一致版本是否过时并因此引起任何问题。 之后,我决定浏览一下文档,并在此处找到以下代码段:

const attachment=new Discord.MessageAttachment("enter the URL u wanna enter here")
const generalChannel=client.channels.cache.get("enter ur channel id here")
$generalChannel.send(attachment);

至少,它对我有用。请让我知道它是否也适用于您。