Пример #1
0
        public async Task SetFlag(BotAccessLevel level, bool give = true, [Remainder] IUser user = null)
        {
            if (user == null)
            {
                user = Context.User;
            }

            using var Database = new SkuldDbContextFactory().CreateDbContext();

            var dbUser = await Database.InsertOrGetUserAsync(user).ConfigureAwait(false);

            bool DidAny = false;

            switch (level)
            {
            case BotAccessLevel.BotOwner:
                if (give & !dbUser.Flags.IsBitSet(DiscordUtilities.BotCreator))
                {
                    dbUser.Flags += DiscordUtilities.BotCreator;
                    DidAny        = true;
                }
                else if (!give && dbUser.Flags.IsBitSet(DiscordUtilities.BotCreator))
                {
                    dbUser.Flags -= DiscordUtilities.BotCreator;
                    DidAny        = true;
                }
                break;

            case BotAccessLevel.BotAdmin:
                if (give && !dbUser.Flags.IsBitSet(DiscordUtilities.BotAdmin))
                {
                    dbUser.Flags += DiscordUtilities.BotAdmin;
                    DidAny        = true;
                }
                else if (!give && dbUser.Flags.IsBitSet(DiscordUtilities.BotAdmin))
                {
                    dbUser.Flags -= DiscordUtilities.BotAdmin;
                    DidAny        = true;
                }
                break;

            case BotAccessLevel.BotTester:
                if (give && !dbUser.Flags.IsBitSet(DiscordUtilities.BotTester))
                {
                    dbUser.Flags += DiscordUtilities.BotTester;
                    DidAny        = true;
                }
                else if (!give && dbUser.Flags.IsBitSet(DiscordUtilities.BotTester))
                {
                    dbUser.Flags -= DiscordUtilities.BotTester;
                    DidAny        = true;
                }
                break;

            case BotAccessLevel.BotDonator:
                if (give && !dbUser.IsDonator)
                {
                    dbUser.Flags += DiscordUtilities.BotDonator;
                    DidAny        = true;
                }
                else if (!give && dbUser.IsDonator)
                {
                    dbUser.Flags -= DiscordUtilities.BotDonator;
                    DidAny        = true;
                }
                break;
            }

            if (DidAny)
            {
                await Database.SaveChangesAsync().ConfigureAwait(false);
            }

            if (DidAny)
            {
                await $"{(give ? "Added" : "Removed")} flag `{level}` to {user.Mention}".QueueMessageAsync(Context).ConfigureAwait(false);
            }
            else
            {
                await $"{user.Mention} {(give ? "already has" : "doesn't have")} the flag `{level}`".QueueMessageAsync(Context).ConfigureAwait(false);
            }
        }
Пример #2
0
 public RequireBotFlag(BotAccessLevel level)
 {
     Level = level;
 }