Discord Bot (JS) не распознает упоминания на мобильных устройствах - PullRequest
1 голос
/ 08 июля 2020

У меня небольшая проблема с ботом, который я создаю с помощью Discord. js. Приведенный ниже код отлично работает, если пользователь использует настольную версию Discord, но не работает на мобильных устройствах:

if (message.content.includes('<@!700150870041690192>')) {
        var authorId = message.author.id;
        var mentionString = '<@!'+authorId+'>';
        var role = message.guild.roles.find(role => role.name === "Naughty Seat");
        message.member.addRole(role);
        message.channel.send(mentionString+', enjoy your naughty seat.');

В основном, если упоминается бот, вам предоставляется роль. Я считаю, что это может иметь какое-то отношение к работе мобильных тегов, но я не уверен.

Любая помощь приветствуется!

Ответы [ 2 ]

2 голосов
/ 08 июля 2020

Объект message имеет свойство mentions, содержащее объект MessageMentions , содержащий всех участников и пользователей, упомянутых в сообщении. Попробуйте использовать это вместо синтаксического анализа текста вручную.

Чтобы получить Collection упомянутых элементов:

message.mentions.members

Кроме того, вы вручную создаете упоминания в своем коде. Вам это не нужно, так как вы можете упомянуть пользователя, автоматически объединив его со строкой:

message.channel.send("Hello, " + message.author);
1 голос
/ 09 июля 2020

По какой-то причине в упоминаниях пользователей на мобильных устройствах нет восклицательного знака перед идентификатором пользователя. Вы можете исправить свой код, заменив оператор if на этот, используя регулярное выражение:

if (/<@!700150870041690192>|<@700150870041690192>/.test(message.content)) {
    // Your code
}
...