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);
        }
Esempio n. 2
0
        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));
        }