private async void Handle(Message message) { if (message.From != null) { Console.WriteLine(string.Format("{0} {1}: {2}", DateTime.Now, message.From.Username, message.Text)); } var account = _accounts.GetById(message.From.Id); if (account != null && account.Status != Status.Ok) { await _registrationProcess.HandleCurrentStep(account, message); return; } if (account != null && account.TelegramName != (message.From.Username ?? string.Empty)) { account.TelegramName = message.From.Username ?? string.Empty; _accounts.Update(account); } if (message.NewChatMember != null && account == null) { await _client.SendMessage(new SendMessageQuery() { ChatId = message.Chat.Id, ReplyToMessageId = message.MessageId, Text = Messages.GetWelcomeMessage(message.NewChatMember) }); return; } if (string.IsNullOrEmpty(message.Text)) { return; } message.Text = message.Text.ToLower(); if (message.Chat.Type != "private" && !message.Text.Contains("@clankbot")) { return; } message.Text = message.Text.Replace("@clankbot", ""); var command = _commands.FirstOrDefault(c => c.IsApplicable(message)); if (command != null) { if (command.IsPrivateOnly() && message.Chat.Type != "private") { await _client.SendMessage(new SendMessageQuery() { ChatId = message.Chat.Id, ReplyToMessageId = message.MessageId, Text = Messages.PrivateOnlyCommand }); return; } await command.Handle(message); } }