3232import net .dv8tion .jda .api .entities .channel .concrete .*;
3333import net .dv8tion .jda .api .entities .channel .middleman .AudioChannel ;
3434import net .dv8tion .jda .api .entities .channel .middleman .GuildChannel ;
35+ import net .dv8tion .jda .api .entities .channel .unions .AudioChannelUnion ;
3536import net .dv8tion .jda .api .entities .channel .unions .DefaultGuildChannelUnion ;
3637import net .dv8tion .jda .api .entities .emoji .CustomEmoji ;
3738import net .dv8tion .jda .api .entities .emoji .RichCustomEmoji ;
6465import net .dv8tion .jda .api .utils .data .DataObject ;
6566import net .dv8tion .jda .internal .JDAImpl ;
6667import net .dv8tion .jda .internal .entities .automod .AutoModRuleImpl ;
68+ import net .dv8tion .jda .internal .entities .channel .mixin .middleman .GuildChannelMixin ;
6769import net .dv8tion .jda .internal .handle .EventCache ;
6870import net .dv8tion .jda .internal .interactions .CommandDataImpl ;
6971import net .dv8tion .jda .internal .interactions .command .CommandImpl ;
@@ -1641,18 +1643,19 @@ private AuditableRestAction<Void> timeoutUntilById0(@Nonnull String userId, @Nul
16411643 public AuditableRestAction <Void > deafen (@ Nonnull UserSnowflake user , boolean deafen )
16421644 {
16431645 Checks .notNull (user , "User" );
1644- checkPermission (Permission .VOICE_DEAF_OTHERS );
16451646
16461647 Member member = resolveMember (user );
16471648 if (member != null )
16481649 {
16491650 GuildVoiceState voiceState = member .getVoiceState ();
16501651 if (voiceState != null )
16511652 {
1652- if (voiceState .getChannel () == null )
1653+ final AudioChannelUnion channel = voiceState .getChannel ();
1654+ if (channel == null )
16531655 throw new IllegalStateException ("Can only deafen members who are currently in a voice channel" );
16541656 if (voiceState .isGuildDeafened () == deafen )
16551657 return new CompletedRestAction <>(getJDA (), null );
1658+ ((GuildChannelMixin <?>) channel ).checkPermission (Permission .VOICE_DEAF_OTHERS );
16561659 }
16571660 }
16581661
@@ -1666,18 +1669,19 @@ public AuditableRestAction<Void> deafen(@Nonnull UserSnowflake user, boolean dea
16661669 public AuditableRestAction <Void > mute (@ Nonnull UserSnowflake user , boolean mute )
16671670 {
16681671 Checks .notNull (user , "User" );
1669- checkPermission (Permission .VOICE_MUTE_OTHERS );
16701672
16711673 Member member = resolveMember (user );
16721674 if (member != null )
16731675 {
16741676 GuildVoiceState voiceState = member .getVoiceState ();
16751677 if (voiceState != null )
16761678 {
1677- if (voiceState .getChannel () == null )
1679+ final AudioChannelUnion channel = voiceState .getChannel ();
1680+ if (channel == null )
16781681 throw new IllegalStateException ("Can only mute members who are currently in a voice channel" );
16791682 if (voiceState .isGuildMuted () == mute && (mute || !voiceState .isSuppressed ()))
16801683 return new CompletedRestAction <>(getJDA (), null );
1684+ ((GuildChannelMixin <?>) channel ).checkPermission (Permission .VOICE_MUTE_OTHERS );
16811685 }
16821686 }
16831687
0 commit comments