Сергей Паньков, сам года два назад подумывал состряпать какой-нибудь велосипедик, чтоб хотя бы в комменты им писало само… но уткнулся в собственное непонимание, как тут аутентифицироваться… и отложил. Так оно там и лежит.
Для чего переиспользуете имя word в строке word = bot.send_message(message.chat.id, word) - это не запрещено, но для чего?
В вопросе упоминаете переменную anyword -где она в коде?
Глобальные переменные где объявляются в области видимости global?
Почему глобальные переменные не объявлены в функции anserwing как глобальные?
И вообще, такое применение глобальных переменных чревато неприятностями, которые вы и наблюдаете. Никакого контроля за тем, кто что туда пишет, естественно там бардак. Не связывайтесь с глобальными переменными. В этих ваших ботах с ними одна морока - одна переменная на всех пользователей, путаница гарантирована.
AnKus, даже если посмотреть на описание - «ставит» и «проверяет». Это две разных функции. И так далее каждую из этих можно поделить. Не страшно, если функции будут на 1-2 строчки. Страшнее то, что сейчас…
Если вам действительно охота разобраться и починить прогу, я бы вам советовал переписать ее.
В ней присутствуют огромные функции, которые делают всё и сразу. Так быть не должно. Вам надо разделить эту портянку кода на отдельные простые и понятные элементы и отладить их работу по-отдельности. Тогда найти место, где косяк, будет гораздо проще. Кстати, имена функций должны отображать действие (т.е. быть глаголом или начинаться с глагола).
Мне вот глядеть на эту кучу спагетти вообще не хочется. Извините...
Среди прочих советов скажу вот что:
В современных Linux какая-то версия python обычно является частью дистрибутива и используется системой или системными утилитами.
И поэтому нежелательно его как-либо менять, может неожиданно поплохеть системе.
Ставьте нужный вам Python со всякими там pip и т.п. в виртуальное окружение и там над ними издевайтесь как угодно.
Системный Python лучше не трогать.
Для начала вообще иногда удобно поставить anaconda - оно вам и менеджер окружений, и нужные версии ПО подтянет, и для всяких экспериментов удобно.
Это неправильный путь.
Полагаю, лучше делать по-другому.
Каждый проект надо делать в своем окружении, почитай про окружение Python. И в это окружение устанавливать нужные версии Python и соответствующих библиотек. И там все отлаживать и выпускать, фиксируя версии ПО при помощи pip freeze > requirements.txt.
Переводишь проект на новый Python - делаешь новую версию окружения, туда всё подтягиваешь и там всё перенастраиваешь. И опять доводишь до готового продукта и фиксируешь версии ПО.
Альтернатива - покопаться в документации autogui - возможно, там уже есть встроенные и ожидание появления элемента, и тайм-лимит.
Если нету - цикл while сделать не бесконечный, а по условиям «или нашлось, или счётчик секунд кончился». Впрочем, можно и долями секунд тикать.