Проблемы с запуском Telegram бота на Python на сервере sweb (библиотека pyTelegramBotAPI)

Пытаюсь организовать маленького бота, который будет проверять электронную почту через некоторые отрезки времени и при получении писем от определенного адреса будет присылать об этом уведомление в телеграм. Ранее бот тестово запускался из PyCharm абсолютно успешно. pyTelegramBotAPI на сервер был установлен (проверено через pip list). Предполагаю что для его корректной работы что-то еще может требоваться установить на сервер, но уже не могу определить что. На сервере используемом для запуска (sweb) установлен python 3.4 При попытке запуска бота на сервере в логе появляется запись:

Traceback (most recent call last):
  File "/%адрес%/public_html/cgi-bin/bot.py", line 2, in <module>
    import telebot
  File "/%адрес%/.thecode/lib/python3.4/site-packages/telebot/__init__.py", line 866
    e.args = e.args + (f'Typed middleware handler "{typed_middleware_handler.__qualname__}"',)
                                                                                           ^
SyntaxError: invalid syntax

В похожем вопросе советовали взять токен в коде в кавычки - но в моем случае он и так в них. Прилагаю и сам код тоже, возможно ошибка все-таки именно в нем.

import telebot
import schedule, time
import imaplib
import email
from email.header import decode_header

bot = telebot.TeleBot("%тут_токен%");

def mail_check():
    def bot_message(message_type):
        bot.send_message(%тут_id_конкретного юзера%, message_type)
    mail_pass = "%пароль%"
    username = "%логин%"
    imap_server = "%сервер%"
    imap = imaplib.IMAP4_SSL(imap_server)
    imap.login(username, mail_pass)
    imap.select("INBOX")
    last_message = imap.uid('search', "UNSEEN", "ALL")[-1][-1]
    if last_message!=b'':
        last_message_number = last_message.decode()
        last_message_number_list = last_message_number.split()
        for message_number in last_message_number_list:
            bytes_message_number = message_number.encode()
            res, msg = imap.uid('fetch', bytes_message_number, '(RFC822)')
            msg = email.message_from_bytes(msg[0][1])
            letter_from = msg["Return-path"]
            if '%адрес%' in letter_from:
                letter_subject = decode_header(msg["Subject"])[0][0].decode()
                if 'Заявка' in letter_subject:
                    bot_message('Новая заявка')
                elif 'КОРРЕКЦИЯ' in letter_subject:
                    bot_message('Коррекция заявки')
                elif 'Аннуляция' in letter_subject:
                    bot_message('Аннуляция заявки')
                else: pass
            else: pass
    else: pass
schedule.every(30).minutes.do(mail_check)
while True:
    schedule.run_pending()
    time.sleep(1)

Ответы (1 шт):

Автор решения: LuckyLucy

На сервере одновременно установлено несколько версий python (самая новая из них - 3.8), для запуска скрипта команду следовало формулировать точнее:

nohup python3.8 /%путь до файла скрипта%

Плюс была допущена ошибка при установке виртуального окружения - без уточнений в командах по дефолту был использован python 3.4. Соответственно pyTelegramBotAPI устанавливался под него, и теперь уже принудительно запускаемый на 3.8 скрипт библиотеку не находил. Было заново настроено виртуальное окружение по образцу из этой инструкции: https://help.sweb.ru/ustanovka-django_147.html Таким образом была решена возникшая проблема с библиотеками (теперь все работает без ошибок). Основная проблема была в версии python и точной формулировке команд именно для нее.

Отдельное спасибо хотелось бы выразить поддержке хостинга, помогшей разобраться в проблеме.

→ Ссылка