Exemple #1
0
        public string OnMessage(ChatEventGetDTO chatEventGetDTO)
        {
            string pattern     = @"((\w+\s\w+){" + new Random().Next(1, 4) + @"})\s";
            string replacement = "$1 " + _replacements[new Random().Next(_replacements.Length)] + " ";

            return(Regex.Replace(chatEventGetDTO.Message.Text, pattern, replacement));
        }
Exemple #2
0
        public IEnumerable <BotMessageDTO> BotOnEvent(ChatEventGetDTO chatEventGetDTO, string[] botNames, ActionTypes actionType)
        {
            using var scope = _serviceProvider.CreateScope();
            foreach (var eventBot in scope.ServiceProvider.GetServices <IEventBot>()
                     .Where(service => botNames.Contains(service.Name) && service.AllowedActions.HasFlag(actionType)))
            {
                yield return new BotMessageDTO()
                       {
                           Message = eventBot.OnEvent(chatEventGetDTO, actionType),
                           BotName = eventBot.Name
                       }
            }
            ;

            if (actionType == ActionTypes.NewMessage)
            {
                foreach (var bot in BotOnMessage(chatEventGetDTO, botNames))
                {
                    yield return(bot);
                }
            }
            else if (actionType == ActionTypes.NewCommand)
            {
                foreach (var bot in BotOnCommand(chatEventGetDTO, botNames))
                {
                    yield return(bot);
                }
            }
        }
    }
Exemple #3
0
        public void NotifyAsync()
        {
            Task.Run(async() =>
            {
                using var scope           = _serviceScopeFactory.CreateScope();
                var _chatEventRepository  = scope.ServiceProvider.GetService <IChatEventRepository>();
                var _chatActionRepository = scope.ServiceProvider.GetService <IBotActionOnEventRepository>();
                var _botRepository        = scope.ServiceProvider.GetService <IBotRepository>();
                var context = scope.ServiceProvider.GetService <ChatNpgSQLContext>();

                ChatEvent chatEvent;
                while ((chatEvent = await _chatEventRepository.FindNewAndUpdateAsync()) != null)
                {
                    string[] names = await _botRepository.GetBotsNamesByDialogIdAsync(chatEvent.DialogId);

                    ActionTypes actionType          = (ActionTypes)chatEvent.TypeOfActionId;
                    ChatEventGetDTO chatEventGetDTO = _mapper.Map <ChatEventGetDTO>(chatEvent);
                    foreach (var response in _botManager.BotOnEvent(chatEventGetDTO, names, actionType))
                    {
                        if (!String.IsNullOrEmpty(response.Message))
                        {
                            BotActionOnEvent botAction = new BotActionOnEvent()
                            {
                                ChatEvent   = chatEvent,
                                BotResponse = response.Message,
                                BotName     = response.BotName
                            };
                            _chatActionRepository.Add(botAction);
                        }
                    }
                    chatEvent.State = 2;
                    await context.SaveChangesAsync();
                }
            });
        }
Exemple #4
0
        public string OnMessage(ChatEventGetDTO chatEventGetDTO)
        {
            RpcClient rpcClient = new RpcClient(_settings);
            var       s         = rpcClient.Call(GetJson(chatEventGetDTO).ToString());

            rpcClient.Close();
            return(s);
        }
Exemple #5
0
 public string OnEvent(ChatEventGetDTO chatEventGetDTO, ActionTypes action)
 {
     if (action == AllowedActions)
     {
         if (!String.IsNullOrEmpty(chatEventGetDTO.User.Login))
         {
             return($"Hello {chatEventGetDTO.User.Login}");
         }
     }
     return(null);
 }
Exemple #6
0
        public string OnMessage(ChatEventGetDTO chatEventGetDTO)
        {
            Match match = Regex.Match(chatEventGetDTO.Message.Text, pattern);

            if (match.Success)
            {
                int      minutes = int.Parse(match.Result("$1"));
                var      date    = DateTime.Now.AddMinutes(minutes);
                TimeSpan time    = date.TimeOfDay;
                return(String.Format(onCommandResponse, minutes, time.Hours, time.Minutes));
            }
            return(null);
        }
Exemple #7
0
 public IEnumerable <BotMessageDTO> BotOnCommand(ChatEventGetDTO chatEventGetDTO, string[] botNames)
 {
     using var scope = _serviceProvider.CreateScope();
     foreach (var commandBot in scope.ServiceProvider.GetServices <ICommandBot>()
              .Where(service => botNames.Contains(service.Name)))
     {
         yield return new BotMessageDTO()
                {
                    Message = commandBot.OnCommand(chatEventGetDTO),
                    BotName = commandBot.Name
                }
     }
     ;
 }
Exemple #8
0
 public string OnEvent(ChatEventGetDTO chatEventGetDTO, ActionTypes action)
 {
     if ((AllowedActions & action) == ActionTypes.UserAdded)
     {
         return($"Ты кто? Кто его позвал? Чей это друг?");
     }
     else if ((AllowedActions & action) == ActionTypes.UserDeleted)
     {
         return(_answersOnDelete[new Random().Next(_answersOnDelete.Length)]);
     }
     else if ((AllowedActions & action) == ActionTypes.NewMessage)
     {
         return(_answersOnMessage[new Random().Next(_answersOnMessage.Length)]);
     }
     return(null);
 }
Exemple #9
0
        public string OnCommand(ChatEventGetDTO chatEventGetDTO)
        {
            int existing = CommandExists(chatEventGetDTO.Message.Text);

            switch (existing)
            {
            case 0:
                return(DateTime.Now.ToString());

            case 1:
                return(DateTime.UtcNow.ToString());

            default:
                return(null);
            }
        }
Exemple #10
0
        public string OnCommand(ChatEventGetDTO chatEventGetDTO)
        {
            string api = _settings.KeyApi;
            string uri = _settings.Uri;

            string address = string.Format(uri, chatEventGetDTO.Message.Text, api);

            try
            {
                JObject response = JObject.Parse(new System.Net.WebClient().DownloadString(address));
                return(CreateString(response));
            }
            catch (Exception)
            {
                return(null);
            }
        }
Exemple #11
0
        protected JObject GetJson(ChatEventGetDTO chatEventGetDTO)
        {
            Match match = Regex.Match(chatEventGetDTO.Message.Text, pattern);

            if (match.Success)
            {
                string  uri     = match.Result("$1");
                string  folder  = match.Result("$2");
                JObject jObject = new JObject(
                    new JProperty(nameof(uri), uri),
                    new JProperty(nameof(folder), folder),
                    new JProperty(nameof(chatEventGetDTO.User.Login).ToLower(), chatEventGetDTO.User.Login));

                return(jObject);
            }
            return(null);
        }
Exemple #12
0
 public string OnEvent(ChatEventGetDTO chatEventGetDTO, ActionTypes action)
 {
     throw new NotImplementedException();
 }