diff --git a/TLSharp.Core/Network/MtProtoSender.cs b/TLSharp.Core/Network/MtProtoSender.cs index f7c4ef2..2d8babf 100644 --- a/TLSharp.Core/Network/MtProtoSender.cs +++ b/TLSharp.Core/Network/MtProtoSender.cs @@ -279,9 +279,7 @@ namespace TLSharp.Core.Network { var resultString = Regex.Match(errorMessage, @"\d+").Value; var dcIdx = int.Parse(resultString); - var exception = new InvalidOperationException($"Your phone number registered to {dcIdx} dc. Please update settings. See https://github.com/sochix/TLSharp#i-get-an-error-migrate_x for details."); - exception.Data.Add("dcId", dcIdx); - throw exception; + throw new MigrationNeededException(dcIdx); } else { @@ -484,4 +482,15 @@ namespace TLSharp.Core.Network return new MemoryStream(new byte[len], 0, len, true, true); } } + + internal class MigrationNeededException : Exception + { + internal int DC { get; private set; } + + internal MigrationNeededException(int dc) + : base ("$Your phone number is registered to a different dc: {dc}. Please migrate.") + { + DC = dc; + } + } } \ No newline at end of file diff --git a/TLSharp.Core/TelegramClient.cs b/TLSharp.Core/TelegramClient.cs index 75d0466..40eefaf 100644 --- a/TLSharp.Core/TelegramClient.cs +++ b/TLSharp.Core/TelegramClient.cs @@ -110,16 +110,9 @@ namespace TLSharp.Core completed = true; } - catch (InvalidOperationException ex) + catch (MigrationNeededException ex) { - if (ex.Message.StartsWith("Your phone number registered to") && ex.Data["dcId"] != null) - { - await ReconnectToDcAsync((int)ex.Data["dcId"]); - } - else - { - throw; - } + await ReconnectToDcAsync(ex.DC); } }