示例#1
0
        internal static AllowUsers AllowUserInsert(ulong GuildID, ulong Uuid, string Name, uint RoleNum)
        {
            AllowUsers InsertAllowUser = new AllowUsers {
                GuildID = GuildID,
                Uuid    = Uuid,
                Name    = Name,
                RoleNum = RoleNum
            };

            AllowUsersCollection.Insert(InsertAllowUser);

            return(InsertAllowUser);
        }
示例#2
0
        public bool IsAllowed(ClaimsPrincipal claim)
        {
            if (Public || claim.IsInRole("admin") || Owner.Equals(claim.Identity.Name))
            {
                return(true);
            }

            if (DenyUsers.Contains(claim.Identity.Name))
            {
                return(false);
            }

            if (AllowUsers.Contains(claim.Identity.Name))
            {
                return(true);
            }

            return(!DenyRoles.Any(claim.IsInRole) && AllowRoles.Any(claim.IsInRole));
        }
示例#3
0
        internal override async Task Execute(CommandObjects CommandObject)
        {
            try {
                string[] msgs = CommandObject.CommandArgs.Remove(0);
                if (msgs.Length == 0)
                {
                    await CommandObject.Message.Channel.SendMessageAsync(CommandObject.Language.EmptyText);

                    return;
                }

                string msgs_Name;

                if (string.IsNullOrWhiteSpace(msgs[0]))
                {
                    await CommandObject.Message.Channel.SendMessageAsync(CommandObject.Language.EmptyName);

                    return;
                }
                msgs_Name = msgs[0];

                if (string.IsNullOrWhiteSpace(msgs[1]))
                {
                    await CommandObject.Message.Channel.SendMessageAsync(CommandObject.Language.EmptyId);

                    return;
                }
                if (!ulong.TryParse(msgs[1], out ulong msgs_ID))
                {
                    await CommandObject.Message.Channel.SendMessageAsync(CommandObject.Language.IdCouldntParse);

                    return;
                }

                if (string.IsNullOrWhiteSpace(msgs[2]))
                {
                    await CommandObject.Message.Channel.SendMessageAsync(CommandObject.Language.EmptyRoleNumber);

                    return;
                }
                if (!uint.TryParse(msgs[2], out uint msgs_RoleNum))
                {
                    await CommandObject.Message.Channel.SendMessageAsync(CommandObject.Language.RoleNumberNotNumber);

                    return;
                }

                if (Database.DatabaseMethods.AllowUsersMethods.AllowUserExist(CommandObject.Guild.Id, msgs_Name))
                {
                    await CommandObject.Message.Channel.SendMessageAsync(CommandObject.Language.NameRegisted);

                    return;
                }

                if (Database.DatabaseMethods.AllowUsersMethods.AllowUserExist(CommandObject.Guild.Id, msgs_ID))
                {
                    await CommandObject.Message.Channel.SendMessageAsync(CommandObject.Language.IdRegisted);

                    return;
                }

                if (!Database.DatabaseMethods.RolesMethods.RoleFind(CommandObject.Guild.Id, msgs_RoleNum, out Roles DBRolesNum))
                {
                    await CommandObject.Message.Channel.SendMessageAsync(CommandObject.Language.RoleNumberNotFound);

                    return;
                }

                if (!await Authentication.Confirmation(CommandObject))
                {
                    await CommandObject.Channel.SendMessageAsync(CommandObject.Language.AuthFailure);

                    return;
                }

                AllowUsers InsertAllowUserData = Database.DatabaseMethods.AllowUsersMethods.AllowUserInsert(CommandObject.Guild.Id, msgs_ID, msgs_Name, msgs_RoleNum);

                DiscordRole GuildRole  = CommandObject.Guild.GetRole(DBRolesNum.Uuid);
                string      ResultText = string.Format(CommandObject.Language.DBUserAddSuccess, InsertAllowUserData.Name, InsertAllowUserData.Uuid, InsertAllowUserData.RoleNum, GuildRole.Name);
                await CommandObject.Message.Channel.SendMessageAsync(ResultText);
            }
            catch (IndexOutOfRangeException) {
                await CommandObject.Message.Channel.SendMessageAsync(CommandObject.Language.TypingMissed);
            }
        }
