public AccessDeniedPreconditionResult(RoleLevel userRole, RoleMatchType matchType, RoleLevel requiredRole)
     : base(CommandError.UnmetPrecondition, "Access Denied")
 {
     UserRole     = userRole;
     MatchType    = matchType;
     RequiredRole = requiredRole;
 }
Exemple #2
0
        private void checkedListBoxControl1_ItemCheck(object sender, DevExpress.XtraEditors.Controls.ItemCheckEventArgs e)
        {
            CheckedListBoxItem currItem = (CheckedListBoxItem)checkedListBoxControl1.GetItem(e.Index);
            职务等级   职务等级     = (职务等级)currItem.Value;
            string rolename = this.CurrentRole.Name;

            //如果选中
            if (e.State == CheckState.Checked)
            {
                RoleLevel rLevel = RoleLevel.GetRoleLevel(rolename, CurrentCompany.公司编码, 职务等级.编码);
                if (rLevel == null)
                {
                    rLevel      = new RoleLevel();
                    rLevel.角色   = rolename;
                    rLevel.公司编码 = CurrentCompany.公司编码;
                    rLevel.职务等级 = 职务等级.编码;
                    rLevel.Save();
                }
            }
            //如果没有选中
            if (e.State == CheckState.Unchecked)
            {
                RoleLevel rLevel = RoleLevel.GetRoleLevel(rolename, CurrentCompany.公司编码, 职务等级.编码);
                if (rLevel != null)
                {
                    rLevel.Delete();
                }
            }
        }
Exemple #3
0
 public void Deserialize(Serialization.IO.CompactReader reader)
 {
     this.RoleName    = reader.ReadObject() as string;
     this.RoleType    = (RoleType)reader.ReadObject();
     this.RoleLevel   = (RoleLevel)reader.ReadObject();
     this.Permissions = reader.ReadObject() as List <Permission>;
 }
    public void ReadConfig()
    {
        if (isLoadFinish == false)
        {
            return;
        }
        isLoadFinish = false;
        lock (LockObject) { GameSystem.Instance.readConfigCnt += 1; }

        Debug.Log("Config reading " + name);
        string text = ResourceLoadManager.Instance.GetConfigText(name);

        if (text == null)
        {
            Debug.LogError("LoadConfig failed: " + name);
            return;
        }
        RoleLevelDatas.Clear();

        //读取以及处理XML文本的类
        XmlDocument xmlDoc = CommonFunction.LoadXmlConfig(GlobalConst.DIR_XML_ROLELEVEL, text);
        //解析xml的过程
        XmlNodeList nodelist = xmlDoc.SelectSingleNode("Data").ChildNodes;

        foreach (XmlElement xe in nodelist)
        {
            XmlNode comment = xe.SelectSingleNode(GlobalConst.CONFIG_SWITCH_COLUMN);
            if (comment != null && comment.InnerText == GlobalConst.CONFIG_SWITCH)
            {
                continue;
            }
            RoleLevel role_level = new RoleLevel();

            foreach (XmlElement xel in xe)
            {
                if (xel.Name == "Level")
                {
                    uint.TryParse(xel.InnerText, out role_level.level);
                }
                else if (xel.Name == "Exp")
                {
                    uint.TryParse(xel.InnerText, out role_level.exp);
                }
                else if (xel.Name == "factor")
                {
                    float.TryParse(xel.InnerText, out role_level.factor);
                }
                else if (xel.Name.Contains("passive_skill_limit"))
                {
                    uint skill_limit;
                    uint.TryParse(xel.InnerText, out skill_limit);
                    role_level.skill_limit.Add(skill_limit);
                }
            }
            if (!RoleLevelDatas.ContainsKey(role_level.level))
            {
                RoleLevelDatas.Add(role_level.level, role_level);
            }
        }
    }
 public LlectroBotRole(RoleLevel level, IRole role)
 {
     Level  = level;
     RoleId = role.Id;
     Name   = role.Name;
     Value  = role;
 }
 public AccessDeniedPreconditionResult(RoleLevel UserRole, RoleMatchType Match, RoleLevel Required)
     : base(CommandError.UnmetPrecondition, "Access Denied")
 {
     this.UserRole     = UserRole;
     this.MatchType    = Match;
     this.RequiredRole = Required;
 }
        private void btnAdd_Click(object sender, EventArgs e)
        {
            RoleLevel imp = new RoleLevel();

            imp.标识 = Guid.NewGuid();
            impowerList.Add(imp);
            gridControl1.RefreshDataSource();
            gridView1.FocusedRowHandle = gridView1.RowCount - 1;
        }
