public async Task handleCommand_Strawpoll_StrawPollRequestedEventTriggered() { IServiceScopeFactory scopefactory = Substitute.For <IServiceScopeFactory>(); IEventBus eventbus = new EventBusLocal(); StrawPollRequestEventArgs receivedEventsArgs = null; //eventbus.TriggerEvent(EventType.).For CommandService service = new CommandService(scopefactory, eventbus); eventbus.StrawPollRequested += delegate(object sender, StrawPollRequestEventArgs e) { receivedEventsArgs = e; }; ChatCommandInputArgs args = new ChatCommandInputArgs() { Message = "!strawpoll Tolle Frage hier? | antwort 1 | antwort2", Sender = "chromos33", ChannelName = "deathmic", Type = BobDeathmic.Data.Enums.ChatType.Twitch, elevatedPermissions = true }; await service.handleCommand(args, BobDeathmic.Data.Enums.ChatType.Twitch, "deathmic"); Assert.AreNotEqual(null, receivedEventsArgs); Assert.AreEqual("Tolle Frage hier?", receivedEventsArgs.Question); Assert.AreEqual(2, receivedEventsArgs.Answers.Length); Assert.AreEqual("deathmic", receivedEventsArgs.StreamName); Assert.AreEqual(StreamProviderTypes.Twitch, receivedEventsArgs.Type); }
private StrawPollRequestEventArgs extractStrawpollData(string message) { var questionRegex = Regex.Match(message, @"q=\'(.*?)\'"); var optionsRegex = Regex.Match(message, @"o=\'(.*?)\'"); var multiRegex = Regex.Match(message, @"m=\'(.*?)\'"); StrawPollPostData values = null; string question = ""; List <string> Options = new List <string>(); bool multi = false; if (questionRegex.Success && optionsRegex.Success) { Options = optionsRegex.Value.Replace("o='", "").Replace("'", "").Split('|').ToList(); question = questionRegex.Value.Replace("q='", "").Replace("'", ""); if (multiRegex.Success) { switch (multiRegex.Value) { case "true": case "j": multi = true; break; } } } else { // for the forgetfull string[] parameters = message.Replace("!strawpoll ", "").Split('|'); question = parameters[0]; for (var i = 1; i < parameters.Count(); i++) { Options.Add(parameters[i]); } } StrawPollRequestEventArgs arg = new StrawPollRequestEventArgs(); arg.Answers = Options.ToArray(); arg.Question = question.Trim(); arg.multiple = multi; return(arg); }
private async void StrawPollRequested(object sender, StrawPollRequestEventArgs e) { if (e.Question.Count() > 1) { var values = new StrawPollPostData { title = e.Question, options = e.Answers, multi = e.multiple }; var response = await client.PostAsJsonAsync("https://www.strawpoll.me/api/v2/polls", values); var responseString = await response.Content.ReadAsStringAsync(); var StrawPollData = JsonConvert.DeserializeObject <StrawPollResponseData>(responseString); using (var scope = _scopeFactory.CreateScope()) { var _context = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>(); Stream stream = _context.StreamModels.Where(sm => sm.StreamName.ToLower().Equals(e.StreamName.ToLower())).FirstOrDefault(); _eventBus.TriggerEvent(EventType.RelayMessageReceived, new Args.RelayMessageArgs() { SourceChannel = stream.DiscordRelayChannel, StreamType = StreamProviderTypes.Twitch, TargetChannel = stream.StreamName, Message = StrawPollData.Url() }); } } else { //Error Message you must have at least 2 options using (var scope = _scopeFactory.CreateScope()) { var _context = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>(); Stream stream = _context.StreamModels.Where(sm => sm.StreamName.ToLower().Equals(e.StreamName.ToLower())).FirstOrDefault(); _eventBus.TriggerEvent(EventType.RelayMessageReceived, new Args.RelayMessageArgs() { SourceChannel = stream.DiscordRelayChannel, StreamType = StreamProviderTypes.Twitch, TargetChannel = stream.StreamName, Message = "You need at least 2 Options" }); } } }