不一致 <@!user id> 和 <@userid>

2024-01-06

所以我正在使用 Node.JS / Discord.JS 创建一个机器人,我有一个问题。

在某些服务器上,当您提及用户时,它会在控制台中返回为<@!userid>在其他方面它返回为<@userid>。 我的机器人有一个简单的点/级别系统,它保存在 JSON 文件中<@!userid>,因此在某些服务器上,当尝试通过提及用户点来查看用户点时,它们会起作用,而在其他服务器上则不会。

有谁知道如何解决这个问题?我多次尝试找到答案,但我不想将其保存两次,一次作为<@!userid>进而<@userid>。如果这是解决问题的唯一方法,那么我理解。

感谢您的帮助!


中的感叹号<@!userID>意味着他们在该服务器中设置了昵称。使用不带感叹号的方法更可靠,因为它可以在任何地方使用。此外,您应该保存用户的 ID,而不是整个提及内容(“”)。使用正则表达式解析出额外的符号。

var user = "<@!123456789>" //Just assuming that's their user id.
var userID = user.replace(/[<@!>]/g, '');

这会给我们123456789。他们的用户 ID。当然,您可以通过两种方式轻松获取用户对象(您很可能会获取他们的用户名),如果他们位于您使用该命令的服务器中,您可以

var member = message.guild.member(userID);

OR如果他们不在服务器中并且您仍然想访问他们的用户对象,那么;

client.fetchUser(userID)
    .then(user => {
        //Do some stuff with the user object.
    }, rejection => {
        //Handle the error in case one happens (that is, it could not find the user.)
    });

You can ALSO只需直接从标记访问成员对象(如果他们在消息中标记了它们)。

var member = message.mentions.members.first();

就像这样,无需任何正则表达式,您就可以获得完整的成员对象并保存它们的 id。

var memberID = member.id;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不一致 <@!user id> 和 <@userid> 的相关文章

随机推荐