Exemple #8
0
        public static bool HasRoleLevel(RoleLevel roleLevel)
        {
            if (Identity == null)
            {
                return(false);
            }

            return(Identity.Roles.Any(m => m.RoleLevel == roleLevel));
        }
 /// <summary>
 /// Returns the next higher role, then the role specified. Used for demoting members.
 /// </summary>
 /// <param name="Role"></param>
 /// <returns></returns>
 public static RoleLevel?GetDemoteRole(this RoleLevel Role, IDictionary <RoleLevel, IRole> Map)
 {
     return(Map
            //Order by highest value first.
            .OrderByDescending(o => (int)o.Key)
            //Find the first value, less then the specified value.
            .FirstOrDefault(o => (int)o.Key < (int)Role)
            //Select the role
            .Key);
 }
Exemple #10
0
        public CreateRoleRequest() : base()
        {
            Name      = string.Empty;
            RoleLevel = RoleLevel.NULL;

            if (Paginator == null)
            {
                Paginator = new Paginator();
            }
        }
 /// <summary>
 /// Returns the next higher role, then the role specified. Used for promoting members.
 /// </summary>
 /// <param name="Role"></param>
 /// <returns></returns>
 public static RoleLevel?GetPromoteRole(this RoleLevel Role, IDictionary <RoleLevel, IRole> Map)
 {
     return(Map
            //Exclude ServerAdmin and higher roles.
            .Where(o => (int)o.Key < (int)RoleLevel.ServerAdmin)
            //Order by lowest value first.
            .OrderBy(o => (int)o.Key)
            //return the first role higher then the specified role.
            .FirstOrDefault(o => (int)o.Key > (int)Role)
            //Select the promoted role
            .Key);
 }
 private bool Matches(RoleLevel role)
 {
     return(MatchType switch
     {
         RoleMatchType.LessThanOrequal => role <= Level,
         RoleMatchType.LessThan => role <Level,
                                         RoleMatchType.Equal => role == Level,
                                         RoleMatchType.GreaterThan => role> Level,
         RoleMatchType.GreaterThanOrEqual => role >= Level,
         RoleMatchType.NotEqualTo => role != Level,
         _ => false,
     });
        public bool hasPermission(RoleLevel role)
        {
            switch (matchType)
            {
            case RoleMatchType.EQUALS:
                if (role == requiredRole)
                {
                    return(true);
                }
                return(false);

            case RoleMatchType.GREATER_THEN:
                if (role > requiredRole)
                {
                    return(true);
                }
                return(false);

            case RoleMatchType.GREATER_THEN_OR_EQUAL:
                if (role >= requiredRole)
                {
                    return(true);
                }
                return(false);

            case RoleMatchType.LESS_THEN:
                if (role < requiredRole)
                {
                    return(true);
                }
                return(false);

            case RoleMatchType.LESS_THEN_OR_EQUAL:
                if (role <= requiredRole)
                {
                    return(true);
                }
                return(false);

            case RoleMatchType.NOT_EQUAL:
                if (role != requiredRole)
                {
                    return(true);
                }
                return(false);

            default:
                throw new ArgumentOutOfRangeException("Unknown match type encountered.");
            }
        }
Exemple #14
0
        private void InitListBox()
        {
            if (this.CurrentRole != null)
            {
                if (checkedListBoxControl1.Items.Count == 0)
                {
                    //初始化职务等级列表
                    职务等级 管培生, 副总经理以上;
                    管培生.编码    = "管培生"; 管培生.称 = "管培生";
                    副总经理以上.编码 = "副总经理以上"; 副总经理以上.称 = "副总经理以上";

                    List <职务等级> lvlList = new List <职务等级>();
                    lvlList.Add(管培生);
                    lvlList.Add(副总经理以上);
                    foreach (DictionaryEntry entry in PsHelper.GetSupvLvls())
                    {
                        职务等级 lvl = new 职务等级 {
                            编码 = (string)entry.Value, 称 = (string)entry.Key
                        };
                        lvlList.Add(lvl);
                    }
                    lvlList = lvlList.OrderBy(a => a.编码).ToList();
                    foreach (职务等级 lvl in lvlList)
                    {
                        CheckedListBoxItem item = new CheckedListBoxItem(lvl, false);
                        checkedListBoxControl1.Items.Add(item);
                    }
                }

                checkedListBoxControl1.BeginUpdate();

                if (CurrentCompany != null)
                {
                    List <RoleLevel> groups = RoleLevel.GetRoleLevels(this.CurrentRole.Name).FindAll(a => a.公司编码 == CurrentCompany.公司编码);
                    foreach (CheckedListBoxItem item in checkedListBoxControl1.Items)
                    {
                        职务等级 grade     = (职务等级)item.Value;
                        bool isChecked = groups.Find(a => a.职务等级 == grade.编码) != null;
                        item.CheckState = isChecked ? CheckState.Checked : CheckState.Unchecked;
                    }
                }

                checkedListBoxControl1.EndUpdate();
            }
        }
Exemple #15
0
        public void SetGuildRole(RoleLevel level, IRole GuildRole)
        {
            //Remove the specified role type.
            if (GuildRole == null)
            {
                this.Roles.RemoveAll(o => o.Level == level);
                return;
            }

            if (this.Roles.FirstOrDefault(o => o.Level == level).IsNotNull(out var r))
            {
                r.Set(GuildRole);
            }
            else
            {
                this.Roles.Add(new Models.GuildRole(level, GuildRole));
            }
        }
Exemple #16
0
        private void SaveGuildRole(RoleLevel roleLevel)
        {
            var existingRole = LlectroBotContext.GuildConfiguration.Roles.FirstOrDefault(
                r => r.Level == roleLevel);

            if (existingRole != null)
            {
                existingRole.Value = InputRoleCard.Result;
            }
            else
            {
                var role = new LlectroBotRole(roleLevel, InputRoleCard.Result);
                LlectroBotContext.GuildConfiguration.Roles.Add(role);
                LlectroBotContext.BotConfiguration.Save();
            }

            InputRoleCard = null;
        }
        public override int GetHashCode()
        {
            int hash = 1;

            if (StringId.Length != 0)
            {
                hash ^= StringId.GetHashCode();
            }
            if (RoleLevel != 0)
            {
                hash ^= RoleLevel.GetHashCode();
            }
            if (FinishDungeonId != 0)
            {
                hash ^= FinishDungeonId.GetHashCode();
            }
            return(hash);
        }
        private void btnDelete_Click(object sender, EventArgs e)
        {
            ColumnView colView = (ColumnView)gridControl1.MainView;

            if (colView != null)
            {
                if (MessageBox.Show("确实删除当前记录吗?", "删除提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, 0, false) == DialogResult.Yes)
                {
                    RoleLevel currentSalaryLevel = (RoleLevel)colView.GetFocusedRow();
                    if (currentSalaryLevel != null)
                    {
                        impowerList.Remove(currentSalaryLevel);
                        currentSalaryLevel.Delete();
                        gridControl1.RefreshDataSource();
                        MessageBox.Show("删除成功。", "删除提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
        }
        private void Init()
        {
            //初始化公司列表
            repositoryItemCompany.Items.Clear();
            foreach (CompanyInfo c in CompanyInfo.GetAll())
            {
                ImageComboBoxItem item = new ImageComboBoxItem(c.公司简称, c.公司编码);
                repositoryItemCompany.Items.Add(item);
            }
            //初始化职务等级列表
            repositoryItemGrade.Items.Clear();
            repositoryItemGrade.Items.Add(new ImageComboBoxItem("管培生", "管培生"));
            repositoryItemGrade.Items.Add(new ImageComboBoxItem("副总经理以上", "副总经理以上"));
            List <职务等级> lvlList = new List <职务等级>();

            foreach (DictionaryEntry entry in PsHelper.GetSupvLvls())
            {
                职务等级 lvl = new 职务等级 {
                    编码 = (string)entry.Value, 称 = (string)entry.Key
                };
                lvlList.Add(lvl);
            }
            lvlList = lvlList.OrderBy(a => a.编码).ToList();
            foreach (职务等级 lvl in lvlList)
            {
                ImageComboBoxItem item = new ImageComboBoxItem(lvl.称, lvl.编码);
                repositoryItemGrade.Items.Add(item);
            }
            //初始化角色列表
            List <Role> allRoles = Role.GetAll();

            foreach (Role role in allRoles)
            {
                repositoryItemRole.Items.Add(role.Name);
            }
            //只显示当前薪等表里的权限,历史记录隐藏
            impowerList.Clear();
            foreach (RoleLevel rg in RoleLevel.GetAll())
            {
                impowerList.Add(rg);
            }
            gridControl1.DataSource = impowerList;
        }
        public override async Task <PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services)
        {
            //If this a custom guild command context, get the config from the context.
            if (context is GuildCommandContext gcc)
            {
                RoleLevel role = gcc.GuildUser.GetRole(gcc.cfg);

                if (hasPermission(role))
                {
                    return(PreconditionResult.FromSuccess());
                }

                return(new AccessDeniedPreconditionResult(role, matchType, requiredRole));
            }
            else
            {
                await Task.FromResult(true);

                throw new InvalidOperationException($"{nameof(RoleLevelAttribute)} is only valid on type {nameof(GuildCommandContext)}");
            }
        }
 public IRole GetGuildRole(RoleLevel level)
 {
     return(Roles
            .FirstOrDefault(o => o.Level == level)
            ?.Value);
 }
 public RequireRoleAttribute(RoleLevel level, RoleMatchType matchType)
 {
     Level     = level;
     MatchType = matchType;
 }
Exemple #23
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);
            }
        }
Exemple #24
0
 public Role(int id, string name, RoleLevel roleLevel)
 {
     Id        = id;
     Name      = name;
     RoleLevel = roleLevel;
 }
Exemple #25
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;
                }

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

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

                    return;
                }

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

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

                    return;
                }

                if (!Database.DatabaseMethods.AllowUsersMethods.AllowUserFind(CommandObject.Guild.Id, msgs_ID, out AllowUsers DBAllowUsersID))
                {
                    await CommandObject.Message.Channel.SendMessageAsync(CommandObject.Language.IdNotRegisted);

                    return;
                }

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

                    return;
                }

                if (!Database.DatabaseMethods.RolesMethods.RoleFind(CommandObject.Guild.Id, DBAllowUsersID.RoleNum, out Roles DBBeforeRolesNum))
                {
                    await CommandObject.Message.Channel.SendMessageAsync(CommandObject.Language.BeforeRoleNotFound);

                    return;
                }

                DBAllowUsersID.RoleNum = msgs_RoleNum;
                Database.DatabaseMethods.AllowUsersMethods.AllowUserUpdate(DBAllowUsersID);

                DiscordMember GuildMember = await CommandObject.Guild.GetMemberAsync(msgs_ID);

                DiscordRole GuildAfterRole = CommandObject.Guild.GetRole(DBRolesNum.Uuid);
                await GuildMember.GrantRoleAsync(GuildAfterRole);

                DiscordRole GuildBeforeRole = CommandObject.Guild.GetRole(DBBeforeRolesNum.Uuid);
                await GuildMember.RevokeRoleAsync(GuildBeforeRole);

                string ResultText = string.Format(CommandObject.Language.DBUserChangeRoleSuccess, GuildMember.Username + "#" + GuildMember.Discriminator, GuildBeforeRole.Name, GuildAfterRole.Name);
                await CommandObject.Message.Channel.SendMessageAsync(ResultText);

                RoleLevel DBRoleLevel   = Enum.Parse <RoleLevel>(DBRolesNum.RoleLevel);
                bool      GuildLeaveBan = Database.DatabaseMethods.GuildConfigMethods.LeaveBanFind(CommandObject.Guild.Id);
                if (GuildLeaveBan)
                {
                    if (DBRoleLevel == RoleLevel.Public)
                    {
                        DiscordEmbed WelcomeEmbed = new Discord​Embed​Builder()
                                                    .WithTitle(string.Format(CommandObject.Language.DBUserChangeRoleEmbedTitle, GuildAfterRole.Name))
                                                    .AddField(
                            CommandObject.Language.DMEmbed_Public1,
                            CommandObject.Language.DMEmbed_Public2
                            )
                                                    .AddField(
                            CommandObject.Language.DMEmbed_Public3,
                            CommandObject.Language.DMEmbed_Public4
                            )
                                                    .AddField(
                            CommandObject.Language.DMEmbed_LeaveBan1,
                            string.Format(CommandObject.Language.DMEmbed_LeaveBan2, GuildAfterRole.Name)
                            )
                                                    .WithColor(new DiscordColor(0x00B06B))
                                                    .WithFooter(
                            string.Format("{0} Bot", CommandObject.Client.CurrentUser.Username)
                            );
                        await GuildMember.SendMessageAsync(WelcomeEmbed);

                        return;
                    }
                    else if (DBRoleLevel == RoleLevel.Moderator)
                    {
                        DiscordEmbed WelcomeEmbed = new Discord​Embed​Builder()
                                                    .WithTitle(string.Format(CommandObject.Language.DBUserChangeRoleEmbedTitle, GuildAfterRole.Name))
                                                    .AddField(
                            CommandObject.Language.DMEmbed_Moderator1,
                            CommandObject.Language.DMEmbed_Moderator2
                            )
                                                    .AddField(
                            CommandObject.Language.DMEmbed_Moderator3,
                            string.Format(CommandObject.Language.DMEmbed_Moderator4, CommandObject.Client.CurrentUser.Username)
                            )
                                                    .AddField(
                            CommandObject.Language.DMEmbed_Moderator5,
                            CommandObject.Language.DMEmbed_Moderator6
                            )
                                                    .AddField(
                            CommandObject.Language.DMEmbed_LeaveBan1,
                            string.Format(CommandObject.Language.DMEmbed_LeaveBan2, GuildAfterRole.Name)
                            )
                                                    .WithColor(new DiscordColor(0x00B06B))
                                                    .WithFooter(
                            string.Format("{0} Bot", CommandObject.Client.CurrentUser.Username)
                            );
                        await GuildMember.SendMessageAsync(WelcomeEmbed);

                        return;
                    }
                }
                else
                {
                    if (DBRoleLevel == RoleLevel.Public)
                    {
                        DiscordEmbed WelcomeEmbed = new Discord​Embed​Builder()
                                                    .WithTitle(string.Format(CommandObject.Language.DBUserChangeRoleEmbedTitle, GuildAfterRole.Name))
                                                    .AddField(
                            CommandObject.Language.DMEmbed_Public1,
                            CommandObject.Language.DMEmbed_Public2
                            )
                                                    .AddField(
                            CommandObject.Language.DMEmbed_Public3,
                            CommandObject.Language.DMEmbed_Public4
                            )
                                                    .WithColor(new DiscordColor(0x00B06B))
                                                    .WithFooter(
                            string.Format("{0} Bot", CommandObject.Client.CurrentUser.Username)
                            );
                        await GuildMember.SendMessageAsync(WelcomeEmbed);

                        return;
                    }
                    else if (DBRoleLevel == RoleLevel.Moderator)
                    {
                        DiscordEmbed WelcomeEmbed = new Discord​Embed​Builder()
                                                    .WithTitle(string.Format(CommandObject.Language.DBUserChangeRoleEmbedTitle, GuildAfterRole.Name))
                                                    .AddField(
                            CommandObject.Language.DMEmbed_Moderator1,
                            CommandObject.Language.DMEmbed_Moderator2
                            )
                                                    .AddField(
                            CommandObject.Language.DMEmbed_Moderator3,
                            string.Format(CommandObject.Language.DMEmbed_Moderator4, CommandObject.Client.CurrentUser.Username)
                            )
                                                    .AddField(
                            CommandObject.Language.DMEmbed_Moderator5,
                            CommandObject.Language.DMEmbed_Moderator6
                            )
                                                    .WithColor(new DiscordColor(0x00B06B))
                                                    .WithFooter(
                            string.Format("{0} Bot", CommandObject.Client.CurrentUser.Username)
                            );
                        await GuildMember.SendMessageAsync(WelcomeEmbed);

                        return;
                    }
                }
            }
            catch (IndexOutOfRangeException) {
                await CommandObject.Message.Channel.SendMessageAsync(CommandObject.Language.TypingMissed);

                return;
            }
        }
        public async Task <object> GetAvaiableRolesForUserCreation(RoleLevel request)
        {
            var models = await _roleService.GetAvaiableRolesForUserCreation(request.Level);

            return(models);
        }
