feat(commands/voice/queue): add immutability checks
This commit is contained in:
parent
b0e378105e
commit
74629ad984
@ -12,10 +12,6 @@ from state import client, players
|
|||||||
|
|
||||||
|
|
||||||
async def queue_or_play(message, edited=False):
|
async def queue_or_play(message, edited=False):
|
||||||
await ensure_joined(message)
|
|
||||||
if not command_allowed(message):
|
|
||||||
return
|
|
||||||
|
|
||||||
if message.guild.id not in players:
|
if message.guild.id not in players:
|
||||||
players[message.guild.id] = youtubedl.QueuedPlayer()
|
players[message.guild.id] = youtubedl.QueuedPlayer()
|
||||||
|
|
||||||
@ -73,6 +69,13 @@ async def queue_or_play(message, edited=False):
|
|||||||
if not (args := await parser.parse_args(message, tokens)):
|
if not (args := await parser.parse_args(message, tokens)):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
await ensure_joined(message)
|
||||||
|
if len(tokens) == 1 and tokens[0].lower() != "play":
|
||||||
|
if not command_allowed(message, immutable=True):
|
||||||
|
return
|
||||||
|
elif not command_allowed(message):
|
||||||
|
return
|
||||||
|
|
||||||
if edited:
|
if edited:
|
||||||
found = None
|
found = None
|
||||||
for queued in players[message.guild.id].queue:
|
for queued in players[message.guild.id].queue:
|
||||||
@ -162,54 +165,53 @@ async def queue_or_play(message, edited=False):
|
|||||||
message,
|
message,
|
||||||
f"**{len(players[message.guild.id].queue)}.** {queued.format()}",
|
f"**{len(players[message.guild.id].queue)}.** {queued.format()}",
|
||||||
)
|
)
|
||||||
|
elif tokens[0].lower() == "play":
|
||||||
|
await resume(message)
|
||||||
else:
|
else:
|
||||||
if tokens[0].lower() == "play":
|
if players[message.guild.id].queue:
|
||||||
await resume(message)
|
formatted_duration = utils.format_duration(
|
||||||
else:
|
sum(
|
||||||
if players[message.guild.id].queue:
|
[
|
||||||
formatted_duration = utils.format_duration(
|
queued.player.duration if queued.player.duration else 0
|
||||||
sum(
|
for queued in players[message.guild.id].queue
|
||||||
[
|
]
|
||||||
queued.player.duration if queued.player.duration else 0
|
|
||||||
for queued in players[message.guild.id].queue
|
|
||||||
]
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def embed(description):
|
def embed(description):
|
||||||
e = disnake.Embed(
|
e = disnake.Embed(
|
||||||
description=description,
|
description=description,
|
||||||
color=constants.EMBED_COLOR,
|
|
||||||
)
|
|
||||||
if formatted_duration:
|
|
||||||
e.set_footer(text=f"{formatted_duration} in total")
|
|
||||||
return e
|
|
||||||
|
|
||||||
await disnake_paginator.ButtonPaginator(
|
|
||||||
invalid_user_function=utils.invalid_user_handler,
|
|
||||||
color=constants.EMBED_COLOR,
|
color=constants.EMBED_COLOR,
|
||||||
segments=list(
|
|
||||||
map(
|
|
||||||
embed,
|
|
||||||
[
|
|
||||||
"\n\n".join(
|
|
||||||
[
|
|
||||||
f"**{i + 1}.** {queued.format(show_queuer=True, hide_preview=True, multiline=True)}"
|
|
||||||
for i, queued in batch
|
|
||||||
]
|
|
||||||
)
|
|
||||||
for batch in itertools.batched(
|
|
||||||
enumerate(players[message.guild.id].queue), 10
|
|
||||||
)
|
|
||||||
],
|
|
||||||
)
|
|
||||||
),
|
|
||||||
).start(disnake_paginator.wrappers.MessageInteractionWrapper(message))
|
|
||||||
else:
|
|
||||||
await utils.reply(
|
|
||||||
message,
|
|
||||||
"nothing is queued!",
|
|
||||||
)
|
)
|
||||||
|
if formatted_duration:
|
||||||
|
e.set_footer(text=f"{formatted_duration} in total")
|
||||||
|
return e
|
||||||
|
|
||||||
|
await disnake_paginator.ButtonPaginator(
|
||||||
|
invalid_user_function=utils.invalid_user_handler,
|
||||||
|
color=constants.EMBED_COLOR,
|
||||||
|
segments=list(
|
||||||
|
map(
|
||||||
|
embed,
|
||||||
|
[
|
||||||
|
"\n\n".join(
|
||||||
|
[
|
||||||
|
f"**{i + 1}.** {queued.format(show_queuer=True, hide_preview=True, multiline=True)}"
|
||||||
|
for i, queued in batch
|
||||||
|
]
|
||||||
|
)
|
||||||
|
for batch in itertools.batched(
|
||||||
|
enumerate(players[message.guild.id].queue), 10
|
||||||
|
)
|
||||||
|
],
|
||||||
|
)
|
||||||
|
),
|
||||||
|
).start(disnake_paginator.wrappers.MessageInteractionWrapper(message))
|
||||||
|
else:
|
||||||
|
await utils.reply(
|
||||||
|
message,
|
||||||
|
"nothing is queued!",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def playing(message):
|
async def playing(message):
|
||||||
@ -419,7 +421,7 @@ async def ensure_joined(message):
|
|||||||
if message.author.voice:
|
if message.author.voice:
|
||||||
await message.author.voice.channel.connect()
|
await message.author.voice.channel.connect()
|
||||||
else:
|
else:
|
||||||
await utils.reply(message, "You are not connected to a voice channel.")
|
await utils.reply(message, "you are not connected to a voice channel!")
|
||||||
|
|
||||||
|
|
||||||
def command_allowed(message, immutable=False):
|
def command_allowed(message, immutable=False):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user