Add Member.server_permissions to calculate server permissions.

This commit is contained in:
Rapptz 2016-09-21 04:50:22 -04:00
parent 5e20b468c1
commit 625ed18cff

View File

@ -26,6 +26,7 @@ DEALINGS IN THE SOFTWARE.
from .user import User
from .game import Game
from .permissions import Permissions
from . import utils
from .enums import Status, ChannelType
from .colour import Colour
@ -200,3 +201,29 @@ class Member(User):
roles = sorted(self.roles, reverse=True)
return roles[0]
return None
@property
def server_permissions(self):
"""Returns the member's server permissions.
This only takes into consideration the server permissions
and not most of the implied permissions or any of the
channel permission overwrites. For 100% accurate permission
calculation, please use either :meth;`permissions_in` or
:meth:`Channel.permissions_for`.
This does take into consideration server ownership and the
administrator implication.
"""
if self.server.owner == self:
return Permissions.all()
base = Permissions.none()
for r in self.roles:
base.value |= r.permissions.value
if base.administrator:
return Permissions.all()
return base