Проблема с чтением токена, размещенного на Heroku discord.py токен бота из файла .env

#python #heroku #environment-variables #discord.py

#python #heroku #переменные среды #discord.py

Вопрос:

У меня нет проблем с Heroku, когда я помещаю токен непосредственно в основной код. И мой код работает на моем собственном компьютере, когда я скрываю токен в своем файле .env. Но когда я запускаю его с Heroku, я получаю эти ошибки в своих журналах Heroku:

 2020-08-22T16:27:49.125385 00:00 app[worker.1]: await self.http.static_login(token.strip(), bot=bot)
2020-08-22T16:27:49.125400 00:00 app[worker.1]: AttributeError: 'NoneType' object has no attribute 'strip'
  

По сути, он вообще не читает мой токен. А затем статус меняется на сбой. Вот как я читаю токен:

 import os
import dotenv 
from dotenv import load_dotenv

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
  

Я проверил, и токен правильно считывается на моем компьютере.

Комментарии:

1. Вы добавили свой токен в свои конфигурационные переменные в heroku?

2. @jreiss1923 Я только что добавил его, и это исправлено! Спасибо!

3. Нет проблем, рад помочь

Ответ №1:

Причина, по которой это не сработало, заключается в том, что токен не был добавлен в переменные конфигурации в heroku. Для этого перейдите на страницу настроек вашего проекта, нажмите «Добавить переменные конфигурации» и добавьте свои переменные.

Ответ №2:

Heroku не читает ваш .env файл. Обычно я вижу те, которые используются для загрузки среды при разработке или тестировании, но не в производстве. Вы можете установить переменную среды на вкладке «Настройки» на панели инструментов Heroku, или вы можете установить ее со своего терминала с помощью командной строки Heroku:

 heroku config:set DISCORD_TOKEN=myvalue
  

Вы можете проверить свои переменные среды с помощью:

 heroku config
  

Или вы можете проверить одну переменную среды с помощью

 heroku config:get DISCORD_TOKEN