private void Client_UpdateReceived(object sender, TdApi.Update e) { switch (e) { //case TdApi.Update.UpdateAuthorizationState updateAuthorizationState: //break; case TdApi.Update.UpdateNewMessage updateNewMessage: //DataReceiveHelper.Information.AppendLine("New Message Received"); switch (updateNewMessage.Message.ChatId) { case GoldChannelId: CheckGoldChannelMessage(updateNewMessage.Message); break; case DollarChannelId: CheckDollarChannelMessage(updateNewMessage.Message); break; } break; } }
public BaseUpdate Resolve(TdApi.Update updateObject) { return(Resolve((TdApi.Update.UpdateNewMessage)updateObject)); }
private async void client_UpdateReceived(object sender, TdApi.Update e) { switch (e) { case TdApi.Update.UpdateConnectionState connState: _logger.LogDebug("Telegram Connection State Update: {COnnectionState}", connState.State.GetType().Name); switch (connState.State) { case TdApi.ConnectionState.ConnectionStateUpdating s1: case TdApi.ConnectionState.ConnectionStateReady s2: case TdApi.ConnectionState.ConnectionStateConnecting s3: ChangeState(AuthState); break; default: ChangeState(TelegramSessionState.Disconnected); break; } break; case TdApi.Update.UpdateAuthorizationState authState when authState.AuthorizationState is TdApi.AuthorizationState.AuthorizationStateWaitTdlibParameters: ChangeState(TelegramSessionState.Initializing); await _client.ExecuteAsync(new TdApi.SetTdlibParameters { Parameters = new TdApi.TdlibParameters { ApiId = _configuration.ApiId, ApiHash = _configuration.ApiHash, ApplicationVersion = "1.3.0", DeviceModel = "PC", SystemLanguageCode = "en", SystemVersion = RuntimeInformation.OSDescription, DatabaseDirectory = System.IO.Path.Combine(_configuration.Data, "db"), FilesDirectory = System.IO.Path.Combine(_configuration.Data, "files") } }); ChangeState(TelegramSessionState.Initialized); break; case TdApi.Update.UpdateAuthorizationState authState when authState.AuthorizationState is TdApi.AuthorizationState.AuthorizationStateWaitEncryptionKey: { ChangeState(TelegramSessionState.SettingEncryptionKey); var key = _configuration.EncryptionKey; var bkey = new byte[key.Length / 2]; for (int i = 0; i < key.Length / 2; i++) { bkey[i] = Convert.ToByte(key.Substring(i * 2, 2), 16); } await _client.ExecuteAsync(new TdApi.CheckDatabaseEncryptionKey() { EncryptionKey = bkey }); break; } case TdApi.Update.UpdateAuthorizationState authState when authState.AuthorizationState is TdApi.AuthorizationState.AuthorizationStateWaitPhoneNumber: ChangeState(AuthState = TelegramSessionState.PendingServiceAccount); break; case TdApi.Update.UpdateAuthorizationState authState when authState.AuthorizationState is TdApi.AuthorizationState.AuthorizationStateWaitCode: ChangeState(AuthState = TelegramSessionState.PendingCode); break; case TdApi.Update.UpdateAuthorizationState authState when authState.AuthorizationState is TdApi.AuthorizationState.AuthorizationStateWaitPassword: ChangeState(AuthState = TelegramSessionState.PendingPassword); break; case TdApi.Update.UpdateAuthorizationState authState when authState.AuthorizationState is TdApi.AuthorizationState.AuthorizationStateReady: ChangeState(AuthState = TelegramSessionState.Connected); LoadContactsAndChats(); break; case TdApi.Update.UpdateAuthorizationState authState when authState.AuthorizationState is TdApi.AuthorizationState.AuthorizationStateClosed: ResetSession(); break; case TdApi.Update.UpdateAuthorizationState authState: _logger.LogInformation("Unexpected Telegram State {state}", authState.AuthorizationState.DataType); ChangeState(AuthState = TelegramSessionState.Unauthorized); break; case TdApi.Update.UpdateUser updateUser: var user = await GetTelegramContact(updateUser.User.Id); user.FirstName = updateUser.User.FirstName; user.LastName = updateUser.User.LastName; user.Username = updateUser.User.Username; break; case TdApi.Update.UpdateOption option when option.Value is TdApi.OptionValue.OptionValueString value: _logger.LogDebug("Option: {Name} = {Value}", option.Name, value.Value); break; case TdApi.Update.UpdateOption option when option.Value is TdApi.OptionValue.OptionValueBoolean value: _logger.LogDebug("Option: {Name} = {Value}", option.Name, value.Value); break; case TdApi.Update.UpdateOption option when option.Value is TdApi.OptionValue.OptionValueInteger value: _logger.LogDebug("Option: {Name} = {Value}", option.Name, value.Value); break; case TdApi.Update.UpdateOption option when option.Value is TdApi.OptionValue.OptionValueEmpty value: _logger.LogDebug("Option: {Name} is Empty", option.Name, null); break; case TdApi.Update.UpdateMessageSendSucceeded sentMessage: if (_pendingPins.Contains(sentMessage.OldMessageId)) { await _client.ExecuteAsync(new TdApi.PinChatMessage() { ChatId = sentMessage.Message.ChatId, MessageId = sentMessage.Message.Id, DisableNotification = true }); _pendingPins.Remove(sentMessage.OldMessageId); } break; case TdApi.Update.UpdateNewMessage newMessage: if (!(newMessage.Message.IsOutgoing && newMessage.Message.SendingState is TdApi.MessageSendingState.MessageSendingStatePending)) { if (newMessage.Message.Content is TdApi.MessageContent.MessageChatChangeTitle newTitle) { var chatChanged = await GetChat(newMessage.Message.ChatId); _logger.LogInformation("Chat title changed for {chatId} from {oldTitle} to {chatTitle}", chatChanged.ChatId, chatChanged.Title, newTitle.Title); chatChanged.Title = newTitle.Title; } else { var msg = await CreateMessage(newMessage.Message); if (msg != null) { _messageFeed.OnNext(msg); } } } else { _logger.LogInformation("Unknown message type received {chatId} {chatTitle}", newMessage.Message.ChatId, newMessage.DataType); } break; case TdApi.Update.UpdateNewChat newChat: var chat = await GetChat(newChat.Chat.Id, newChat.Chat); _logger.LogInformation("Loading chat {chatId} {chatTitle}", chat.Id, chat.Title); break; case TdApi.Update.UpdateUserStatus userStatus: break; default: _logger.LogDebug("Unhandled Telegram Event {eventType}", e.DataType); break; } }
public static bool IsAuthorizationStateClosed(this TdApi.Update update) => update is TdApi.Update.UpdateAuthorizationState stateUpdate &&