39
39
from .asset import Asset
40
40
from .colour import Colour
41
41
from .enums import Status , try_enum
42
+ from .flags import MemberFlags
42
43
from .object import Object
43
44
from .permissions import Permissions
44
45
from .user import BaseUser , User , _UserTag
@@ -269,6 +270,10 @@ class Member(discord.abc.Messageable, _UserTag):
269
270
An aware datetime object that specifies the date and time in UTC when the member will be removed from timeout.
270
271
271
272
.. versionadded:: 2.0
273
+ flags: :class:`MemberFlags`
274
+ Extra attributes of the member.
275
+
276
+ .. versionadded:: 2.6
272
277
"""
273
278
274
279
__slots__ = (
@@ -284,6 +289,7 @@ class Member(discord.abc.Messageable, _UserTag):
284
289
"_state" ,
285
290
"_avatar" ,
286
291
"communication_disabled_until" ,
292
+ "flags" ,
287
293
)
288
294
289
295
if TYPE_CHECKING :
@@ -325,6 +331,7 @@ def __init__(
325
331
self .communication_disabled_until : datetime .datetime | None = utils .parse_time (
326
332
data .get ("communication_disabled_until" )
327
333
)
334
+ self .flags : MemberFlags = MemberFlags ._from_value (data .get ("flags" , 0 ))
328
335
329
336
def __str__ (self ) -> str :
330
337
return str (self ._user )
@@ -400,6 +407,7 @@ def _copy(cls: type[M], member: M) -> M:
400
407
self ._state = member ._state
401
408
self ._avatar = member ._avatar
402
409
self .communication_disabled_until = member .communication_disabled_until
410
+ self .flags = member .flags
403
411
404
412
# Reference will not be copied unless necessary by PRESENCE_UPDATE
405
413
# See below
@@ -429,6 +437,7 @@ def _update(self, data: MemberPayload) -> None:
429
437
self .communication_disabled_until = utils .parse_time (
430
438
data .get ("communication_disabled_until" )
431
439
)
440
+ self .flags = MemberFlags ._from_value (data .get ("flags" , 0 ))
432
441
433
442
def _presence_update (
434
443
self , data : PartialPresenceUpdate , user : UserPayload
@@ -729,6 +738,7 @@ async def edit(
729
738
voice_channel : VocalGuildChannel | None = MISSING ,
730
739
reason : str | None = None ,
731
740
communication_disabled_until : datetime .datetime | None = MISSING ,
741
+ bypass_verification : bool | None = MISSING ,
732
742
) -> Member | None :
733
743
"""|coro|
734
744
@@ -751,6 +761,18 @@ async def edit(
751
761
+------------------------------+--------------------------------------+
752
762
| communication_disabled_until | :attr:`Permissions.moderate_members` |
753
763
+------------------------------+--------------------------------------+
764
+ | bypass_verification | See note below |
765
+ +------------------------------+--------------------------------------+
766
+
767
+ .. note::
768
+
769
+ `bypass_verification` may be edited under three scenarios:
770
+
771
+ - Client has :attr:`Permissions.manage_guild`
772
+
773
+ - Client has :attr:`Permissions.manage_roles`
774
+
775
+ - Client has ALL THREE of :attr:`Permissions.moderate_members`, :attr:`Permissions.kick_members`, and :attr:`Permissions.ban_members`
754
776
755
777
All parameters are optional.
756
778
@@ -785,6 +807,10 @@ async def edit(
785
807
from timeout.
786
808
787
809
.. versionadded:: 2.0
810
+ bypass_verification: Optional[:class:`bool`]
811
+ Indicates if the member should bypass the guild's verification requirements.
812
+
813
+ .. versionadded:: 2.6
788
814
789
815
Returns
790
816
-------
@@ -849,6 +875,11 @@ async def edit(
849
875
else :
850
876
payload ["communication_disabled_until" ] = communication_disabled_until
851
877
878
+ if bypass_verification is not MISSING :
879
+ flags = MemberFlags ._from_value (self .flags .value )
880
+ flags .bypasses_verification = bypass_verification
881
+ payload ["flags" ] = flags .value
882
+
852
883
if payload :
853
884
data = await http .edit_member (guild_id , self .id , reason = reason , ** payload )
854
885
return Member (data = data , guild = self .guild , state = self ._state )
0 commit comments