Exemple #27
0
 public IRole GetGuildRole(RoleLevel level) => this.Roles.FirstOrDefault(o => o.Level == level)?.Value;
Exemple #28
0
        private async Task SetRole(SocketGuildUser User, IDictionary <RoleLevel, IRole> RoleMap, RoleLevel DesiredRole, StringBuilder sb)
        {
            var ToAdd = RoleMap
                        //Find all roles less then or equal to current role.
                        .Where(o => o.Key <= DesiredRole)
                        //Filter by roles the user does not have.
                        .Where(o => !User.Roles.Any(z => z.Id == o.Value.Id))
                        //Select the Role
                        .Select(o => o.Value);

            var ToRemove = RoleMap
                           //Find all roles greater then current role.
                           .Where(o => o.Key > DesiredRole)
                           //Filter by roles the user does have.
                           .Where(o => User.Roles.Any(z => z.Id == o.Value.Id))
                           //Select the Role
                           .Select(o => o.Value);

            //Make a formatted message return.
            sb.AppendLine($"Setting {User.Mention} to role {DesiredRole.ToString()}");

            foreach (var remove in ToRemove)
            {
                sb.AppendLine($"\tRemoved Role {remove.Mention}");
            }
            foreach (var add in ToAdd)
            {
                sb.AppendLine($"\tAdded Role {add.Mention}");
            }

            //Remove applicable roles
            if (ToRemove.Count() > 0)
            {
                await User.RemoveRolesAsync(ToRemove);
            }

            //Add applicable roles
            if (ToAdd.Count() > 0)
            {
                await User.AddRolesAsync(ToAdd);
            }
        }
