#javascript #canvas #discord.js #repl.it
Вопрос:
Я пытаюсь сделать так, чтобы в моем коде отображался только фрагмент текста, когда база данных дает определенное значение.
const canvas = Canvas.createCanvas(250, 250);
const ctx = canvas.getContext('2d');
ctx.fillStyle = message.content;
ctx.fillRect(0, 0, canvas.height, canvas.width)
db.get("label" message.author.id).then(value => {
console.log(value)
if(value == 'on') {
console.log('true')
ctx.font = '40px Poppins';
ctx.fillStyle = '#ffffff';
ctx.strokeStyle = '#000000'
ctx.lineWidth = 1;
ctx.fillText(message.content, canvas.width/10, canvas.height / 2 20);
ctx.strokeText(message.content, canvas.width/10, canvas.height / 2 20);
}
})
Это то, что у меня есть до сих пор. К сожалению, независимо от значения в базе данных, он не добавит текст. Я протестировал его без этого материала, и он добавляет текст. Может кто-нибудь сказать мне, как это исправить?
Изменить: Вот мой полный и полный код для этой проблемы:
if(message.content.startsWith('#') amp;amp; message.content.length == 7) {
const canvas = Canvas.createCanvas(250, 250);
const ctx = canvas.getContext('2d');
ctx.fillStyle = message.content;
ctx.fillRect(0, 0, canvas.height, canvas.width)
db.get("label" message.author.id).then(value => {
console.log(value)
if(value == 'on') {
console.log('true')
ctx.font = '40px Poppins';
ctx.fillStyle = '#ffffff';
ctx.strokeStyle = '#000000'
ctx.lineWidth = 1;
ctx.fillText(message.content, canvas.width/10, canvas.height / 2 20);
ctx.strokeText(message.content, canvas.width/10, canvas.height / 2 20);
}
})
const attachment = new Discord.MessageAttachment(canvas.toBuffer(), 'color.png');
message.channel.send(attachment)
}
Комментарии:
1. Поддерживается ли холст в discord ? (Я предполагаю, что вы пишете своего рода бота). Я ничего не писал для discord, так что я действительно не знаю
2. Также, что вы получаете, когда выполняете console.log(значение);
Ответ №1:
Вы не отправляете изображение на холсте, вы просто создаете его. Когда вы закончите создавать изображение, вам следует использовать Canvas#toBuffer, чтобы сделать его совместимым с discordjs#MessageAttachment.
const { MessageAttachment } = require('discord.js')
const canvas = Canvas.createCanvas(250, 250);
const ctx = canvas.getContext('2d');
ctx.fillStyle = message.content
ctx.fillRect(0, 0, canvas.height, canvas.width)
db.get('label' message.author.id).then(value => {
console.log(value)
if (value == 'on') {
console.log('true')
ctx.font = '40px Poppins'
ctx.fillStyle = '#ffffff'
ctx.strokeStyle = '#000000'
ctx.lineWidth = 1
ctx.fillText(message.content, canvas.width / 10, canvas.height / 2 20)
ctx.strokeText(message.content, canvas.width / 10, canvas.height / 2 20)
message.reply({
files: [new MessageAttachment(canvas.toBuffer(), 'fileName.png')]
})
}
})
Комментарии:
1. Да, я пропустил эту часть кода, но она у меня есть.