我做了一个脚本,当用户更新他们的个人资料,发送他们的新头像到一个基于图片扩展名的通道。当扩展名是.png
时,它是工作的,但当它是.gif
时,它在发送.png
的同一个通道中发送它。我的代码如下:
我想写一个脚本,当你经常改变你的头像,你就可以进入运河,你的功能是什么?当你进入运河,你就可以进入运河。
client.on('userUpdate', (oldUser, newUser) => {
const oldAvatarURL = oldUser.displayAvatarURL({ size: 2048, dynamic: true });
const newAvatarURL = newUser.displayAvatarURL({ size: 2048, dynamic: true });
if (oldAvatarURL === newAvatarURL) return;
const avatarExtension = newAvatarURL.split('.').pop();
const canalgif = client.channels.cache.get("1076541628405272667");
const canalicon = client.channels.cache.get("1076541589062692874");
//-----------------------------// GIFS //-----------------------------//
if (avatarExtension === 'gif') {
const embedgif = new Discord.EmbedBuilder()
.setImage(newAvatarURL)
.setColor('#360d60')
.setTitle('Teste gif');
canalgif.send({ embeds: [embedgif] });
} else {
//-----------------------------// Icon //-----------------------------//
const embedicon = new Discord.EmbedBuilder()
.setImage(newAvatarURL)
.setColor('#360d60')
.setTitle('teste icon');
canalicon.send({ embeds: [embedicon] });
}
});
2条答案
按热度按时间avwztpqn1#
你只需要删除
oldAvatarURL
和newAvatarURL
变量的size
参数。实际上,在你的代码中,一个gif将显示为gif?size=4096...92dk7w1h2#
如果您使用
.displayAvatarURL()
和size
选项,返回的URL将在末尾附加一个查询字符串。这意味着虚拟形象不会以.gif
,.png
,.webp
等结尾,而是以.webp?size=2048
结尾。您目前获取URL扩展名的方式将不起作用,因为您只需将其拆分为
.
并检查最后一部分。与其删除
size
选项,最后得到默认大小128px,不如更新获取扩展名的方式。首先,可以按已经尝试过的.
进行拆分,然后再按?
进行拆分:因此,以下内容应按预期工作: