python-telegram-bot: TypeError: can only concatenate str (not "tuple") to str

Учусь на Я.Практикуме. Пишем бота, который уведомляет об изменении статуса домашней работы. Код написан, ревьюером проверен, всё хорошо. Но он не запускается. Библиотека python-telegram-bot ругается, выдаёт такую ошибку:

    Traceback (most recent call last):
  File "c:\Dev\homework_bot\homework.py", line 162, in <module>
    main()
  File "c:\Dev\homework_bot\homework.py", line 119, in main
    bot = telegram.Bot(token=TELEGRAM_TOKEN)
  File "C:\Dev\homework_bot\spr7_venv\lib\site-packages\telegram\_bot.py", line 231, in __init__
    self._base_url: str = base_url + self._token
TypeError: can only concatenate str (not "tuple") to str

Вот здесь он видит константу TELEGRAM_TOKEN как кортеж

Я сначала попробовала аннотацией типов присвоить константе TELEGRAM_TOKEN тип str. Вроде поменялся:

Но всё равно выходит та же ошибка. Переустанавливала пакеты, всё без толку.

Заранее спасибо за любую помощь/подсказку!?


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

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

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

Убедитесь, что она правильно задана и не содержит ошибок. В Windows команда для проверки значения переменной окружения:

echo %TELEGRAM_TOKEN%

В Linux и macOS:

echo $TELEGRAM_TOKEN

Также убедитесь, что вы не перезаписываете значение переменной TELEGRAM_TOKEN где-то в коде.

Если после проверки всего вышеуказанного ошибка остается, то попробуйте явно преобразовать значение переменной TELEGRAM_TOKEN к типу str:

bot = telegram.Bot(token=str(TELEGRAM_TOKEN))

Также убедитесь, что вы используете последнюю версию библиотеки python-telegram-bot. Если вы используете устаревшую версию, то могут возникать проблемы совместимости.

→ Ссылка