コード例 #1
0
        public string GetEstimatedTime(ChatViewersModel chattersModel)
        {
            using (var context = _contextFactory.Create())
            {
                try
                {
                    var allViewers = chattersModel.chatters.viewers
                                     .Concat(chattersModel.chatters.admins)
                                     .Concat(chattersModel.chatters.global_mods)
                                     .Concat(chattersModel.chatters.moderators)
                                     .Concat(chattersModel.chatters.staff)
                                     .ToArray();

                    var requests = context.SongRequests.Where(sr => !sr.Played)
                                   .OrderRequests()
                                   .Count(sr => allViewers.Contains(sr.RequestUsername));

                    var estimatedFinishTime = DateTime.UtcNow.AddMinutes(requests * 6d).ToString("HH:mm:ss");
                    return($"Estimated time to finish: {estimatedFinishTime}");
                }
                catch (Exception e)
                {
                    _logger.LogError(e, "Error when calculating estimated time remaining in the playlist");
                    return(string.Empty);
                }
            }
        }
コード例 #2
0
ファイル: BytesHelper.cs プロジェクト: Farami/CodedChatbot
        public void GiveBytes(ChatViewersModel chatViewersModel)
        {
            using (var context = this.contextFactory.Create())
            {
                if (chatViewersModel.chatters.moderators.Any())
                {
                    vipHelper.AddUsersDeferSave(chatViewersModel.chatters.moderators);
                }
                if (chatViewersModel.chatters.staff.Any())
                {
                    vipHelper.AddUsersDeferSave(chatViewersModel.chatters.staff);
                }
                if (chatViewersModel.chatters.global_mods.Any())
                {
                    vipHelper.AddUsersDeferSave(chatViewersModel.chatters.global_mods);
                }
                if (chatViewersModel.chatters.admins.Any())
                {
                    vipHelper.AddUsersDeferSave(chatViewersModel.chatters.admins);
                }
                if (chatViewersModel.chatters.viewers.Any())
                {
                    vipHelper.AddUsersDeferSave(chatViewersModel.chatters.viewers);
                }

                context.SaveChanges();

                foreach (var mod in chatViewersModel.chatters.moderators)
                {
                    var user = vipHelper.FindUser(mod);
                    user.TokenBytes++;
                }
                foreach (var staff in chatViewersModel.chatters.staff)
                {
                    var user = vipHelper.FindUser(staff);
                    user.TokenBytes++;
                }
                foreach (var global_mod in chatViewersModel.chatters.global_mods)
                {
                    var user = vipHelper.FindUser(global_mod);
                    user.TokenBytes++;
                }
                foreach (var admin in chatViewersModel.chatters.admins)
                {
                    var user = vipHelper.FindUser(admin);
                    user.TokenBytes++;
                }
                foreach (var viewer in chatViewersModel.chatters.viewers)
                {
                    var user = vipHelper.FindUser(viewer);
                    user.TokenBytes++;
                }

                context.SaveChanges();
            }
        }
コード例 #3
0
        public static void Main(string[] args)
        {
            Task.Run(async() =>
            {
                try
                {
                    Logger.SetLogLevel(LogLevel.Debug);
                    Logger.LogOccurred += Logger_LogOccurred;

                    System.Console.WriteLine("Connecting to Trovo...");

                    connection = await TrovoConnection.ConnectViaLocalhostOAuthBrowser(clientID, scopes);
                    if (connection != null)
                    {
                        System.Console.WriteLine("Trovo connection successful!");

                        PrivateUserModel user = await connection.Users.GetCurrentUser();
                        if (user != null)
                        {
                            System.Console.WriteLine("Current User: "******"Channel Title: " + channel.live_title);

                                chat = new ChatClient(connection);
                                chat.OnChatMessageReceived += Chat_OnChatMessageReceived;

                                System.Console.WriteLine("Connecting to chat...");
                                if (await chat.Connect(await connection.Chat.GetToken()))
                                {
                                    System.Console.WriteLine("Successfully connected to chat!");

                                    await chat.SendMessage("Hello World!");

                                    ChatViewersModel viewers = await connection.Chat.GetViewers(channel.channel_id, 1000);

                                    while (true)
                                    {
                                        string line = System.Console.ReadLine();
                                        await chat.SendMessage(line);
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.Log(ex);
                }
            }).Wait();

            System.Console.ReadLine();
        }
コード例 #4
0
        /// <summary>
        /// Gets the current viewers of the specified channel ID
        /// </summary>
        /// <param name="channelID">The ID of the channel</param>
        /// <param name="maxResults">The maximum number of results. Will be either that amount or slightly more</param>
        /// <returns>The current viewers of the channel</returns>
        public async Task <ChatViewersModel> GetViewers(string channelID, int maxResults = 1)
        {
            Validator.ValidateString(channelID, "channelID");
            IEnumerable <ChatViewersInternalModel> viewers = await this.PostPagedCursorAsync <ChatViewersInternalModel>($"channels/{channelID}/viewers", maxResults);

            ChatViewersModel result = new ChatViewersModel();

            foreach (ChatViewersInternalModel viewer in viewers)
            {
                result.ace.viewers.AddRange(viewer.chatters.ace.viewers);
                result.aceplus.viewers.AddRange(viewer.chatters.aceplus.viewers);
                result.admins.viewers.AddRange(viewer.chatters.admins.viewers);
                result.all.viewers.AddRange(viewer.chatters.all.viewers);
                result.creators.viewers.AddRange(viewer.chatters.creators.viewers);
                result.editors.viewers.AddRange(viewer.chatters.editors.viewers);
                result.followers.viewers.AddRange(viewer.chatters.followers.viewers);
                result.moderators.viewers.AddRange(viewer.chatters.moderators.viewers);
                result.subscribers.viewers.AddRange(viewer.chatters.subscribers.viewers);
                result.supermods.viewers.AddRange(viewer.chatters.supermods.viewers);
                result.VIPS.viewers.AddRange(viewer.chatters.VIPS.viewers);
                result.wardens.viewers.AddRange(viewer.chatters.wardens.viewers);

                foreach (var kvp in viewer.custome_roles)
                {
                    if (!result.CustomRoles.ContainsKey(kvp.Key))
                    {
                        result.CustomRoles[kvp.Key] = new ChatViewersRoleGroupModel();
                    }

                    ChatViewersRoleGroupModel group = kvp.Value.ToObject <ChatViewersRoleGroupModel>();
                    result.CustomRoles[kvp.Key].viewers.AddRange(group.viewers);
                }

                foreach (var kvp in viewer.custom_roles)
                {
                    if (!result.CustomRoles.ContainsKey(kvp.Key))
                    {
                        result.CustomRoles[kvp.Key] = new ChatViewersRoleGroupModel();
                    }

                    ChatViewersRoleGroupModel group = kvp.Value.ToObject <ChatViewersRoleGroupModel>();
                    result.CustomRoles[kvp.Key].viewers.AddRange(group.viewers);
                }
            }

            if (viewers.Count() > 0)
            {
                result.Total = viewers.First().total;
            }

            return(result);
        }