@THEMOD

Почему бот не отвечает на упоминания?

Пишу бота на библиотеке vk-io. Бот не отвечает на упоминания, тоесть в беседе на команду "Помощь" бот реагирует, а на "@bot Помощь" не реагирует, как решить?
  • Вопрос задан
  • 558 просмотров
Решения вопроса 2
Negezor
@Negezor
Senior Shaurma Developer
Всё просто, так как текст доходит с упоминанием для обработчиков -- это не универсально. Решить проблему очень просто, нам нужно почистить текст от упоминания до его использования. Можно написать вот такой middleware, он будет проверять наличие упоминания в чате и убирать его из текста для любых других вариантов (работать будет и в ЛС). В остальных случаях, он просто не пропустит дальше выполнение.
const GROUP_ID = 123456789;

const mentionPattern = new RegExp(
    String.raw`^(?:\[club${GROUP_ID}\|[^\]]+\])(?:[\s.,\'\"!?\-+]+|$)`,
    'i'
);

vk.updates.on('message', (context, next) => {
    if (context.isChat && !mentionPattern.test(context.text)) {
        return;
    }

    if (context.text) {
        context.text = context.text.replace(mentionPattern, '');   
    }

    return next();
});

Демонстрация регулярного выражения
Ответ написан
Комментировать
@THEMOD Автор вопроса
Спасибо всем кто хотел помочь) Проблему решил сам, оказалось я вместо сlub ставил public и поэтому не получалось
Ещё раз всем спасибо!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SagePtr
@SagePtr
Еда - это святое
Вероятнее всего, вы проверяете на точное соответствие команде, а "@bot Помощь" !== "Помощь"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы