我的欢迎信息令人困惑。 (Discord.js)
My welcome message is confusing. (Discord.js)
我有一个向欢迎频道发送消息的代码:
import Discord from "discord.js"
const client = new Discord.Client()
client.on("guildMemberAdd", async member => {
let bg = await jimp.read("img/img_bg.png") // Bg da imagem.
if(guildId === "729008562747080836") {
bg = await jimp.read("img/img_bg-thunder.png") // Bg da imagem da Thunder.
}
let font = await jimp.loadFont(jimp.FONT_SANS_32_WHITE) // Fonte usada na imagem.
let mask = await jimp.read("img/img_mask.png") // Máscara da imagem.
let welcomeImg = await jimp.read("img/img_txt-welcome.png") // Imagem dando boas-vindas.
let name = member.user.username // Nome do novo membro.
let lenName = name.length * 16 // "Calculando o tamanho" do nome.
// Método usado para fazer a mensagem ao entrar no servidor.
await jimp.read(member.user.defaultAvatarURL).then(avatar => {
avatar = member.user.displayAvatarURL() // Pega a URL da imagem.
let avtUrl
if(avatar.includes(".webp")) {
avtUrl = avatar.substr(0, avatar.lastIndexOf(".")) + ".png" // Converte a extensão de .webp para .png.
} else avtUrl = avatar
jimp.read(avtUrl).then(avt => {
avt.resize(250, 250) // Redimensiona o avatar.
mask.resize(250, 250) // Redimensiona a máscara.
welcomeImg.resize(280, 280) // Redimensiona a imagem de boas-vindas.
avt.mask(mask) // Junta o avatar com a máscara.
bg.composite(welcomeImg, 370, 210) // Adiciona a imagem de boas-vindas no background.
bg.print(font, 512 - lenName / 2, 380, name) // Centraliza e escreve o nome da pessoa.
bg.composite(avt, 387, 40) // Adiciona o avatar no background.
// Guarda a imagem no arquivo "img_final.png".
bg.write("img/img_final.png")
}).catch(err => {
console.log("Erro ao montar a imagem.")
console.log(err)
})
}).catch(err => {
console.log("Erro ao carregar a imagem.")
console.log(err)
})
let channelWel = client.channels.cache.get(welcomeId)
if(guildId === "729008562747080836") {
await channelWel.send(`Olha só quem entou para a melhor e-team! Bem-vindo(a) <@${member.user.id}>!`, { files: ["img/img_final.png"] }) // Manda a mensagem e a foto para o canal.
} else {
await channelWel.send(`Olha só quem entou para o servidor! Bem-vindo(a) <@${member.user.id}>!`, { files: ["img/img_final.png"] }) // Manda a mensagem e a foto para o canal.
}
})
一切正常,但有个问题我无法解决。当我进入服务器时,它显示:
但是当我输入 dyno 机器人或其他用户时,它显示:
当我再次输入或其他用户时:
它总是发送以前的用户欢迎图像...我花了很多时间来解决这个问题...帮帮我!
(我是巴西人,所以有些词或句子可能有误。)
问题似乎出在这段代码中:
jimp.read(avtUrl).then(avt => {
avt.resize(250, 250) // Redimensiona o avatar.
mask.resize(250, 250) // Redimensiona a máscara.
welcomeImg.resize(280, 280) // Redimensiona a imagem de boas-vindas.
avt.mask(mask) // Junta o avatar com a máscara.
bg.composite(welcomeImg, 370, 210) // Adiciona a imagem de boas-vindas no background.
bg.print(font, 512 - lenName / 2, 380, name) // Centraliza e escreve o nome da pessoa.
bg.composite(avt, 387, 40) // Adiciona o avatar no background.
// Guarda a imagem no arquivo "img_final.png".
bg.write("img/img_final.png")
}).catch(err => {
console.log("Erro ao montar a imagem.")
console.log(err)
})
您没有使用 await
,因此其余代码不会等待这部分代码执行。要解决此问题,您需要添加 await
并使外部函数异步:
// Método usado para fazer a mensagem ao entrar no servidor.
await jimp.read(member.user.defaultAvatarURL).then(async avatar => {
avatar = member.user.displayAvatarURL() // Pega a URL da imagem.
let avtUrl
if(avatar.includes(".webp")) {
avtUrl = avatar.substr(0, avatar.lastIndexOf(".")) + ".png" // Converte a extensão de .webp para .png.
} else avtUrl = avatar
await jimp.read(avtUrl).then(avt => {
avt.resize(250, 250) // Redimensiona o avatar.
mask.resize(250, 250) // Redimensiona a máscara.
welcomeImg.resize(280, 280) // Redimensiona a imagem de boas-vindas.
avt.mask(mask) // Junta o avatar com a máscara.
bg.composite(welcomeImg, 370, 210) // Adiciona a imagem de boas-vindas no background.
bg.print(font, 512 - lenName / 2, 380, name) // Centraliza e escreve o nome da pessoa.
bg.composite(avt, 387, 40) // Adiciona o avatar no background.
// Guarda a imagem no arquivo "img_final.png".
bg.write("img/img_final.png")
}).catch(err => {
console.log("Erro ao montar a imagem.")
console.log(err)
})
}).catch(err => {
console.log("Erro ao carregar a imagem.")
console.log(err)
})
我有一个向欢迎频道发送消息的代码:
import Discord from "discord.js"
const client = new Discord.Client()
client.on("guildMemberAdd", async member => {
let bg = await jimp.read("img/img_bg.png") // Bg da imagem.
if(guildId === "729008562747080836") {
bg = await jimp.read("img/img_bg-thunder.png") // Bg da imagem da Thunder.
}
let font = await jimp.loadFont(jimp.FONT_SANS_32_WHITE) // Fonte usada na imagem.
let mask = await jimp.read("img/img_mask.png") // Máscara da imagem.
let welcomeImg = await jimp.read("img/img_txt-welcome.png") // Imagem dando boas-vindas.
let name = member.user.username // Nome do novo membro.
let lenName = name.length * 16 // "Calculando o tamanho" do nome.
// Método usado para fazer a mensagem ao entrar no servidor.
await jimp.read(member.user.defaultAvatarURL).then(avatar => {
avatar = member.user.displayAvatarURL() // Pega a URL da imagem.
let avtUrl
if(avatar.includes(".webp")) {
avtUrl = avatar.substr(0, avatar.lastIndexOf(".")) + ".png" // Converte a extensão de .webp para .png.
} else avtUrl = avatar
jimp.read(avtUrl).then(avt => {
avt.resize(250, 250) // Redimensiona o avatar.
mask.resize(250, 250) // Redimensiona a máscara.
welcomeImg.resize(280, 280) // Redimensiona a imagem de boas-vindas.
avt.mask(mask) // Junta o avatar com a máscara.
bg.composite(welcomeImg, 370, 210) // Adiciona a imagem de boas-vindas no background.
bg.print(font, 512 - lenName / 2, 380, name) // Centraliza e escreve o nome da pessoa.
bg.composite(avt, 387, 40) // Adiciona o avatar no background.
// Guarda a imagem no arquivo "img_final.png".
bg.write("img/img_final.png")
}).catch(err => {
console.log("Erro ao montar a imagem.")
console.log(err)
})
}).catch(err => {
console.log("Erro ao carregar a imagem.")
console.log(err)
})
let channelWel = client.channels.cache.get(welcomeId)
if(guildId === "729008562747080836") {
await channelWel.send(`Olha só quem entou para a melhor e-team! Bem-vindo(a) <@${member.user.id}>!`, { files: ["img/img_final.png"] }) // Manda a mensagem e a foto para o canal.
} else {
await channelWel.send(`Olha só quem entou para o servidor! Bem-vindo(a) <@${member.user.id}>!`, { files: ["img/img_final.png"] }) // Manda a mensagem e a foto para o canal.
}
})
一切正常,但有个问题我无法解决。当我进入服务器时,它显示:
但是当我输入 dyno 机器人或其他用户时,它显示:
当我再次输入或其他用户时:
它总是发送以前的用户欢迎图像...我花了很多时间来解决这个问题...帮帮我!
(我是巴西人,所以有些词或句子可能有误。)
问题似乎出在这段代码中:
jimp.read(avtUrl).then(avt => {
avt.resize(250, 250) // Redimensiona o avatar.
mask.resize(250, 250) // Redimensiona a máscara.
welcomeImg.resize(280, 280) // Redimensiona a imagem de boas-vindas.
avt.mask(mask) // Junta o avatar com a máscara.
bg.composite(welcomeImg, 370, 210) // Adiciona a imagem de boas-vindas no background.
bg.print(font, 512 - lenName / 2, 380, name) // Centraliza e escreve o nome da pessoa.
bg.composite(avt, 387, 40) // Adiciona o avatar no background.
// Guarda a imagem no arquivo "img_final.png".
bg.write("img/img_final.png")
}).catch(err => {
console.log("Erro ao montar a imagem.")
console.log(err)
})
您没有使用 await
,因此其余代码不会等待这部分代码执行。要解决此问题,您需要添加 await
并使外部函数异步:
// Método usado para fazer a mensagem ao entrar no servidor.
await jimp.read(member.user.defaultAvatarURL).then(async avatar => {
avatar = member.user.displayAvatarURL() // Pega a URL da imagem.
let avtUrl
if(avatar.includes(".webp")) {
avtUrl = avatar.substr(0, avatar.lastIndexOf(".")) + ".png" // Converte a extensão de .webp para .png.
} else avtUrl = avatar
await jimp.read(avtUrl).then(avt => {
avt.resize(250, 250) // Redimensiona o avatar.
mask.resize(250, 250) // Redimensiona a máscara.
welcomeImg.resize(280, 280) // Redimensiona a imagem de boas-vindas.
avt.mask(mask) // Junta o avatar com a máscara.
bg.composite(welcomeImg, 370, 210) // Adiciona a imagem de boas-vindas no background.
bg.print(font, 512 - lenName / 2, 380, name) // Centraliza e escreve o nome da pessoa.
bg.composite(avt, 387, 40) // Adiciona o avatar no background.
// Guarda a imagem no arquivo "img_final.png".
bg.write("img/img_final.png")
}).catch(err => {
console.log("Erro ao montar a imagem.")
console.log(err)
})
}).catch(err => {
console.log("Erro ao carregar a imagem.")
console.log(err)
})