So I am learning javascript and working on a discord bot, it was working just fine but, when I tried to add the 'welcome image' I started having errors trying to run it:
Error: libuuid.so.1: cannot open shared object file: No such file or directory
at Object.Module._extensions..node (node:internal/modules/cjs/loader:1183:18)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (/home/runner/yessirski/node_modules/canvas/lib/bindings.js:3:18)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
and this is the source code:
const Discord = require("discord.js")
const mySecret = process.env['token']
const generateImage = require("./generateImage")
const client = new Discord.Client({
intents: [
"GUILDS",
"GUILD_MESSAGES",
"GUILD_MEMBERS"
]
})
client.on("ready", () => {
console.log(`Logged in as ${client.user.tag}`)
})
client.on("messageCreate", (message) => {
if (message.content == "hi"){
message.reply("Hello!")
}
})
const welcomeChannelId = "951832232857862166"
client.on("guildMemberAdd", async (member) => {
const img = await generateImage(member)
member.guild.channels.cache.get(welcomeChannelId).send({
content: `<@${member.id}> Welcome to the server!`,
files: [img]
})
})
client.login(mySecret)
generateImage.js:
const Canvas = require("canvas")
const Discord = require("discord.js")
const background = "https://i.pinimg.com/736x/1f/eb/00/1feb002749ce5d44d9f94f1b9f177754.jpg"
const dim = {
height: 728,
width: 556,
margin: 50
}
const av = {
size: 256,
x: 480,
y: 170
}
const generateImage = async (member) => {
let username = member.user.username
let discrim = member.user.discriminator
let avatarURL = member.user.displayAvatarURL({format: "png", dynamic: false, size: av.size})
const canvas = Canvas.createCanvas(dim.width, dim.height)
const ctx = canvas.getContext("2d")
// draw in the background
const backimg = await Canvas.loadImage(background)
ctx.drawImage(backimg, 0, 0)
// draw black tinted box
ctx.fillStyle = "rgba(0,0,0,0.8)"
ctx.fillRect(dim.margin, dim.margin, dim.width - 2 * dim.margin, dim.height - 2 * dim.margin)
const avimg = await Canvas.loadImage(avatarURL)
ctx.save()
ctx.beginPath()
ctx.arc(av.x + av.size / 2, av.y + av.size / 2, av.size / 2, 0, Math.PI * 2, true)
ctx.closePath()
ctx.clip()
ctx.drawImage(avimg, av.x, av.y)
ctx.restore()
// write in text
ctx.fillStyle = "white"
ctx.textAlign = "center"
// draw in Welcome
ctx.font = "50px Roboto"
ctx.fillText("Welcome", dim.width/2, dim.margin + 70)
// draw in the username
ctx.font = "60px Roboto"
ctx.fillText(username + discrim, dim.width/2, dim.height - dim.margin - 125)
// draw in to the server
ctx.font = "40px Roboto"
ctx.fillText("to the server", dim.width / 2, dim.height - dim.margin - 50)
const attachment = new Discord.MessageAttachment(canvas.toBuffer(), "welcome.png")
return attachment
}
module.exports = generateImage
also I've noticed that the error only pops up when I imported canvas. i am using replit.