На самом деле я пишу Js Discord Bot и создаю систему XP.
Я хочу, чтобы мой бот выдавал уровень автора при вводе &level
, и это работало.
Но если я это сделаю &level @DiscordUser
, я смогу получить идентификатор этого пользователя Discord, за исключением случаев, когда я использую его во встраивании, подобном этому:
const embed = {
"title": "Fiche Niveau d'Exagide",
"description": 'Utilisateur : **' + `${userid.username}` + "**",
"color": 10384204
}
В этом случае он возвращает: Utilisateur : undefined
userid
— это константа, полученная от функции, которая преобразует упоминание в идентификатор.
Например, он превращается <@549317568339640336>
в 549317568339640336
function getUserFromMention(mention) {
if (!mention) return;
if (mention.startsWith('<@') && mention.endsWith('>')) {
mention = mention.slice(2, -1);
if (mention.startsWith('!')) {
mention = mention.slice(1);
}
return mention;
}}
Я просто ожидаю, что вставка вернет Utilisateur : Discord User
, если @Discord User
упоминается.
Вы можете использовать этот код
function mentionsRegex (dot) {
if (dot) {
// e.g. @google.com will match `google.com`
return /(?:^|[^a-zA-Z0-9_@!@#$%&*])(?:(?:@|@)(?!/))([a-zA-Z0-9/_.]{1,15})
(?:\b(?!@|@)|$)/
}
// e.g. @google.com will match `google`
return /(?:^|[^a-zA-Z0-9_@!@#$%&*])(?:(?:@|@)(?!/))([a-zA-Z0-9/_]{1,15})(?:\b(?!@|
@)|$)/
}
взято из упоминает регулярное выражение также вы можете увидеть упоминает из строк, таких как твиттер в javascript
Просто используйте следующее, чтобы получить пользовательский объект указанного пользователя:
message.mentions.users.first()
или объект-член упомянутого пользователя:
message.mentions.members.first()
Это не работает, это вернуть это /(?:^|[^a-zA-Z0-9_@!@#$%&*])(?:(?:@|@)(?!/))( [a-zA-Z0-9/_]{1,15})(?:\b(?!@| @)|$)/ а не идентификатор пользователя