/// <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; }
/// <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); }
public WolfGroupMember(uint userID, WolfGroupCapabilities capabilities) : this() { this.UserID = userID; this.Capabilities = capabilities; }
/// <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."; }