package Ġnet . server pe on . discord . model Ċ Ċ import Ġjava . util .* Ċ Ċ data Ġclass ĠPermission Set Ġinternal Ġconstructor ( private Ġval Ġpermissions : ĠEnum Set < Permission >) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġif Ġthe Ġgiven Ġpermission Ġis Ġin Ġthis Ġset . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġcontains ( perm : ĠPermission ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpermissions . contains ( perm ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAlias Ġfor Ġ[ contains ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhas ( perm : ĠPermission ) Ġ= Ġcontains ( perm ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġif Ġall Ġthe Ġpermissions Ġin Ġthe Ġgiven Ġcollection Ġare Ġin Ġthis Ġset . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġpermissions ĠThe Ġpermissions Ġto Ġcheck Ġfor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġall ( permissions : ĠCollection < Permission >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . permissions . contains All ( permissions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġ` true ` Ġif Ġthis Ġset Ġcontains Ġno Ġpermissions . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġempty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . permissions . isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew ĠPermission Set Ġthat Ġis Ġthe Ġsame Ġas Ġthis Ġset Ġbut Ġwithout Ġany Ġof Ġthe Ġpermissions Ġcontained Ġin Ġthe ĊĠĠĠĠ Ġ* Ġother Ġset . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġperms ĠThe Ġpermissions Ġto Ġdelete Ġfrom Ġthe Ġcloned Ġset . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwithout ( perms : ĠPermission Set ): ĠPermission Set Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPermission Set ( Enum Set . copyOf ( permissions ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove All ( perms . permissions ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew ĠPermission Set Ġthat Ġis Ġthe Ġsame Ġas Ġthis Ġset Ġbut Ġwithout Ġany Ġof Ġthe Ġpermissions Ġcontained Ġin Ġthe ĊĠĠĠĠ Ġ* Ġcollection . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġperms ĠThe Ġpermissions Ġto Ġdelete Ġfrom Ġthe Ġcloned Ġset . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwithout ( perms : ĠCollection < Permission >): ĠPermission Set Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPermission Set ( Enum Set . copyOf ( permissions ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove All ( perms ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew ĠPermission Set Ġthat Ġis Ġthe Ġsame Ġas Ġthis Ġset Ġbut Ġincludes Ġall Ġof Ġthe Ġpermissions Ġcontained Ġin Ġthe ĊĠĠĠĠ Ġ* Ġother Ġset . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġperms ĠThe Ġpermissions Ġto Ġadd Ġto Ġthe Ġcloned Ġset . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwith ( perms : ĠPermission Set ): ĠPermission Set Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPermission Set ( Enum Set . copyOf ( permissions ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( perms . permissions ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew ĠPermission Set Ġthat Ġis Ġthe Ġsame Ġas Ġthis Ġset Ġbut Ġincludes Ġall Ġof Ġthe Ġpermissions Ġcontained Ġin Ġthe ĊĠĠĠĠ Ġ* Ġother Ġcollection . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġperms ĠThe Ġpermissions Ġto Ġadd Ġto Ġthe Ġcloned Ġset . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġwith ( perms : ĠCollection < Permission >): ĠPermission Set Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPermission Set ( Enum Set . copyOf ( permissions ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( perms ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠZERO Ġ= ĠPermission Set ( Enum Set . none Of ( Permission :: class . java )) ĊĠĠĠĠĠĠĠ Ġval ĠALL Ġ= ĠPermission Set ( Enum Set . all Of ( Permission :: class . java )) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( permissions : ĠCollection < Permission >): ĠPermission Set Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( permissions . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠZERO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPermission Set ( Enum Set . copyOf ( permissions )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠPermission Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġfor Ġ[ Channel . Public . create Invite ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠCREATE _ INST ANT _ INV ITE , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġfor Ġ[ Guild . Member . kick ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠK ICK _ MEMBER S , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġfor Ġ[ Guild . Member . ban ] Ġand Ġ[ Guild . un ban ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠB AN _ MEMBER S , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġfor Ġ[ Guild . create Role ], Ġ[ Role . edit ] Ġand Ġ[ Role . delete ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠMAN AGE _ RO LES , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPres um ably Ġrequired Ġfor Ġ[ Channel . Public . set Override ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠMAN AGE _ PERMISSION S , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġfor Ġ[ Guild . create Channel ], Ġ[ Channel . Public . edit ] Ġand Ġ[ Channel . Public . delete ] Ġon Ġall Ġchannels Ġon Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġserver . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠMAN AGE _ CHANNEL S , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġfor Ġ[ Channel . Public . edit ] Ġand Ġ[ Channel . Public . delete ] Ġon Ġa Ġspecific Ġchannel Ġon Ġthe Ġserver . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ see Ġ[ Channel . Public . set Override ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠMAN AGE _ CHANNEL , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġfor Ġ[ Guild . edit ] Ġand Ġ[ Guild . delete ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠMAN AGE _ SERVER , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġin Ġother Ġto Ġreceive Ġ[ Message Event ] Ġfrom Ġa Ġgiven Ġchannel . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠREAD _ MESSAGES , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġfor Ġaccess Ġto Ġ[ Channel . Text . sendMessage ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠS END _ MESSAGES , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġto Ġenable Ġthe Ġ` text ToS peech ` Ġparameter Ġof Ġ[ Channel . Text . sendMessage ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠS END _ TT S _ MESSAGES , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġto Ġuse Ġ[ Posted Message . delete ] Ġmessages Ġthat Ġdo Ġwere Ġnot Ġposted Ġby Ġthe Ġuser Ġitself . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠMAN AGE _ MESSAGES , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġto Ġenable Ġauto - embedding Ġof Ġlinks Ġcontained Ġin Ġmessages . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠE MB ED _ LIN KS , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠFIXME : Ġhow Ġdoes Ġthis Ġeven Ġwork ? ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġto Ġattach Ġfiles Ġto Ġa Ġmessage . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠATT ACH _ FILES , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġto Ġread Ġback Ġthe Ġmessage Ġhistory Ġof Ġa Ġchannel . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġfor Ġ[ Channel . Text . message History ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠREAD _ MESSAGE _ HISTORY , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequired Ġfor Ġthe Ġuse Ġof Ġ[ Message . Builder . append Mention Every one ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠM ENT ION _ E VERY ONE , ĊĊĠĠĠĠĠĠĠ ĠV O ICE _ CONNECT , ĊĠĠĠĠĠĠĠ ĠV O ICE _ SPE AK , ĊĠĠĠĠĠĠĠ ĠV O ICE _ M UTE _ MEMBER S , ĊĠĠĠĠĠĠĠ ĠV O ICE _ DE AF EN _ MEMBER S , ĊĠĠĠĠĠĠĠ ĠV O ICE _ MOVE _ MEMBER S , ĊĠĠĠĠĠĠĠ ĠV O ICE _ USE _ V AD ; ĊĠĠĠ Ġ} Ċ }