Я прописываю id в callback_data кнопок в момент создания клавиатуры. При нажатии кнопки в callback_handler() проверяю, соответствует ли id списку допущенных пользователей. Если да, то производятся дальнейшие действия.
Наверное, есть и другие способы.
Гораздо проще список искомых слов изначально сделать таким, чтобы он содержал только нужные корни или другие части слов. А потом уже искать эти корни в тексте.
Если речь идет про функцию check2, то там сообщение в условии отправляется с уже прикрепленной клавиатурой. После выхода из цикла вы пытаетесь добавить еще одну кнопку: markup.add(done). Но сообщение с этой кнопкой вы не отправляете!