@nemolayn
Создатель бота Nemo

Как сделать так чтобы при неправильном написании бот сравнивал с командой и исполнял похожую?

Нужно сделать так что бы бот считывал команду
<<!пинг>>
даже при ошибки в контексте, например:
<<панг>>, <<пунг>> и т.п


Сейчас команда считывается при помощи RegExp
Тобежь:
bot.hear(/^(?:пинг)/i, async (message) => { 
//код ex: return message.send("ПоНг")
});

При этом используется модули: vk-io и vk-io@hear
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
Как-то так: /^(?:п[а-яйё]нг)/i.
Встречный вопрос. У вас бот для кого? Возможны ошибки в слове из 4 букв?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
def Levenshtein_distance(a, b, levenstein_gap=2):
    a, b = a.lower(), b.lower()
    "Calculates the Levenshtein distance between a and b."
    n, m = len(a), len(b)
    if n > m:
        # Make sure n <= m, to use O(min(n, m)) space
        a, b = b, a
        n, m = m, n
    current_row = range(n + 1)  # Keep current and previous row, not entire matrix
    for i in range(1, m + 1):
        previous_row, current_row = current_row, [i] + [0] * n
        for j in range(1, n + 1):
            add, delete, change = previous_row[j] + 1, current_row[j - 1] + 1, previous_row[j - 1]
            if a[j - 1] != b[i - 1]:
                change += 1
            current_row[j] = min(add, delete, change)
    return current_row[n] <= levenstein_gap

Реализация расчёта расстояния Левенштейна. Функция две строки и сравнивает их. Грубо говоря если "расстояние" между двумя строками не больше чем levenstein_gap, то строки считаются похожими
Ответ написан
Ваш ответ на вопрос

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

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