Exemple #29
0
 public WebsiteRole(string name, string description, RoleLevel roleLevel)
 {
     Name        = name;
     Description = description;
     RoleLevel   = roleLevel;
 }
Exemple #30
0
        internal override async Task Execute(CommandObjects CommandObject)
        {
            await CommandObject.Channel.SendMessageAsync(string.Format(CommandObject.Language.DMMention, CommandObject.Member.Mention));

            string GuildPrefix = Database.DatabaseMethods.GuildConfigMethods.PrefixFind(CommandObject.Guild.Id);

            if (GuildPrefix == null)
            {
                GuildPrefix = CommandConfig.Prefix;
            }

            DiscordEmbedBuilder PublicEmbed    = new DiscordEmbedBuilder();
            DiscordEmbedBuilder ModeratorEmbed = new DiscordEmbedBuilder();
            DiscordEmbedBuilder BotownerEmbed  = new DiscordEmbedBuilder();

            foreach (CommandInfo Command_Info in CommandInfo.GetCommandInfo())
            {
                if (Command_Info.Command_Attribute.CommandName == null)
                {
                    continue;
                }

                switch (Command_Info.Command_Attribute.CommandRoleLevel)
                {
                case RoleLevel.Public:
                    PublicEmbed.AddField(
                        Command_Info.Command.Description[CommandObject.LanguageType],
                        string.Format($"`{Command_Info.Command.Usage[CommandObject.LanguageType]}`", GuildPrefix)
                        );
                    break;

                case RoleLevel.Moderator:
                    ModeratorEmbed.AddField(
                        Command_Info.Command.Description[CommandObject.LanguageType],
                        string.Format($"`{Command_Info.Command.Usage[CommandObject.LanguageType]}`", GuildPrefix)
                        );
                    break;

                case RoleLevel.Owner:
                    BotownerEmbed.AddField(
                        Command_Info.Command.Description[CommandObject.LanguageType],
                        string.Format($"`{Command_Info.Command.Usage[CommandObject.LanguageType]}`", CommandConfig.Prefix)
                        );
                    break;

                default:
                    break;
                }
            }

            PublicEmbed
            .WithTitle(CommandObject.Language.HelpPublicCommand)
            .WithDescription(string.Format(CommandObject.Language.HelpCommandPrefix, GuildPrefix))
            .WithColor(new DiscordColor(0x00B06B))
            .WithTimestamp(DateTime.Now)
            .WithFooter(string.Format("{0} Bot", CommandObject.Client.CurrentUser.Username));
            await CommandObject.Member.SendMessageAsync(PublicEmbed);

            RoleLevel DBRoleLevel =
                CommandObject.Message.Author.Id == CommandObject.Guild.Owner.Id ||
                CommandObject.Message.Author.Id == ClientConfig.BotownerId ? RoleLevel.Moderator :
                Database.DatabaseMethods.AllowUsersMethods.AllowUserFind(CommandObject.Guild.Id, CommandObject.Message.Author.Id, out AllowUsers DBAllowUsersID) &&
                Database.DatabaseMethods.RolesMethods.RoleFind(CommandObject.Guild.Id, DBAllowUsersID.RoleNum, out Roles DBRolesNum) ? (RoleLevel)Enum.Parse(typeof(RoleLevel), DBRolesNum.RoleLevel) :
                RoleLevel.Public;

            if (DBRoleLevel == RoleLevel.Moderator)               // CommandObject.Message.Author.Id == CommandObject.Guild.Owner.Id
            {
                ModeratorEmbed
                .WithTitle(CommandObject.Language.HelpModeratorCommand)
                .WithDescription(string.Format(CommandObject.Language.HelpCommandPrefix, GuildPrefix))
                .AddField(
                    CommandObject.Language.HelpConfigArgs,
                    "`" + "whitelist" + " | " + "leaveban" + " | " + "publicprefix" + " | " + "moderatorprefix" + " | " + "logchannel" + " | " + "language" + " | " + "level" + "`"
                    )
                .WithColor(new DiscordColor(0xF6AA00))
                .WithTimestamp(DateTime.Now)
                .WithFooter(string.Format("{0} Bot", CommandObject.Client.CurrentUser.Username));
                await CommandObject.Member.SendMessageAsync(ModeratorEmbed);
            }

            if (CommandObject.Message.Author.Id == ClientConfig.BotownerId)
            {
                BotownerEmbed
                .WithTitle("Botowner Commands")
                .WithDescription(string.Format("Prefix is {0}", CommandConfig.Prefix))
                .WithColor(new DiscordColor(0x1971FF))
                .WithTimestamp(DateTime.Now)
                .WithFooter(string.Format("{0} Bot", CommandObject.Client.CurrentUser.Username));
                await CommandObject.Member.SendMessageAsync(BotownerEmbed);
            }
        }