Discord.js欢迎画布功能触发Server responded with 403报错怎么修复?
问题原因
403错误表示服务器拒绝了访问请求,从报错栈定位是Canvas.loadImage加载远程资源时触发,核心问题出在加载 Discord 用户头像的环节,同时你的代码缺少错误捕获逻辑才会抛出UnhandledPromiseRejectionWarning警告。
修复方案
- 开启Discord开发者后台的必要权限
进入Discord Developer Portal,找到你的机器人应用,在「Privileged Gateway Intents」板块开启Server Members Intent,否则guildMemberAdd事件无法正常触发,也会导致用户资源访问被拒。 - 修复头像加载逻辑,增加兜底
部分新用户没有自定义头像,member.user.avatarURL()会返回null,直接传入加载会报错,需要补全参数并添加默认头像兜底。 - 补充空值判断与权限校验
你当前代码直接调用channel.send(),如果频道不存在、机器人没有该频道的「发送消息」「发送附件」权限,都会触发报错,需要提前判断。 - 修复代码语法错误
你当前的字体设置有重复px的问题,会导致字体渲染异常。 - 增加错误捕获逻辑
给整个异步事件回调添加try/catch,避免未处理的Promise拒绝导致程序崩溃。
修改后完整代码
client.on('guildMemberAdd', async (member) => { try { const leftright = 147; const upkdown = 138; const ksize = 240; const namleftright04 = 310; const namupdown14 = 155; let textsize = 25; const canvas = Canvas.createCanvas(705,290); const ctx = canvas.getContext('2d'); const WelcomeImage = await Canvas.loadImage("./image.png"); ctx.drawImage(WelcomeImage, 0, 0, canvas.width, canvas.height); ctx.font = `${textsize}px Arial`; ctx.shadowColor = 'rgba(22, 22, 22, 1)'; ctx.shadowOffsetY = 1; ctx.shadowBlur = 1; ctx.fillStyle = 'WHITE'; ctx.fillText(member.user.username, namleftright04, namupdown14); ctx.beginPath(); ctx.arc(leftright, upkdown, ksize/2, 0, Math.PI * 2, true); ctx.closePath(); ctx.clip(); // 修复头像加载逻辑 const avatarUrl = member.user.avatarURL({ format: 'jpg', size: 256 }) || member.user.defaultAvatarURL; const avatarUser = await Canvas.loadImage(avatarUrl); ctx.drawImage( avatarUser, leftright - 120, upkdown - 120, ksize, ksize ) const attachment = new Discord.MessageAttachment( canvas.toBuffer(), 'welcome.png' ); const channel = member.guild.channels.cache.find(ch => ch.id == '870381834624700447'); if (!channel) return console.log('未找到指定欢迎频道'); const canSend = channel.permissionsFor(client.user).has(['SendMessages', 'AttachFiles']); if (!canSend) return console.log('机器人没有欢迎频道的发送权限'); channel.send(attachment); } catch (err) { console.error('欢迎消息发送失败:', err); } });
内容的提问来源于stack exchange,提问作者Sarite
相关产品推荐
相关产品推荐

