Discord.js v13 Sending a File Attachment via URL
Asked Answered
C

2

6

Discord.js released v13 and I'm trying to update my little homebrew discordbot.

I've come across an issue where I can no longer send an attached file (png) via a web URL.

Discord.js v12

var testchart = `http://jegin.net/testchart2.php?sysid=268.png`;
message.channel.send("Last updated " + updatedAt.fromNow(), {
             files: [{
                attachment: testchart,
                name: 'file.png'
                }]

No errors to the console are made (other than a depreciation warning): No errors to the console are made

And the bot does not return an image:

no image

I've tried:

message.channel.send("Last updated " + updatedAt.fromNow(), {
             files: [testchart]

and

message.channel.send("Last updated " + updatedAt.fromNow(), {
             files: Array.from(testchart)
        });

And finally

message.channel.send({
             files: [testchart],
             content: `Last updated ${updatedAt.fromNow()}`
        });

Which gives me this AWFUL output: enter image description here

Thanks for the help!

Discord.js's guide for updates: https://discordjs.guide/additional-info/changes-in-v13.html#sending-messages-embeds-files-etc

Only other issue I was able to find on the matter: Discord.js V13 sending message attachments

Crim answered 21/10, 2021 at 15:44 Comment(1)
At the bottom left you can see it says testchart2.phpAgnail
C
5

Found the issue, it has to do with the testchart2.php part of the URL (http://jegin.net/testchart2.php?sysid=268.png)

Was able to get it sent by using:

message.channel.send({
    files: [{
        attachment: testchart,
        name: 'chart.png'
    }],
    content:`Last updated ${updatedAt.fromNow()}`,
});

Basically, just take the content part of the v12 and move it to it's own area. Worked like a charm.

Crim answered 21/10, 2021 at 16:5 Comment(0)
A
1

Your first attempt was close, but not exactly correct. You just have to merge those together (sending messages only takes 1 argument now) and you will get a png file (because you specified the file name), along with the content:

var testchart = `http://jegin.net/testchart2.php?sysid=268.png`;
message.channel.send({
  content: "Last updated " + updatedAt.fromNow(),
  files: [{
    attachment: testchart,
    name: 'file.png'
  }]
})
Agnail answered 21/10, 2021 at 16:10 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.