Пример #1
0
        public string replaceVariables(string commandText, string commandArgs)
        {
            JObject  broadcastData = null;
            TimeSpan uptime        = new TimeSpan(0);
            Quote    q             = null;

            foreach (String cmd in ChatHandler.getMessageVars())
            {
                if (commandText.Contains("$" + cmd))
                {
                    switch (cmd)
                    {
                    case "QUOTE":
                        if (q == null)
                        {
                            q = QuoteHandler.getInstance().getQuote(sender);
                        }
                        commandText = commandText.Replace("$QUOTE", q.getQuoteText());
                        break;

                    case "QNUM":
                        if (q == null)
                        {
                            q = QuoteHandler.getInstance().getQuote(sender);
                        }
                        commandText = commandText.Replace("$QNUM", q.getQuoteNumber().ToString());
                        break;

                    case "ADDQUOTE":
                        QuoteHandler.getInstance().addQuote(commandArgs, sender, senderIsMod);
                        return(null);

                    case "VOTEYES":
                        QuoteHandler.getInstance().voteYes(sender);
                        return(null);

                    case "BROADCASTER":
                        commandText = commandText.Replace("$BROADCASTER", ChatHandler.getChannel());
                        break;

                    case "SENDER":
                        commandText = commandText.Replace("$SENDER", sender);
                        break;

                    case "GAME":
                        if (broadcastData == null)
                        {
                            broadcastData = ChatHandler.getBroadcastDataFromAPI();
                        }
                        commandText = commandText.Replace("$GAME", broadcastData.Property("game").Value.ToString());
                        break;

                    case "TITLE":
                        if (broadcastData == null)
                        {
                            broadcastData = ChatHandler.getBroadcastDataFromAPI();
                        }
                        commandText = commandText.Replace("$TITLE", broadcastData.Property("status").Value.ToString());
                        break;

                    case "UPHOURS":
                        if (uptime.Ticks == 0)
                        {
                            uptime = ChatHandler.getUptime();
                        }
                        commandText = commandText.Replace("$UPHOURS", uptime.Hours.ToString());
                        break;

                    case "UPMINUTES":
                        if (uptime.Ticks == 0)
                        {
                            uptime = ChatHandler.getUptime();
                        }
                        commandText = commandText.Replace("$UPMINUTES", uptime.Minutes.ToString());
                        break;

                    case "8BALL":
                        commandText = commandText.Replace("$8BALL", ChatHandler.get8BallResponse());
                        break;

                    case "CALCULATOR":
                        Expression e = new Expression(commandArgs);
                        string     x = e.calculate().ToString();
                        commandText = commandText.Replace("$CALCULATOR", x);
                        break;

                    case "COMMANDS":
                        commandText = commandText.Replace("$COMMANDS", ChatHandler.commandsForHelp);
                        break;

                    case "SONGREQ":
                        string id  = "";
                        string res = "Queued.";
                        try
                        {
                            Uri ytlink = new Uri(commandArgs);
                            id = getIdFromYoutubeLink(ytlink);
                        }
                        catch
                        {
                            var searchListRequest = SongRequest.youtubeService.Search.List("snippet");
                            searchListRequest.Q          = commandArgs;
                            searchListRequest.MaxResults = 5;
                            searchListRequest.Type       = "video";
                            var searchListResponse = searchListRequest.Execute();
                            if (searchListResponse.Items.Count == 0)
                            {
                                return("No results found.");
                            }
                            foreach (var item in searchListResponse.Items)
                            {
                                if (item.Snippet.Title.ToLower().Contains("lyrics"))
                                {
                                    id  = item.Id.VideoId;
                                    res = "Queued \"" + item.Snippet.Title + "\".";
                                    break;
                                }
                            }
                            if (id == "")
                            {
                                id  = searchListResponse.Items[0].Id.VideoId;
                                res = "Queued \"" + searchListResponse.Items[0].Snippet.Title + "\".";
                            }
                        }
                        if (MainForm.songRequestForm == null)
                        {
                            string reply = Properties.Settings.Default.closedSrWindowResponse;
                            reply       = reply.Replace("$SENDER", sender);
                            reply       = reply.Replace("$BROADCASTER", ChatHandler.getChannel());
                            commandText = reply;
                        }
                        else if (id != null)
                        {
                            SongRequest sr = new SongRequest(id, sender);
                            if (sr.embeddable == false)
                            {
                                string reply = Properties.Settings.Default.nonEmbeddableSrResponse;
                                reply = reply.Replace("$SENDER", sender);
                                reply = reply.Replace("$BROADCASTER", ChatHandler.getChannel());
                                return(reply);
                            }
                            MainForm.songRequestForm.queueSong(sr);
                            return(res);
                        }
                        else
                        {
                            commandText = "Unable to parse link.";
                        }
                        break;

                    case "QUEUETIME":
                        commandText = commandText.Replace("$QUEUETIME", MainForm.songRequestForm.getQueueLength().ToString());
                        break;
                    }
                }
            }

            return(commandText);
        }