Skip to content

Commit

Permalink
feat: force skipping by manage server permission and manager
Browse files Browse the repository at this point in the history
  • Loading branch information
zapteryx committed Oct 27, 2022
1 parent 8b0fb41 commit 1444305
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
4 changes: 3 additions & 1 deletion locales/en/cmd.js
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,9 @@ export default {
RESPONSE: {
SUCCESS: {
DEFAULT: 'Skipped [**%1**](%2)',
VOTED: 'Skipped [**%1**](%2) by voting'
VOTED: 'Skipped [**%1**](%2) by voting',
FORCED: 'Skipped [**%1**](%2) by force',
MANAGER: 'Skipped [**%1**](%2) by manager bypass'
},
VOTED: {
SUCCESS: 'Voted to skip [**%1**](%2) `[%3 / %4]`',
Expand Down
23 changes: 20 additions & 3 deletions src/commands/skip.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ import { checks } from '#src/lib/util/constants.js';
import { settings } from '#src/lib/util/settings.js';
import { getGuildLocaleString, getLocaleString } from '#src/lib/util/util.js';
import type { ChatInputCommandInteraction, GuildMember } from 'discord.js';
import { escapeMarkdown, SlashCommandBuilder } from 'discord.js';
import {
escapeMarkdown,
PermissionsBitField,
SlashCommandBuilder,
} from 'discord.js';

export default {
data: new SlashCommandBuilder()
Expand Down Expand Up @@ -37,11 +41,24 @@ export default {
);
return;
}
if (player.queue.current.requester === interaction.user.id) {
if (
player.queue.current.requester === interaction.user.id ||
interaction.channel
.permissionsFor(interaction.member as GuildMember)
.missing(PermissionsBitField.Flags.ManageGuild).length === 0 ||
settings.managers.includes(interaction.user.id)
) {
const track = await player.queue.skip();
await player.queue.start();
await interaction.replyHandler.locale(
'CMD.SKIP.RESPONSE.SUCCESS.DEFAULT',
player.queue.current.requester === interaction.user.id
? 'CMD.SKIP.RESPONSE.SUCCESS.DEFAULT'
: interaction.channel
.permissionsFor(interaction.member as GuildMember)
.missing(PermissionsBitField.Flags.ManageGuild)
.length === 0
? 'CMD.SKIP.RESPONSE.SUCCESS.FORCED'
: 'CMD.SKIP.RESPONSE.SUCCESS.MANAGER',
{
vars: [escapeMarkdown(track.title), track.uri],
type: 'success',
Expand Down

0 comments on commit 1444305

Please sign in to comment.