示例#4
0
        private static async Task AllowUserProcess(DiscordClient Bot, GuildMemberAddEventArgs MemberObjects, GetLanguage Get_Language, AllowUsers DBAllowUserID)
        {
            if (Database.DatabaseMethods.RolesMethods.RoleFind(MemberObjects.Guild.Id, DBAllowUserID.RoleNum, out Roles DBRoleRoleNum))
            {
                DiscordRole GuildRole = MemberObjects.Guild.GetRole(DBRoleRoleNum.Uuid);

                ulong Guild_ChannelID = Database.DatabaseMethods.GuildConfigMethods.LogChannelFind(MemberObjects.Guild.Id);

                if (Guild_ChannelID != 0)
                {
                    DiscordChannel GuildLogChannel = MemberObjects.Guild.GetChannel(Guild_ChannelID);
                    DiscordEmbed   LogChannelEmbed = new Discord​Embed​Builder()
                                                     .WithTitle(Get_Language.Language_Data.JoinPass)
                                                     .WithDescription(
                        string.Format(
                            Get_Language.Language_Data.UserDescription,
                            MemberObjects.Member.Username + "#" + MemberObjects.Member.Discriminator,
                            MemberObjects.Member.Id,
                            GuildRole.Name
                            )
                        )
                                                     .WithColor(new DiscordColor(0x00B06B))
                                                     .WithTimestamp(DateTime.Now)
                                                     .WithFooter(
                        string.Format("{0} Bot", Bot.CurrentUser.Username)
                        )
                                                     .WithAuthor(Get_Language.Language_Data.AccessPermission);
                    await GuildLogChannel.SendMessageAsync(LogChannelEmbed);
                }
                else
                {
                    Log.Warning("Could not send from log channel");
                }

                RoleLevel DBRoleLevel   = Enum.Parse <RoleLevel>(DBRoleRoleNum.RoleLevel);
                bool      GuildLeaveBan = Database.DatabaseMethods.GuildConfigMethods.LeaveBanFind(MemberObjects.Guild.Id);
                if (GuildLeaveBan)
                {
                    if (DBRoleLevel == RoleLevel.Public)
                    {
                        await MemberObjects.Member.GrantRoleAsync(GuildRole);

                        DiscordEmbed WelcomeEmbed = new Discord​Embed​Builder()
                                                    .WithTitle(string.Format(Get_Language.Language_Data.WelcomeEmbedTitle, MemberObjects.Guild.Name, GuildRole.Name))
                                                    .AddField(
                            Get_Language.Language_Data.DMEmbed_Public1,
                            Get_Language.Language_Data.DMEmbed_Public2
                            )
                                                    .AddField(
                            Get_Language.Language_Data.DMEmbed_Public3,
                            Get_Language.Language_Data.DMEmbed_Public4
                            )
                                                    .AddField(
                            Get_Language.Language_Data.DMEmbed_LeaveBan1,
                            string.Format(Get_Language.Language_Data.DMEmbed_LeaveBan2, GuildRole.Name)
                            )
                                                    .WithColor(new DiscordColor(0x00B06B))
                                                    .WithTimestamp(DateTime.Now)
                                                    .WithFooter(
                            string.Format("{0} Bot", Bot.CurrentUser.Username)
                            );
                        await MemberObjects.Member.SendMessageAsync(WelcomeEmbed);
                    }
                    else if (DBRoleLevel == RoleLevel.Moderator)
                    {
                        await MemberObjects.Member.GrantRoleAsync(GuildRole);

                        DiscordEmbed WelcomeEmbed = new Discord​Embed​Builder()
                                                    .WithTitle(string.Format(Get_Language.Language_Data.WelcomeEmbedTitle, MemberObjects.Guild.Name, GuildRole.Name))
                                                    .AddField(
                            Get_Language.Language_Data.DMEmbed_Moderator1,
                            Get_Language.Language_Data.DMEmbed_Moderator2
                            )
                                                    .AddField(
                            Get_Language.Language_Data.DMEmbed_Moderator3,
                            string.Format(Get_Language.Language_Data.DMEmbed_Moderator4, Bot.CurrentUser.Username)
                            )
                                                    .AddField(
                            Get_Language.Language_Data.DMEmbed_Moderator5,
                            Get_Language.Language_Data.DMEmbed_Moderator6
                            )
                                                    .AddField(
                            Get_Language.Language_Data.DMEmbed_LeaveBan1,
                            string.Format(Get_Language.Language_Data.DMEmbed_LeaveBan2, GuildRole.Name)
                            )
                                                    .WithColor(new DiscordColor(0x00B06B))
                                                    .WithTimestamp(DateTime.Now)
                                                    .WithFooter(
                            string.Format("{0} Bot", Bot.CurrentUser.Username)
                            );
                        await MemberObjects.Member.SendMessageAsync(WelcomeEmbed);
                    }
                }
                else
                {
                    if (DBRoleLevel == RoleLevel.Public)
                    {
                        await MemberObjects.Member.GrantRoleAsync(GuildRole);

                        DiscordEmbed WelcomeEmbed = new Discord​Embed​Builder()
                                                    .WithTitle(string.Format(Get_Language.Language_Data.WelcomeEmbedTitle, MemberObjects.Guild.Name, GuildRole.Name))
                                                    .AddField(
                            Get_Language.Language_Data.DMEmbed_Public1,
                            Get_Language.Language_Data.DMEmbed_Public2
                            )
                                                    .AddField(
                            Get_Language.Language_Data.DMEmbed_Public3,
                            Get_Language.Language_Data.DMEmbed_Public4
                            )
                                                    .WithColor(new DiscordColor(0x00B06B))
                                                    .WithTimestamp(DateTime.Now)
                                                    .WithFooter(
                            string.Format("{0} Bot", Bot.CurrentUser.Username)
                            );
                        await MemberObjects.Member.SendMessageAsync(WelcomeEmbed);
                    }
                    else if (DBRoleLevel == RoleLevel.Moderator)
                    {
                        await MemberObjects.Member.GrantRoleAsync(GuildRole);

                        DiscordEmbed WelcomeEmbed = new Discord​Embed​Builder()
                                                    .WithTitle(string.Format(Get_Language.Language_Data.WelcomeEmbedTitle, MemberObjects.Guild.Name, GuildRole.Name))
                                                    .AddField(
                            Get_Language.Language_Data.DMEmbed_Moderator1,
                            Get_Language.Language_Data.DMEmbed_Moderator2
                            )
                                                    .AddField(
                            Get_Language.Language_Data.DMEmbed_Moderator3,
                            string.Format(Get_Language.Language_Data.DMEmbed_Moderator4, Bot.CurrentUser.Username)
                            )
                                                    .AddField(
                            Get_Language.Language_Data.DMEmbed_Moderator5,
                            Get_Language.Language_Data.DMEmbed_Moderator6
                            )
                                                    .WithColor(new DiscordColor(0x00B06B))
                                                    .WithTimestamp(DateTime.Now)
                                                    .WithFooter(
                            string.Format("{0} Bot", Bot.CurrentUser.Username)
                            );
                        await MemberObjects.Member.SendMessageAsync(WelcomeEmbed);
                    }
                }

                Log.Debug($"{MemberObjects.Member.Username + "#" + MemberObjects.Member.Discriminator} is allowed join");
            }
            else
            {
                await MemberObjects.Member.SendMessageAsync(Get_Language.Language_Data.RoleNumNullMessage);
            }
        }
示例#5
0
 internal static bool AllowUserDelete(AllowUsers AllowUser) => AllowUsersCollection.Delete(AllowUser.Id);
示例#6
0
 internal static bool AllowUserUpdate(AllowUsers DBAllowUser) => AllowUsersCollection.Update(DBAllowUser);
示例#7
0
        internal static bool AllowUserFind(ulong GuildID, string Name, [MaybeNullWhen(true)] out AllowUsers DBAllowUser)
        {
            DBAllowUser = AllowUsersCollection.FindOne(AllowUser => AllowUser.GuildID == GuildID & AllowUser.Name == Name);

            return(DBAllowUser != null);
        }
示例#8
0
        internal static bool AllowUserFind(ulong GuildID, ulong Uuid, [MaybeNullWhen(true)] out AllowUsers DBAllowUser)
        {
            DBAllowUser = AllowUsersCollection.FindOne(AllowUser => AllowUser.GuildID == GuildID & AllowUser.Uuid == Uuid);

            return(DBAllowUser != null);
        }