Discord.js 在欢迎时提及玩家
Posted
技术标签:
【中文标题】Discord.js 在欢迎时提及玩家【英文标题】:Discord.js mention players on welcome 【发布时间】:2019-09-22 11:57:07 【问题描述】:几天前我做了一个代码,当他们加入我的不和谐服务器时,我会提到用户,这是我目前拥有的代码:
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,对此无能为力。
不知道为什么会随机发生这种情况,非常感谢任何帮助。
【问题讨论】:
【参考方案1】:如果有人加入服务器然后离开,而您与他们没有其他共同服务器并且不是他们的朋友,它只会显示他们的用户 ID。这是客户端的事情,实际上并没有任何真正的解决方法。但是,您可以选择只发送他们的用户名而不是提及。
【讨论】:
【参考方案2】:您可以尝试在成员对象上运行 toString,因为它会自动生成正确的提及(因为有时它可以在前面加上 <@!
),但它仍然无法正常工作的可能原因是您的 Discord 客户端做了不缓存刚刚加入的用户。
这可能是因为您在日志频道中,服务器有太多成员,或者是在您的 Discord 客户端缓存用户之前留下的成员。您可以尝试不使用嵌入,或者(可能是最好的解决方案)提供完整的用户名以及嵌入中的提及。
【讨论】:
<@&...>
代表一个角色。问题实际上是 Discord 中的客户(您),而不是机器人。它确实与 Discord 缓存用户有关,但与机器人无关。如果您加入 alt,提及它,然后踢它并重新加载 Discord,您可以自己复制它。如果你不是朋友,没有打开 DM 频道,也没有共同的服务器,那么提及将不再有效。【参考方案3】:
试试这个:
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;
【讨论】:
以上是关于Discord.js 在欢迎时提及玩家的主要内容,如果未能解决你的问题,请参考以下文章
我正在尝试制作 discord.js 头像命令,但提及部分无法正常工作