|
| 1 | +from typing import Dict |
1 | 2 | from discord.ui import Button
|
2 | 3 | from handlers import skip_handler, queue_handler
|
3 | 4 | import discord
|
| 5 | +from discord.interactions import Interaction |
4 | 6 |
|
5 | 7 |
|
6 |
| -# Кнопка для пропуска трека |
7 | 8 | class SkipButton(Button):
|
8 |
| - def __init__(self): |
9 |
| - super().__init__(label="Пропустить", style=discord.ButtonStyle.gray, emoji='⏭') |
| 9 | + """ |
| 10 | + Класс кнопки для пропуска текущего трека. |
| 11 | +
|
| 12 | + Attributes: |
| 13 | + label (str): Текст кнопки. |
| 14 | + style (discord.ButtonStyle): Стиль кнопки. |
| 15 | + emoji (str): Эмодзи для кнопки. |
| 16 | +
|
| 17 | + Methods: |
| 18 | + button_callback: Обработчик нажатия кнопки для пропуска текущего трека. |
| 19 | + """ |
| 20 | + |
| 21 | + def __init__(self) -> None: |
| 22 | + super().__init__(label="Пропустить", style=discord.ButtonStyle.gray, emoji="⏭") |
10 | 23 | self.callback = self.button_callback
|
11 | 24 |
|
12 | 25 | @staticmethod
|
13 |
| - async def button_callback(interaction): |
| 26 | + async def button_callback(interaction: Interaction) -> None: |
14 | 27 | """Пропускает текущий трек"""
|
15 | 28 | await skip_handler(interaction)
|
16 | 29 |
|
17 | 30 |
|
18 |
| -# Кнопка для просмотра очереди треков |
19 | 31 | class QueueButton(Button):
|
20 |
| - def __init__(self, queues): |
21 |
| - super().__init__(label="Очередь", style=discord.ButtonStyle.gray, emoji='🎵') |
| 32 | + """ |
| 33 | + Класс кнопки для просмотра текущей очереди. |
| 34 | +
|
| 35 | + Attributes: |
| 36 | + label (str): Текст кнопки. |
| 37 | + style (discord.ButtonStyle): Стиль кнопки. |
| 38 | + emoji (str): Эмодзи для кнопки. |
| 39 | + queues (dict): Словарь очередей. |
| 40 | +
|
| 41 | + Methods: |
| 42 | + button_callback: Обработчик нажатия кнопки для просмотра текущей очереди. |
| 43 | + """ |
| 44 | + |
| 45 | + def __init__(self, queues: Dict[int, list]) -> None: |
| 46 | + super().__init__(label="Очередь", style=discord.ButtonStyle.gray, emoji="🎵") |
22 | 47 | self.queues = queues
|
23 | 48 | self.callback = self.button_callback
|
24 | 49 |
|
25 |
| - async def button_callback(self, interaction): |
| 50 | + async def button_callback(self, interaction) -> None: |
26 | 51 | await queue_handler(interaction, self.queues)
|
27 | 52 |
|
28 | 53 |
|
29 |
| -# Кнопка для удаления добавленного трека из очереди |
30 | 54 | class RemoveButton(Button):
|
31 |
| - def __init__(self, queues, track_info): |
32 |
| - super().__init__(label='Удалить', style=discord.ButtonStyle.gray, emoji='❌') |
| 55 | + """ |
| 56 | + Класс кнопки для удаления трека из очереди. |
| 57 | +
|
| 58 | + Attributes: |
| 59 | + label (str): Текст кнопки. |
| 60 | + style (discord.ButtonStyle): Стиль кнопки. |
| 61 | + emoji (str): Эмодзи для кнопки. |
| 62 | + queues (dict): Словарь очередей. |
| 63 | + track_info (dict): Информация о треке. |
| 64 | +
|
| 65 | + Methods: |
| 66 | + button_callback: Обработчик нажатия кнопки для удаления трека из очереди. |
| 67 | + """ |
| 68 | + |
| 69 | + def __init__(self, queues: Dict[int, list], track_info: dict) -> None: |
| 70 | + super().__init__(label="Удалить", style=discord.ButtonStyle.gray, emoji="❌") |
33 | 71 | self.queues = queues
|
34 | 72 | self.track_info = track_info
|
35 | 73 | self.callback = self.button_callback
|
36 | 74 |
|
37 |
| - async def button_callback(self, interaction): |
38 |
| - if interaction.user != self.track_info['author']: |
39 |
| - return await interaction.response.send_message( |
40 |
| - 'Ты не можешь удалять треки, добавленные другими пользователями', ephemeral=True |
| 75 | + async def button_callback(self, interaction: Interaction) -> None: |
| 76 | + """ |
| 77 | + Удаляет трек из очереди при нажатии кнопки. |
| 78 | +
|
| 79 | + Parameters: |
| 80 | + interaction (Interaction): Взаимодействие с кнопкой. |
| 81 | + """ |
| 82 | + if interaction.user != self.track_info["author"]: |
| 83 | + await interaction.response.send_message( |
| 84 | + "Ты не можешь удалять треки, добавленные другими пользователями", |
| 85 | + ephemeral=True, |
41 | 86 | )
|
| 87 | + return |
42 | 88 |
|
43 |
| - if self.queues.get(interaction.guild_id) and self.track_info not in self.queues[interaction.guild_id]: |
44 |
| - return await interaction.response.send_message(f'Трек {self.track_info["title"]} отсутствует в очереди') |
| 89 | + if self.track_info not in self.queues[interaction.guild_id]: |
| 90 | + await interaction.response.send_message( |
| 91 | + f'Трек {self.track_info["title"]} отсутствует в очереди' |
| 92 | + ) |
| 93 | + return |
45 | 94 |
|
46 | 95 | self.queues[interaction.guild_id].remove(self.track_info)
|
47 |
| - return await interaction.response.send_message(f'Трек {self.track_info["title"]} был удален из очереди') |
| 96 | + await interaction.response.send_message( |
| 97 | + f'Трек {self.track_info["title"]} был удален из очереди' |
| 98 | + ) |
0 commit comments