几天前,我编写了一个代码来提及用户加入不和谐服务器时的代码,这是我当前拥有的代码:
bot.on( "guildMemberAdd", member => {
let textChannel = member.guild.channels.find(channel => channel.id === '569582472812298240');
if (textChannel){
var messages = [
`Brace yourselves. <@${member.user.id}> just joined the server.`,
`Challenger approaching - <@${member.user.id}> has appeared`,
`Welcome <@${member.user.id}>. Leave your weapon by the door.`,
`Big <@${member.user.id}> showed up!`,
`<@${member.user.id}> just joined... or did they?`,
`Ready player <@${member.user.id}>`,
`<@${member.user.id}> hopped into the server. Kangaroo!!`,
`<@${member.user.id}> joined. You must construct additional pylons.`,
`Hello. Is it <@${member.user.id}> you're looking for?`,
`Where's <@${member.user.id}> in the server!`,
`It's dangerous to go alone, take <@${member.user.id}>`
]
textChannel.send({embed: {
color: 3447003,
description: messages[ Math.floor( Math.random() * 11 ) ],
timestamp: new Date(),
}
});
}
});
有问题吗?有时候,您可以在这张图片中看到正确的昵称,但有时我只能得到数字,甚至无法单击该“链接” ...
正确的方式:
他们是可点击的,我可以看到他们的个人资料。
错误的方式:
我无法点击他们的ID,因此无法执行任何操作。
不确定为什么会随机发生,非常感谢您的帮助。
答案 0 :(得分:1)
如果某人加入服务器然后离开,并且您没有其他相互的服务器并且不是他们的朋友,那么它只会显示他们的用户ID。这是客户端的事情,实际上没有任何真正的解决方法可提及。但是,您可以选择仅发送其用户名而不是提及。
答案 1 :(得分:0)
您可以尝试在成员对象上运行toString,因为它会自动生成正确的提示(有时可以用<@!
开头),但是它仍然无法正常工作的可能原因是因为您的Discord客户端没有缓存刚刚加入的用户。
可能是因为您处于日志通道中,服务器中的成员过多,或者是在Discord客户端缓存用户之前剩余的成员。您可以尝试不使用嵌入,或者(可能是最好的解决方案)提供完整的用户名以及嵌入中的提及。
答案 2 :(得分:0)
尝试一下:
bot.on('guildMemberAdd', member => {
var ran = randomRange(0,2);
var greeting;
switch (ran) {
case 0:
greeting = "Brace yourselves. " + member.user + " just joined the server.";
break;
case 1:
greeting = "Challenger approaching - " + member.user + " has appeared";
break;
case 2:
greeting = "Welcome " + member.user + ". Leave your weapon by the door.";
break;
// add more if you want (but dont forget to also change the values in line 2
}
member.guild.channels.get('CHANNEL ID HERE').send(greeting);
});
并添加此功能:
function randomRange(min, max) { // returns an int >= min and <= max
return Math.floor(Math.random() * (max - min + 1)) + min;
}