Exemplo n.º 1
0
        public static int?GetUserCurrency(string username)
        {
            using Storage storage = new Storage();
            ChannelVisitor visitor = storage.Visitors.FirstOrDefault(u => username.ToLower() == u.TwitchUsername.ToLower());

            return(visitor?.Currency);
        }
Exemplo n.º 2
0
        private void HandleFirstVisitCommand(object sender, OnChatCommandReceivedArgs onChatCommandReceivedArgs)
        {
            if (!(sender is TwitchClient senderClient))
            {
                return;
            }

            using var storage = new Storage();
            ChannelVisitor visitor = storage.Visitors.FirstOrDefault(s => s.TwitchUsername.ToLower() == senderClient.TwitchUsername.ToLower());

            if (visitor == null)
            {
                return;
            }

            LeTwitchBot.TwitchClient.SendHostChannelMessage(
                $"Hey @{senderClient.TwitchUsername}. Your first visit to @{LeTwitchBot.HostChannelName} was on {visitor.DateAdded:dddd, dd MMMM yyyy}");
        }
Exemplo n.º 3
0
        private async void OnTick(object sender, ElapsedEventArgs e)
        {
            try
            {
                List <ChatterFormatted> response =
                    await LeTwitchBot.BotAPI.Undocumented.GetChattersAsync(LeTwitchBot.HostChannelName);

                List <string> usernames = response.Select(s => s.Username).ToList();

                GetUsersResponse apiResponse =
                    await LeTwitchBot.BotAPI.Helix.Users.GetUsersAsync(null, usernames,
                                                                       LeTwitchBot.Secrets.HostChannelUserToken);

                if (apiResponse.Users.Length == 0)
                {
                    return;
                }

                foreach (User u in apiResponse.Users)
                {
                    await using Storage storage = new Storage();
                    int            userid          = int.Parse(u.Id);
                    ChannelVisitor existingVisitor = storage.Visitors.FirstOrDefault(v => v.TwitchID == userid);

                    if (existingVisitor != null)
                    {
                        existingVisitor.Currency += CurrencyPerIteration;
                    }
                    else
                    {
                        ChannelVisitor newVisitor = new ChannelVisitor(userid, u.DisplayName);
                        newVisitor.Currency = CurrencyForNewUsers;
                        await storage.Visitors.AddAsync(newVisitor);
                    }

                    await storage.SaveChangesAsync();
                }
            }
            catch (Exception)
            {
                // ignored
            }
        }
Exemplo n.º 4
0
        private async void OnUserJoined(object sender, OnUserJoinedArgs e)
        {
            if (!(sender is TwitchClient senderClient))
            {
                return;
            }

            GetUsersResponse resp = await LeTwitchBot.BotAPI.Helix.Users.GetUsersAsync(null, new List <string> {
                senderClient.TwitchUsername
            });

            if (resp.Users.Length <= 0)
            {
                return;
            }

            User user = resp.Users[0];

            int userid = int.Parse(user.Id);

            ChannelVisitor existingVisitor;

            await using (Storage storage = new Storage())
            {
                existingVisitor = storage.Visitors.FirstOrDefault(u => u.TwitchID == userid);

                if (existingVisitor == null)
                {
                    Visit newVisit = new Visit {
                        VisitDate = DateTime.Now
                    };

                    ChannelVisitor newVisitor = new ChannelVisitor
                    {
                        TwitchUsername = user.DisplayName,
                        TwitchID       = userid,
                        Visits         = new List <Visit> {
                            newVisit
                        },
                    };

                    storage.Attach(newVisitor);
                }
                else
                {
                    Visit newVisit = new Visit
                    {
                        Visitor   = existingVisitor,
                        VisitDate = DateTime.Now
                    };

                    storage.Add(newVisit);
                }

                await storage.SaveChangesAsync();
            }

            if (existingVisitor == null)
            {
                LeTwitchBot.TwitchClient.SendHostChannelMessage($"{senderClient.TwitchUsername} joined the stream for the first time. Welcome!!");
            }
        }