/// <summary>Creates a message instance.</summary>
 /// <param name="userID">ID of group member to perform action on.</param>
 /// <param name="groupID">ID of group to perform action in.</param>
 /// <param name="newCapabilities">Group member's new capabilities.</param>
 public GroupAdminMessage(uint userID, uint groupID, WolfGroupCapabilities newCapabilities)
 {
     this.GroupID      = groupID;
     this.UserID       = userID;
     this.Capabilities = newCapabilities;
 }
Пример #2
0
        /// <summary>Checks if user has a specified privilege.</summary>
        /// <param name="context">Context of the command execution.</param>
        /// <param name="userID">ID of the user.</param>
        /// <param name="privileges">Required privileges flags.</param>
        /// <param name="cancellationToken">Cancellation token for cancelling the task.</param>
        /// <returns>True if user has at least one of specified privileges; otherwise false.</returns>
        public static async Task <bool> CheckPrivilegeAsync(ICommandContext context, uint userID, WolfGroupCapabilities privileges, CancellationToken cancellationToken = default)
        {
            WolfGroup group = await context.GetRecipientAsync <WolfGroup>(cancellationToken).ConfigureAwait(false);

            if (!group.Members.TryGetValue(userID, out WolfGroupMember member) && group.Members?.Any() != true)
            {
                GroupMembersListResponse membersResponse = await context.Client.SendAsync <GroupMembersListResponse>(
                    new GroupMembersListMessage(group.ID), cancellationToken).ConfigureAwait(false);

                member = membersResponse.GroupMembers.FirstOrDefault(u => u.UserID == userID);
            }
            if (member == null)
            {
                return(false);
            }
            return((privileges & member.Capabilities) == member.Capabilities);
        }
Пример #3
0
 public WolfGroupMember(uint userID, WolfGroupCapabilities capabilities) : this()
 {
     this.UserID       = userID;
     this.Capabilities = capabilities;
 }
Пример #4
0
 /// <summary>Creates a new instance of command group privilege requirement.</summary>
 /// <param name="privileges">Flags of privileges that fulfill this requirement.</param>
 /// <remarks>Only one of the privileges has to match. For example, Owner | Admin matches if user is either Owner or Admin.</remarks>
 /// <seealso cref="Privileges"/>
 public RequireGroupPrivilegeAttribute(WolfGroupCapabilities privileges) : base()
 {
     this.Privileges   = privileges;
     base.ErrorMessage = "(n) You don't have enough group privileges to execute this command.";
 }