private static async Task UpdateStarGivenInternalAsync(StarboardContext context, IUser starGivingUser, bool starGiven)
        {
            context.GetOrAddMessageData();

            if (starGivingUser.Id == (await context.GetStarredMessageAsync()).Author.Id)
            {
                await context.RemoveReactionAsync(starGivingUser);

                return;
            }

            if (starGiven)
            {
                if (!context.MessageData.StarGivingUsers.AddOrUpdate(starGivingUser.Id, context.Source, StarboardSource.STARRED_MESSAGE))
                {
                    await context.RemoveReactionFromStarboardMessageAsync(starGivingUser);
                }
            }
            else
            {
                context.MessageData.StarGivingUsers.Remove(starGivingUser.Id, context.Source);
            }

            await CreateOrUpdateStarboardMessage(context);
        }
        public static async Task UpdateStarsGivenAsync(StarboardContext context)
        {
            await context.GetStarredMessageAsync();

            context.GetOrAddMessageData();

            context.MessageData.StarGivingUsers.Clear();

            await UpdateStarsGivenInternalAsync(context, StarboardSource.STARRED_MESSAGE, (await context.GetStarredMessageAsync()).GetReactionUsersAsync(StarboardEmote, 5000));

            if (await context.GetStarboardMessageAsync() != null)
            {
                await UpdateStarsGivenInternalAsync(context, StarboardSource.STARBOARD_MESSAGE, context.StarboardMessage.GetReactionUsersAsync(StarboardEmote, 5000));
            }


            await CreateOrUpdateStarboardMessage(context);
        }
        private static async Task CreateOrUpdateStarboardMessage(StarboardContext context)
        {
            context.GetOrAddMessageData();

            if (context.MessageData.starboardMessageStatus == StarboardMessageStatus.CREATED)
            {
                while (context.MessageData.starboardMessageId == 1)
                {
                    await Task.Delay(100);
                }

                await UpdateStarboardMessage(context);
            }
            else if (context.MessageData.starboardMessageStatus == StarboardMessageStatus.NONE && context.MessageData.GetStarCount() >= context.GuildData.requiredStarCount)
            {
                EnqueueStarboardMessageCreation(context);
            }
        }