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

Рейтинг: -1Ответов: 1Опубликовано: 23.02.2023

Учусь на Я.Практикуме. Пишем бота, который уведомляет об изменении статуса домашней работы. Код написан, ревьюером проверен, всё хорошо. Но он не запускается. Библиотека 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. Вроде поменялся:

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

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

Ответы

▲ 0Принят

Похоже, что в переменной 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. Если вы используете устаревшую версию, то могут возникать проблемы совместимости.