chomens-bot-js/plugins/draw.js

53 lines
1.1 KiB
JavaScript

const convert = require('color-convert')
// eslint-disable-next-line require-jsdoc
function inject (bot) {
/**
* draw which is totallynotskidded from ybot
* @param {buffer} data data buffer
* @param {*} info idk bout this
* @param {object} prefix prefix in the output compoenent
*/
function draw (data, info, prefix = {}) {
const pixels = []
// Data Buffer -> RGB Array
for (let i = 0; i < data.length; i += info.channels) {
pixels.push([
data[i + 0],
data[i + 1],
data[i + 2]
])
}
const rows = []
// RGB Array -> Rows Array
for (let i = 0; i < pixels.length; i += info.width) {
const row = pixels.slice(i, i + info.width)
rows.push(row)
}
const messages = []
for (const row of rows) {
const message = [{ ...prefix, text: '' }]
for (const rgb of row) {
message.push({
text: '⎮',
color: `#${convert.rgb.hex(rgb)}`
})
}
messages.push(message)
}
for (const message of messages) bot.tellraw('@a', message)
}
bot.draw = draw
}
module.exports = { inject }