示例#1
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);
        }
        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"
                    });
                }
            }
        }