private async Task AddChat(string chatRawArgs, long replyChatId, int replyToMessageId) { var arg = chatRawArgs.Split('\n', StringSplitOptions.RemoveEmptyEntries); if (arg.Length < 2) { await SendMessage(replyChatId, "Неправильно отправленная команда. Пожалуйста попробуйте ещё раз или обратитесь к админам за помощью.", replyToMessageId); return; } if (!arg[1].StartsWith("https://t.me/joinchat/")) { await SendMessage( replyChatId, "Неправильная ссылка приглашение: ссылка должна начинаться с 'https://t.me/joinchat/'. Добавлять ссылку на публичные чаты не нужно.", replyToMessageId); return; } var chatName = arg[0]; var chatLink = arg[1]; await _chatRepository.AddOrUpdate(new SavedChat(-1, chatName, chatLink)); await SendMessage(replyChatId, "Чат добавлен/обновлён! Спасибо за помощь боту!", replyToMessageId); }
public async Task <ActionResult <ChatViewModel> > Initialise([FromBody] ChatViewModel message) { var chatUser = await _userManager.FindByEmailAsync(_chatSettings.CurrentChatUser); if (chatUser != null) { var chat = _mapper.Map <ChatMessage>(message); chat.FromUser = _applicationUser; chat.ToUser = chatUser; if (chat.FromUser != null) { _chatRepository.AddOrUpdate(chat); await _unitOfWork.CompleteAsync(); } else { // it's an anonymous chat, we don't need to save item chat.Id = System.Guid.NewGuid(); } var filledMessage = _mapper.Map <ChatViewModel>(chat); filledMessage.FromUserName = _applicationUser == null ? message.FromUserName : _applicationUser.GetBestGuessName(); //send push message to whoever is registered as admin await _subscriptionStore.ForEachSubscriptionAsync(chatUser.Id, (PushSubscription subscription) => { _notificationService.SendNotificationAsync( subscription, new PushMessage("New SUPPORT Request") { Urgency = PushMessageUrgency.High, Topic = "NewSupport" }, _appSettings.SiteUrl); }); if (await _supportChatService.InitiateSupportRequest(filledMessage)) { await _hub.SendUserAsync(filledMessage.ToUserId, "support-message", new object[] { filledMessage }); return(Ok(filledMessage)); } } return(StatusCode(503)); }