mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-11-10 19:46:36 +03:00
Fallback to MemorySession if sqlite3 is not available
This commit is contained in:
parent
16f7626ceb
commit
7a7923b317
|
@ -13,7 +13,7 @@ from ..crypto import rsa
|
||||||
from ..extensions import markdown
|
from ..extensions import markdown
|
||||||
from ..network import MTProtoSender, ConnectionTcpFull
|
from ..network import MTProtoSender, ConnectionTcpFull
|
||||||
from ..network.mtprotostate import MTProtoState
|
from ..network.mtprotostate import MTProtoState
|
||||||
from ..sessions import Session, SQLiteSession
|
from ..sessions import Session, SQLiteSession, MemorySession
|
||||||
from ..tl import TLObject, functions, types
|
from ..tl import TLObject, functions, types
|
||||||
from ..tl.alltlobjects import LAYER
|
from ..tl.alltlobjects import LAYER
|
||||||
|
|
||||||
|
@ -171,7 +171,18 @@ class TelegramBaseClient(abc.ABC):
|
||||||
|
|
||||||
# Determine what session object we have
|
# Determine what session object we have
|
||||||
if isinstance(session, str) or session is None:
|
if isinstance(session, str) or session is None:
|
||||||
|
try:
|
||||||
session = SQLiteSession(session)
|
session = SQLiteSession(session)
|
||||||
|
except ValueError:
|
||||||
|
import warnings
|
||||||
|
warnings.warn(
|
||||||
|
'The sqlite3 module is not available under this '
|
||||||
|
'Python installation and no custom session '
|
||||||
|
'instance was given; using MemorySession.\n'
|
||||||
|
'You will need to re-login every time unless '
|
||||||
|
'you use another session storage'
|
||||||
|
)
|
||||||
|
session = MemorySession()
|
||||||
elif not isinstance(session, Session):
|
elif not isinstance(session, Session):
|
||||||
raise TypeError(
|
raise TypeError(
|
||||||
'The given session must be a str or a Session instance.'
|
'The given session must be a str or a Session instance.'
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import datetime
|
import datetime
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import sqlite3
|
|
||||||
from base64 import b64decode
|
from base64 import b64decode
|
||||||
from os.path import isfile as file_exists
|
from os.path import isfile as file_exists
|
||||||
|
|
||||||
|
@ -13,6 +12,11 @@ from ..tl.types import (
|
||||||
InputPhoto, InputDocument, PeerUser, PeerChat, PeerChannel
|
InputPhoto, InputDocument, PeerUser, PeerChat, PeerChannel
|
||||||
)
|
)
|
||||||
|
|
||||||
|
try:
|
||||||
|
import sqlite3
|
||||||
|
except ImportError:
|
||||||
|
sqlite3 = None
|
||||||
|
|
||||||
EXTENSION = '.session'
|
EXTENSION = '.session'
|
||||||
CURRENT_VERSION = 4 # database version
|
CURRENT_VERSION = 4 # database version
|
||||||
|
|
||||||
|
@ -27,6 +31,9 @@ class SQLiteSession(MemorySession):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, session_id=None):
|
def __init__(self, session_id=None):
|
||||||
|
if sqlite3 is None:
|
||||||
|
raise ValueError('sqlite3 is not installed')
|
||||||
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.filename = ':memory:'
|
self.filename = ':memory:'
|
||||||
self.save_entities = True
|
self.save_entities = True
|
||||||
|
|
Loading…
Reference in New Issue
Block a user