Пример #1
0
        private void DoWork()
        {
            var    msgSplit = e.ChatMessage.Message.Split(' ', 2);
            string msg;

            if (msgSplit.Length != 2)
            {
                msg = "Improper command. !quote <Your quote here>";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }
            using var db = new TwitchContext();
            var quote = db.Quotes
                        .Where(q => q.Quote == msgSplit[1])
                        .FirstOrDefault();

            if (null != quote)
            {
                msg = $"Quote already exists #{quote.Id}.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }
            db.Add(new Quotes {
                Quote = msgSplit[1]
            });
            db.SaveChanges();
            quote = db.Quotes
                    .Where(q => q.Quote == msgSplit[1])
                    .FirstOrDefault();
            msg = $"Added quote #{quote.Id}";
            Log.Debug(msg);
            client.SendMessage(e.ChatMessage.Channel, msg);
        }
Пример #2
0
        private void DoWork()
        {
            var    msgSplit = e.ChatMessage.Message.Split(' ');
            string msg;

            if (msgSplit.Length != 2)
            {
                msg = "Improper command. !delquote <quote number>";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }
            if (int.TryParse(msgSplit[1], out int id))
            {
                using var db = new TwitchContext();
                var quote = db.Quotes
                            .Where(q => q.Id == id)
                            .FirstOrDefault();
                if (null == quote)
                {
                    msg = $"Quote with id {id} doesn't exist.";
                    Log.Debug(msg);
                    client.SendMessage(e.ChatMessage.Channel, msg);
                    return;
                }
                db.Remove(quote);
                db.SaveChanges();
                msg = $"Quote #{id} deleted.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
            }
        }
Пример #3
0
        private void DoWork()
        {
            using var db = new TwitchContext();
            string[] msgsplit = e.ChatMessage.Message.Split(' ');
            string   msg;

            if (msgsplit.Length == 1)
            {
                string points = db.Scores
                                .Where(u => u.Username == e.ChatMessage.Username)
                                .FirstOrDefault()
                                .Score
                                .ToString();
                Log.Debug(points);
                this.client.SendMessage(e.ChatMessage.Channel, points);
            }
            else if (msgsplit.Length == 2)
            {
                var points = db.Scores
                             .Where(u => u.Username == msgsplit[1])
                             .FirstOrDefault();
                if (null == points)
                {
                    msg = $"{msgsplit[1]} doesn't exist.";
                    Log.Debug(msg);
                    this.client.SendMessage(e.ChatMessage.Channel, msg);
                    return;
                }
                msg = $"{points.Score}";
                Log.Debug(msg);
                this.client.SendMessage(e.ChatMessage.Channel, msg);
            }
        }
Пример #4
0
        private void DoWork()
        {
            string currencyName = ConfigurationManager.AppSettings["CurrencyName"];
            var    msgSplit     = e.ChatMessage.Message.Split(' ');
            string soughtItem   = msgSplit[1];
            string msg;

            using var db = new TwitchContext();
            var item = db.Shop
                       .Where(i => i.ItemName == soughtItem)
                       .FirstOrDefault();

            if (null == item)
            {
                msg = $"{soughtItem} doesn't exist.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }

            if (soughtItem == "songrequest")
            {
                if (msgSplit.Length != 3)
                {
                    msg = "Give a YouTube link.";
                    Log.Debug(msg);
                    client.SendMessage(e.ChatMessage.Channel, msg);
                    return;
                }

                string link = msgSplit.ElementAtOrDefault(2);
                if (!IsValidYoutubeLink(link))
                {
                    msg = "Improper YouTube link.";
                    Log.Debug(msg);
                    client.SendMessage(e.ChatMessage.Channel, msg);
                    return;
                }

                MusicQueue.musicQueue.Enqueue(new Tuple <string, string>(e.ChatMessage.Username, link));
            }

            var user = db.Scores
                       .Where(u => u.Username == e.ChatMessage.Username)
                       .FirstOrDefault();

            if (user.Score < item.Price)
            {
                msg = $"You don't have enough {currencyName}. {item.ItemName} costs {item.Price} and you have {user.Score}.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }

            user.Score -= item.Price;
            db.SaveChanges();
            msg = $"@{e.ChatMessage.Channel}, {e.ChatMessage.Username} purchased {item.ItemName} for {item.Price} {currencyName}! {e.ChatMessage.Username} now has {user.Score} {currencyName}.";
            Log.Debug(msg);
            client.SendMessage(e.ChatMessage.Channel, msg);
        }
Пример #5
0
        private void DoWork()
        {
            var    msgSplit = e.ChatMessage.Message.Split(' ');
            string msg;

            if (msgSplit.Length != 2)
            {
                msg = "Improper command. Use with !deluser <username>.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }

            using var db = new TwitchContext();
            var user = db.Scores
                       .Where(u => u.Username == msgSplit[1])
                       .FirstOrDefault();

            if (null == user)
            {
                msg = $"{msgSplit[1]} doesn't exist.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }

            db.Remove(user);
            db.SaveChanges();
            msg = $"{msgSplit[1]} deleted.";
            Log.Debug(msg);
            client.SendMessage(e.ChatMessage.Channel, msg);
        }
Пример #6
0
        private void DoWork()
        {
            using var db = new TwitchContext();
            int    total = db.Quotes.Count();
            string msg;

            if (total < 1)
            {
                msg = "No quotes to retrieve. Try adding a quote with !addquote <Your quote here> first";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }

            var msgSplit = e.ChatMessage.Message.Split(' ');

            // User specified a quote by number.
            if (msgSplit.Length == 2)
            {
                if (int.TryParse(msgSplit[1], out int number))
                {
                    var quote = db.Quotes.Where(q => q.Id == number).FirstOrDefault();
                    if (null == quote)
                    {
                        msg = $"Quote #{number} doesn't exist.";
                        Log.Debug(msg);
                        client.SendMessage(e.ChatMessage.Channel, msg);
                        return;
                    }
                    msg = $"#{number}/{total}: {quote.Quote}";
                    Log.Debug(msg);
                    client.SendMessage(e.ChatMessage.Channel, msg);
                }
            }
            // Pick a random quote.
            else if (msgSplit.Length == 1)
            {
                Random r      = new Random();
                int    offset = r.Next(1, total);
                var    quote  = db.Quotes
                                .Where(q => q.Id == offset)
                                .FirstOrDefault();
                if (null == quote)
                {
                    msg = $"Ow! That wasn't supposed to happen! Couldn't find quote #{offset}";
                    Log.Debug(msg);
                    client.SendMessage(e.ChatMessage.Channel, msg);
                    return;
                }
                msg = $"#{offset}/{total}: {quote.Quote}";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
            }
            else
            {
                Log.Debug("No.");
                client.SendMessage(e.ChatMessage.Channel, "No.");
            }
        }
Пример #7
0
        private void DoWork()
        {
            string[] msgSplit = e.ChatMessage.Message.Split('!');
            using var db = new TwitchContext();
            var cmd = db.Commands
                      .Where(c => c.CommandName == msgSplit[1])
                      .FirstOrDefault();

            if (null != cmd)
            {
                Log.Debug(cmd.Message);
            }
            client.SendMessage(e.ChatMessage.Channel, cmd.Message);
        }
Пример #8
0
        public bool DoWork()
        {
            string[] msgSplit = e.ChatMessage.Message.Split('!');
            using var db = new TwitchContext();
            var cmd = db.Commands
                      .Where(c => c.CommandName == msgSplit[1])
                      .FirstOrDefault();

            if (null != cmd)
            {
                return(true);
            }
            return(false);
        }
Пример #9
0
        private void DoWork()
        {
            var    msgSplit = e.ChatMessage.Message.Split(' ', 3);
            string msg;

            if (msgSplit.Length != 3)
            {
                msg = "Command of improper form. !additem <name> <price>";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }

            bool result = int.TryParse(msgSplit[2], out int price);

            if (!result)
            {
                msg = $"{msgSplit[2]} not a proper value.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }

            using var db = new TwitchContext();
            var newItem = db.Shop
                          .Where(c => c.ItemName == msgSplit[1])
                          .FirstOrDefault();

            if (null != newItem)
            {
                msg = $"{msgSplit[1]} already exists.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }

            db.Add(new Models.Shop
            {
                ItemName = msgSplit[1],
                Price    = price
            });
            db.SaveChanges();

            msg = $"!{msgSplit[1]} added.";
            Log.Debug(msg);
            client.SendMessage(e.ChatMessage.Channel, msg);
        }
Пример #10
0
        public void DoWork()
        {
            string currencyName = ConfigurationManager.AppSettings["CurrencyName"];
            string msg;

            using var db = new TwitchContext();
            var msgSplit = e.ChatMessage.Message.Split(' ');

            if (msgSplit.Length != 3)
            {
                msg = $"Command of the improper structure. It should be !add{currencyName.ToLower()} <string> <int>";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }

            string targetUser = msgSplit[1];
            var    user       = db.Scores
                                .Where(u => u.Username == targetUser.ToLower())
                                .FirstOrDefault();

            if (null == user)
            {
                msg = $"{targetUser} doesn't exist.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }

            bool result = int.TryParse(msgSplit[2], out int score);

            if (result)
            {
                user.Score += score;
                msg         = $"Added {score} {currencyName} to {user.Username}. {user.Username} now has {user.Score} {currencyName}.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                db.SaveChanges();
            }
            else
            {
                msg = "Couldn't parse value.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
            }
        }
Пример #11
0
        private void DoWork()
        {
            using var db = new TwitchContext();
            var losers = db.Scores
                         .OrderByDescending(s => s.Score)
                         .Take(3);
            string msg = "";

            foreach (var loser in losers)
            {
                msg += loser.ToString() + ", ";
            }
            msg = msg.TrimEnd();
            msg = msg.TrimEnd(',');
            Log.Debug(msg);
            client.SendMessage(e.ChatMessage.Channel, msg);
        }
Пример #12
0
        private void DoWork()
        {
            TwitchAPI api = new TwitchAPI();

            api.Settings.ClientId = ConfigurationManager.AppSettings["ClientId"];
            string channel      = ConfigurationManager.AppSettings["Channel"];
            string currencyName = ConfigurationManager.AppSettings["CurrencyName"];
            var    users        = api.Undocumented.GetChattersAsync(channelName: channel).Result;

            string[] msgSplit = e.ChatMessage.Message.Split(' ');
            string   msg;

            if (msgSplit.Length == 2)
            {
                if (int.TryParse(msgSplit[1], out int amount))
                {
                    using var db = new TwitchContext();
                    foreach (var user in users)
                    {
                        string username = user.Username.ToLower();
                        var    dbUser   = db.Scores
                                          .Where(u => u.Username == username)
                                          .FirstOrDefault();
                        if (null == dbUser)
                        {
                            continue;
                        }
                        dbUser.Score += amount;
                    }
                    db.SaveChanges();
                    msg = $"Added {amount} {currencyName} to everyone in chat.";
                    Log.Debug(msg);
                    client.SendMessage(e.ChatMessage.Channel, msg);
                    return;
                }
                msg = "Invalid amount.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }
            msg = $"Improper command. !give{currencyName} <amount>";
            Log.Debug(msg);
            client.SendMessage(e.ChatMessage.Channel, msg);
        }
Пример #13
0
        public void DoWork()
        {
            using var db = new TwitchContext();
            var           shopItems = db.Shop.ToList();
            StringBuilder msgSB     = new StringBuilder();

            foreach (var item in shopItems)
            {
                msgSB.Append(item.ToString());
                msgSB.Append(", ");
            }
            // Trim the last , and space.
            string msg = msgSB.ToString();

            msg = msg.Trim();
            msg = msg.TrimEnd(',');
            Log.Debug(msg);
            client.SendMessage(e.ChatMessage.Channel, msg);
        }
Пример #14
0
        private void DoWork()
        {
            string currencyName = ConfigurationManager.AppSettings["CurrencyName"];
            var    msgSplit     = e.ChatMessage.Message.Split(' ');
            string msg;

            if (msgSplit.Length != 3)
            {
                msg = $"Improper command. Usage is !set{currencyName} <username> <score>";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }
            bool result = int.TryParse(msgSplit[2], out int score);

            if (!result)
            {
                msg = $"Improper value {msgSplit[2]}.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }

            using var db = new TwitchContext();
            var user = db.Scores
                       .Where(u => u.Username == msgSplit[1].ToLower())
                       .FirstOrDefault();

            if (null == user)
            {
                msg = $"{msgSplit[1]} doesn't exist.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }
            user.Score = score;
            db.SaveChanges();

            msg = $"Set {msgSplit[1]} to {score} {currencyName}.";
            Log.Debug(msg);
            client.SendMessage(e.ChatMessage.Channel, msg);
        }
Пример #15
0
        private void DoWork()
        {
            string cmd = e.ChatMessage.Message.Split(' ')[1];

            using var db = new TwitchContext();
            var command = db.Commands
                          .Where(c => c.CommandName == cmd)
                          .FirstOrDefault();
            string msg;

            if (null == command)
            {
                msg = $"{cmd} doesn't exist.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }
            db.Remove(command);
            db.SaveChanges();
            msg = $"Deleted {cmd}.";
            Log.Debug(msg);
            client.SendMessage(e.ChatMessage.Channel, msg);
        }
Пример #16
0
        private void DoWork()
        {
            string msgItem = e.ChatMessage.Message.Split(' ')[1];

            using var db = new TwitchContext();
            var item = db.Shop
                       .Where(s => s.ItemName == msgItem)
                       .FirstOrDefault();
            string msg;

            if (null == item)
            {
                msg = $"{msgItem} doesn't exist.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }
            db.Remove(item);
            db.SaveChanges();
            msg = $"Deleted {msgItem}";
            Log.Debug(msg);
            client.SendMessage(e.ChatMessage.Channel, msg);
        }
Пример #17
0
        private void DoWork()
        {
            var    msgSplit = e.ChatMessage.Message.Split(' ', 3);
            string msg;

            if (msgSplit.Length != 3)
            {
                msg = "Command of improper form. !addcom <name> <your message here>";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }

            using var db = new TwitchContext();
            var customCommand = db.Commands
                                .Where(c => c.CommandName == msgSplit[1])
                                .FirstOrDefault();

            if (null != customCommand)
            {
                msg = $"{msgSplit[1]} already exists.";
                Log.Debug(msg);
                client.SendMessage(e.ChatMessage.Channel, msg);
                return;
            }

            db.Add(new Models.Commands
            {
                CommandName = msgSplit[1],
                Message     = msgSplit[2]
            });
            db.SaveChanges();

            msg = $"!{msgSplit[1]} added.";
            Log.Debug(msg);
            client.SendMessage(e.ChatMessage.Channel, msg);
        }
Пример #18
0
        private void DoWork()
        {
            if (!CheckUserTimeout())
            {
                return;
            }

            var    msgSplit     = e.WhisperMessage.Message.Split(' ');
            string currencyName = ConfigurationManager.AppSettings["CurrencyName"];
            bool   result       = int.TryParse(msgSplit[1], out int guess);
            int    minGuess     = int.Parse(ConfigurationManager.AppSettings["MinimumGuess"]) + 1;
            int    maxGuess     = int.Parse(ConfigurationManager.AppSettings["MaximumGuess"]);
            string msg;

            if ((result) && (guess >= minGuess) && (guess <= maxGuess))
            {
                int firstRange  = int.Parse(ConfigurationManager.AppSettings["FirstConsolationRange"]);
                int secondRange = int.Parse(ConfigurationManager.AppSettings["SecondConsolationRange"]);
                using var db = new TwitchContext();
                var user = db.Scores
                           .Where(u => u.Username == e.WhisperMessage.Username)
                           .FirstOrDefault();
                Random r         = new Random();
                int    botNumber = r.Next(minGuess, maxGuess);
                if (guess == botNumber)
                {
                    int payout = int.Parse(ConfigurationManager.AppSettings["Payout"]);
                    user.Score += payout;
                    db.SaveChanges();
                    msg = $"You guessed correctly! Added {payout} {currencyName}! You have {user.Score} {currencyName}!";
                    Log.Debug(msg);
                    client.SendWhisper(e.WhisperMessage.Username, msg);
                }
                else if ((guess < botNumber + firstRange) && (guess > botNumber - firstRange))
                {
                    int firstRangePayout = int.Parse(ConfigurationManager.AppSettings["FirstConsolationRangePayout"]);
                    user.Score += firstRangePayout;
                    db.SaveChanges();
                    msg = $"You guessed {guess} and the number was {botNumber}. You get a consolation prize! Added {firstRangePayout} {currencyName}! You have {user.Score} {currencyName}!";
                    Log.Debug(msg);
                    client.SendWhisper(e.WhisperMessage.Username, msg);
                }
                else if ((guess < botNumber + secondRange) && (guess > botNumber - secondRange))
                {
                    int secondRangePayout = int.Parse(ConfigurationManager.AppSettings["SecondConsolationRangePayout"]);
                    user.Score += secondRangePayout;
                    db.SaveChanges();
                    msg = $"You guessed {guess} and the number was {botNumber}. You get a consolation prize! Added {secondRangePayout} {currencyName}! You have {user.Score} {currencyName}!";
                    Log.Debug(msg);
                    client.SendWhisper(e.WhisperMessage.Username, msg);
                }
                else
                {
                    msg = $"You guessed {guess} and the number was {botNumber}. Better luck next time!";
                    Log.Debug(msg);
                    client.SendWhisper(e.WhisperMessage.Username, msg);
                }
            }
            else
            {
                msg = $"Improper value. The guess must be between {minGuess}-{maxGuess}.";
                Log.Debug(msg);
                client.SendWhisper(e.WhisperMessage.Username, msg);
            }
        }
Пример #19
0
 public HomeController(ILogger <HomeController> logger, TwitchContext context, IRedisCache cache)
 {
     _logger  = logger;
     _context = context;
     _cache   = cache.Redis.GetDatabase();
 }
Пример #20
0
 public BaseController()
 {
     Database = new TwitchContext();
 }
Пример #21
0
        private void DoWork()
        {
            if (!CheckUserTimeout())
            {
                return;
            }

            string currencyName = ConfigurationManager.AppSettings["CurrencyName"];
            string channel      = ConfigurationManager.AppSettings["Channel"];

            using var db = new TwitchContext();
            var user = db.Scores
                       .Where(u => u.Username == e.WhisperMessage.Username)
                       .FirstOrDefault();
            int    slotPrice = int.Parse(ConfigurationManager.AppSettings["SlotPrice"]);
            string msg;

            user.Score -= slotPrice;
            db.SaveChanges();

            Random rnd   = new Random();
            int    reels = int.Parse(ConfigurationManager.AppSettings["Reels"]);
            // This random may need to change. It may not give duplicates when we need duplicates.
            var           emotes     = db.Emotes.ToList();
            List <Emotes> spinResult = new List <Emotes>();

            for (int i = 0; i < reels; i++)
            {
                spinResult.Add(emotes[rnd.Next(emotes.Count)]);
            }
            List <string> spinResultNames = new List <string>();

            foreach (var item in spinResult)
            {
                spinResultNames.Add(item.EmoteName);
            }

            var duplicates = spinResult.GroupBy(x => x)
                             .Select(g => new { Value = g.Key, Count = g.Count() })
                             .OrderByDescending(x => x.Count);

            foreach (var item in duplicates)
            {
                // If Jackpot
                if (item.Count == reels)
                {
                    int earnings = item.Value.PayoutValue * reels * int.Parse(ConfigurationManager.AppSettings["JackpotMultiplier"]);
                    user.Score += earnings;
                    db.SaveChanges();
                    msg = $"{item.Value.EmoteName} {item.Value.EmoteName} {item.Value.EmoteName} JACKPOT! Added {earnings} {currencyName}! You now have {user.Score}!";
                    Log.Debug(msg);
                    client.SendWhisper(e.WhisperMessage.Username, msg);
                    msg = $"{user.Username} just hit the JACKPOT! {item.Value.EmoteName} {item.Value.EmoteName} {item.Value.EmoteName} {user.Username} won {earnings} {currencyName} and now has {user.Score} {currencyName}!";
                    Log.Debug(msg);
                    client.SendMessage(channel, msg);
                    return;
                }
                else if (item.Count > 1)
                {
                    int earnings = item.Value.PayoutValue * item.Count;
                    user.Score += earnings;
                    msg         = $"{String.Join(" ", spinResultNames)} Winner! You won {earnings} {currencyName}! You now have {user.Score} {currencyName}!";
                    Log.Debug(msg);
                    client.SendWhisper(e.WhisperMessage.Username, msg);
                    db.SaveChanges();
                    return;
                }
                else
                {
                    msg = $"{String.Join(" ", spinResultNames)} Better luck next time. You have {user.Score} {currencyName}.";
                    Log.Debug(msg);
                    client.SendWhisper(e.WhisperMessage.Username, msg);
                    return;
                }
            }
        }