首页 > 解决方案 > guildMemberAdd 不与 Jimp 合作 | JavaScript

问题描述

此功能不起作用。我尝试了很多东西,但什么也没做,我认为它是“guildMemberAdd”。

client.on("guildMemberAdd", async member => {

  let canal = client.channels.get(config.welcome)
  let fonte = await jimp.loadFont(jimp.FONT_SANS_32_BLACK)
  let mask = await jimp.read('mascara.png')
  let fundo = await jimp.read('fundo.png')
  
  jimp.read(member.user.displayAvatarURL).then(avatar => {
  avatar.resize(130, 130)
  mask.resize(130, 130)
  avatar.mask(mask)

  fundo.print(fonte, 170, 175, member.user.username)
  fundo.composite(avatar, 40, 90).write('bemvindo.png')
  canal.send(`Welcome !`, { files: ["bemvindo.png"] })
  
  console.log('Imagem enviada para o Discord')
  })
  .catch(err => {
  console.log('error avatar')
  })
});

细节,机器人工作,只是 jimp 部分不工作

如果有人知道为什么不工作,请告诉我。

标签: javascriptdiscord.jsjimp

解决方案


我认为问题在于您拥有 Discord.js v11 代码,但您正在使用 Discord.js v12 运行机器人。

client.channels.get(config.welcome)现在应该是client.channels.cache.get(config.welcome)

固定代码如下:

client.on("guildMemberAdd", async member => {

  let canal = await client.channels.fetch(config.welcome)
  let fonte = await jimp.loadFont(jimp.FONT_SANS_32_BLACK)
  let mask = await jimp.read('mascara.png')
  let fundo = await jimp.read('fundo.png')
  
  jimp.read(member.user.displayAvatarURL({format: 'png'})).then(avatar => {
  avatar.resize(130, 130)
  mask.resize(130, 130)
  avatar.mask(mask)

  fundo.print(fonte, 170, 175, member.user.username)
  fundo.composite(avatar, 40, 90).write('bemvindo.png')
  await canal.send(`Welcome !`, { files: ["bemvindo.png"] })
  
  console.log('Imagem enviada para o Discord')
  })
  .catch(err => {
  console.log('error avatar')
  })
});

推荐阅读