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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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"
                    });
                }
            }
        }