diff --git a/readthedocs/extra/advanced-usage/sessions.rst b/readthedocs/extra/advanced-usage/sessions.rst index 765641ab..fca7828e 100644 --- a/readthedocs/extra/advanced-usage/sessions.rst +++ b/readthedocs/extra/advanced-usage/sessions.rst @@ -59,8 +59,13 @@ session file on your Heroku dyno itself. The most complicated is creating a custom buildpack to install SQLite >= 3.8.2. -Generating Session File on a Heroku Dyno -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Generating a Session File on a Heroku Dyno +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. note:: + Due to Heroku's ephemeral filesystem all dynamically generated + files not part of your applications buildpack or codebase are destroyed + upon each restart. .. warning:: Do not restart your application Dyno at any point prior to retrieving your @@ -78,7 +83,7 @@ Using this scaffolded code we can start the authentication process: client = TelegramClient('login.session', api_id, api_hash).start() At this point your Dyno will crash because you cannot access stdin. Open your -Dyno's control panel on the Heroku website and "run console" from the "More" +Dyno's control panel on the Heroku website and "Run console" from the "More" dropdown at the top right. Enter ``bash`` and wait for it to load. You will automatically be placed into your applications working directory. @@ -93,3 +98,16 @@ directory. Now you can create a git repo on your account and commit You cannot ``ssh`` into your Dyno instance because it has crashed, so unless you programatically upload this file to a server host this is the only way to get it off of your Dyno. + +You now have a session file compatible with SQLite <= 3.8.2. Now you can +programatically fetch this file from an external host (Firebase, S3 etc.) +and login to your session using the following scaffolded code: + + .. code-block:: python + + fileName, headers = urllib.request.urlretrieve(file_url, 'login.session') + client = TelegramClient(os.path.abspath(fileName), api_id, api_hash).start() + +.. note:: + - ``urlretrieve`` will be depreciated, consider using ``requests``. + - ``file_url`` represents the location of your file.