Discord.js在欢迎中提及玩家

时间:2019-05-03 23:41:35

标签: javascript discord discord.js mention

几天前,我编写了一个代码来提及用户加入不和谐服务器时的代码,这是我当前拥有的代码:

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(),
        }
        }); 
    }
});

有问题吗?有时候,您可以在这张图片中看到正确的昵称,但有时我只能得到数字,甚至无法单击该“链接” ...

正确的方式:

他们是可点击的,我可以看到他们的个人资料。

Click on origin with output.

错误的方式:

我无法点击他们的ID,因此无法执行任何操作。

enter image description here

不确定为什么会随机发生,非常感谢您的帮助。

3 个答案:

答案 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;
}