discord.js 获取画布附件的 URL
Posted
技术标签:
【中文标题】discord.js 获取画布附件的 URL【英文标题】:discord.js Getting the URL Of Canvas Attachment 【发布时间】: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\``)
)
【问题讨论】:
【参考方案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。
【讨论】:
以上是关于discord.js 获取画布附件的 URL的主要内容,如果未能解决你的问题,请参考以下文章
读取文件附件(例如;.txt 文件)- Discord.JS