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)); }
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); } } } }
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(); } }); }
public string OnMessage(ChatEventGetDTO chatEventGetDTO) { RpcClient rpcClient = new RpcClient(_settings); var s = rpcClient.Call(GetJson(chatEventGetDTO).ToString()); rpcClient.Close(); return(s); }
public string OnEvent(ChatEventGetDTO chatEventGetDTO, ActionTypes action) { if (action == AllowedActions) { if (!String.IsNullOrEmpty(chatEventGetDTO.User.Login)) { return($"Hello {chatEventGetDTO.User.Login}"); } } return(null); }
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); }
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 } } ; }
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); }
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); } }
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); } }
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); }
public string OnEvent(ChatEventGetDTO chatEventGetDTO, ActionTypes action) { throw new NotImplementedException(); }