Reset TelegramClient completely on AuthKeyDuplicatedError
This commit is contained in:
@@ -129,9 +129,9 @@ class AbstractUser(ABC):
|
||||
def _init_client(self) -> None:
|
||||
self.log.debug(f"Initializing client for {self.name}")
|
||||
|
||||
self.session = self.session_container.new_session(self.name)
|
||||
session = self.session_container.new_session(self.name)
|
||||
if config["telegram.server.enabled"]:
|
||||
self.session.set_dc(config["telegram.server.dc"],
|
||||
session.set_dc(config["telegram.server.dc"],
|
||||
config["telegram.server.ip"],
|
||||
config["telegram.server.port"])
|
||||
|
||||
@@ -145,10 +145,10 @@ class AbstractUser(ABC):
|
||||
appversion = config["telegram.device_info.app_version"]
|
||||
connection, proxy = self._proxy_settings
|
||||
|
||||
assert isinstance(self.session, Session)
|
||||
assert isinstance(session, Session)
|
||||
|
||||
self.client = MautrixTelegramClient(
|
||||
session=self.session,
|
||||
session=session,
|
||||
|
||||
api_id=config["telegram.api_id"],
|
||||
api_hash=config["telegram.api_hash"],
|
||||
|
||||
@@ -210,7 +210,13 @@ class User(AbstractUser, BaseUser):
|
||||
self.log.warning("Got AuthKeyDuplicatedError in start()")
|
||||
await self.push_bridge_state(BridgeStateEvent.BAD_CREDENTIALS,
|
||||
error="tg-auth-key-duplicated")
|
||||
# Don't return, let the session be deleted if delete_unless_authenticated is true
|
||||
await self.client.disconnect()
|
||||
self.client.session.delete()
|
||||
self.client = None
|
||||
if not delete_unless_authenticated:
|
||||
# The caller wants the client to be connected, so restart the connection.
|
||||
await super().start()
|
||||
return self
|
||||
except Exception:
|
||||
await self.push_bridge_state(BridgeStateEvent.UNKNOWN_ERROR)
|
||||
raise
|
||||
|
||||
Reference in New Issue
Block a user