Пишу бота для конференций (общий текстовой чат).
Хочу чтобы бот мог делать некоторые функции:
1) Не ломаться, если команда была произнесена не буква в букву
Например:
Бот, скажи погоду
скажи погоду, бот
кстати, бот, что там с погодой?
2) Различать упоминание о нем в разговоре, и прямое обращение.
Например:
Не реагировать, когда:
бот все ещё не умеет загружать картинки, я скоро это исправлю
Реагировать, когда:
Бот, скажи погоду
На самом деле первый пункт для меня куда важнее, а без второго можно обойтись т.к. хочу чтобы бот мог понимать обращение не только когда сообщение начинается с его имени, люди могут написать: "Эй бот", "ботботбот", "Боооот" и т.п.
Так же из речи надо выкинуть все лишнее и нормализовать её, понять, что "картиночка котика" и "изображение кота" и "фото котэ" - одна и та же команда
И вот вопрос, с помощью чего это сделать? (т.к. такой алгоритм я точно не смогу написать).
Есть ли что-то готовое? Изначально моя цель в функциях бота, но я бы очень хотел дать ему способность понимать естественную речь людей, если это окажется слишком сложно, значит не судьба.
Прошу статей с исходниками, ссылок на репозитории или библиотеки.
Спасибо.