【问题标题】:discord.js Getting the URL Of Canvas Attachmentdiscord.js 获取画布附件的 URL
【发布时间】:2021-10-28 23:46:30
【问题描述】:

我正在尝试获取附件的 URL 并将其发送到频道,我尝试使用 attachment.url 但我收到了 undefined 这是我的代码:

client.on('message', async message => {

            if (message.author.bot || message.channel.type === 'dm') return;
            if (message.content.toLowerCase().indexOf(prefix.toLowerCase()) !== 0) return;
            var args = message.content.slice(prefix.length).trim().split(/ +/g);
            var command = args.shift().toLowerCase();

            if(command =='image'){
            let args = message.content.split(" ").slice(1).join(' ');
            const canvas = Canvas.createCanvas(400, 140);
            const ctx = canvas.getContext('2d')
         
     
                ctx.fillStyle = '#ffffff';
                ctx.font = '150px serif';
                ctx.shadowColor = 'black';
                ctx.shadowBlur = 5;
                ctx.fillText(`${args}`, 0, 118);
                ctx.strokeStyle = '#000000';
                ctx.strokeText(`${args}`, -1, 118);
                ctx.textAlign = "center";
               
               const attachment = new Discord.MessageAttachment(canvas.toBuffer(), 'image.png')
               
        message.channel.send(`\`${attachment.url}\``)
        }})

【问题讨论】:

    标签: javascript node.js canvas discord discord.js


    【解决方案1】:

    您确实只能在发送附件 之后获取附件的 Discord URL。一个简单的方法是使用async/await:

    client.on('message', async message => {
    
      if (message.author.bot || message.channel.type === 'dm') return;
      if (message.content.toLowerCase().indexOf(prefix.toLowerCase()) !== 0) return;
      var args = message.content.slice(prefix.length).trim().split(/ +/g);
      var command = args.shift().toLowerCase();
    
      if (command === 'image') {
        const args = message.content.split(' ').slice(1).join(' ');
        const canvas = Canvas.createCanvas(400, 140);
        const ctx = canvas.getContext('2d');
    
        ctx.fillStyle = '#ffffff';
        ctx.font = '150px serif';
        ctx.shadowColor = 'black';
        ctx.shadowBlur = 5;
        ctx.fillText(`${args}`, 0, 118);
        ctx.strokeStyle = '#000000';
        ctx.strokeText(`${args}`, -1, 118);
        ctx.textAlign = 'center';
         
        const attachment = new Discord.MessageAttachment(canvas.toBuffer(), 'image.png');
         
        const reply = await message.channel.send({ files: [attachment] });
        const attachmentURL = reply.attachments.first().url;
      }
    
    });
    

    【讨论】:

      【解决方案2】:

      我很确定您在发送之前无法获取它的 url,您需要先发送附件,然后再尝试获取它的 url。

      【讨论】:

        猜你喜欢
        • 2020-04-08
        • 1970-01-01
        • 2011-10-11
        • 2018-05-07
        • 1970-01-01
        • 2019-05-19
        • 1970-01-01
        • 2015-02-26
        • 1970-01-01
        相关资源
        最近更新 更多