Source code for pylav.extension.red.ui.selectors.options.queue

from __future__ import annotations

from pathlib import Path

import discord
from redbot.core.i18n import Translator

from pylav.helpers.format.strings import shorten_string
from pylav.players.tracks.obj import Track

_ = Translator("PyLav", Path(__file__))


[docs] class QueueTrackOption(discord.SelectOption): def __init__(self, name: str, description: str, value: str): super().__init__( label=shorten_string(max_length=100, string=name), description=shorten_string(max_length=100, string=description), value=value, )
[docs] @classmethod async def from_track(cls, track: Track, index: int): name = await track.get_track_display_name( max_length=100 - (2 + len(str(index + 1))), author=False, unformatted=True ) label = f"{index + 1}. {name}" return cls( name=shorten_string(max_length=100, string=label), description=shorten_string(max_length=100, string=await track.author()), value=track.id, )
[docs] class EffectsOption(discord.SelectOption): def __init__(self, label: str, description: str, value: str, index: int): super().__init__( label=shorten_string(max_length=100, string=f"{index + 1}. {label}"), description=shorten_string(max_length=100, string=description), value=value, )
[docs] class SearchTrackOption(discord.SelectOption): def __init__(self, name: str, description: str, value: str): super().__init__( label=shorten_string(max_length=100, string=name), description=shorten_string(max_length=100, string=description), value=value, )
[docs] @classmethod async def from_track(cls, track: Track, index: int): name = await track.get_track_display_name( max_length=100 - (2 + len(str(index + 1))), author=False, unformatted=True ) return cls( name=shorten_string(max_length=100, string=f"{index + 1}. {name}"), description=shorten_string(max_length=100, string=await track.author()), value=track.id, )