Skip to content

Commit 3e19efa

Browse files
committed
karaoke setting done (1/7)
1 parent d4829d6 commit 3e19efa

File tree

9 files changed

+320
-250
lines changed

9 files changed

+320
-250
lines changed

nameless/command/music.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
from ..config import nameless_config
1313
from ..custom.player import CustomPlayer, TrackDropdown
14-
from ..custom.player.settings import filter_settings, sponsorblock_settings
14+
from ..custom.player.settings import sponsorblock_make
15+
from ..custom.player.settings.filters import filter_make
1516
from ..custom.player.settings.sponsorblock_settings import SponsorBlockSettings
1617
from ..custom.ui import ViewButton, ViewMenu
1718
from ..nameless import Nameless
@@ -666,14 +667,14 @@ async def autoplay(
666667
async def sponsorblock(self, ctx: commands.Context[Nameless]):
667668
"""Settings for sponsorblock."""
668669
# Making a menu to control sponsorblock settings.
669-
await sponsorblock_settings.make(ctx)
670+
await sponsorblock_make(ctx)
670671

671672
@commands.hybrid_command()
672673
@app_commands.guild_only()
673674
async def filter(self, ctx: commands.Context[Nameless]):
674675
"""Settings for filters."""
675676
# Making a menu to control filter settings.
676-
await filter_settings.make(ctx)
677+
await filter_make(ctx)
677678

678679

679680
async def setup(bot: Nameless):
+1-13
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,4 @@
1-
from .filter_settings import FilterFlags
2-
from .filter_settings import make as filter_make
3-
from .karaoke_settings import KaraokeFlags
4-
from .karaoke_settings import make as karaoke_make
51
from .sponsorblock_settings import SponsorBlockFlags, SponsorBlockSettings
62
from .sponsorblock_settings import make as sponsorblock_make
73

8-
__all__ = [
9-
"filter_make",
10-
"FilterFlags",
11-
"karaoke_make",
12-
"KaraokeFlags",
13-
"sponsorblock_make",
14-
"SponsorBlockFlags",
15-
"SponsorBlockSettings",
16-
]
4+
__all__ = ["sponsorblock_make", "SponsorBlockFlags", "SponsorBlockSettings"]

nameless/custom/player/settings/base.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from nameless.custom.ui import CustomDropdown
66

77

8-
class BaseView(discord.ui.View):
8+
class BaseSettingsView(discord.ui.View):
99
def __init__(self, author: discord.Member | discord.User, message: discord.Message):
1010
super().__init__(timeout=30)
1111
self.author: discord.Member | discord.User = author
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from .filter_settings import make as filter_make
2+
from .karaoke_settings import make as karaoke_make
3+
4+
__all__ = ["filter_make", "karaoke_make"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import logging
2+
3+
import discord
4+
import wavelink
5+
6+
from nameless.custom.ui.modal import BaseCustomModal
7+
8+
from ..base import BaseSettingsView
9+
10+
__all__ = ["FilterModal", "FilterView"]
11+
12+
13+
class FilterModal(BaseCustomModal[int]):
14+
def __init__(self, title: str, filters: wavelink.Filters) -> None:
15+
super().__init__(title)
16+
17+
self.filters: wavelink.Filters = filters
18+
self.on_create()
19+
20+
def on_create(self):
21+
pass
22+
23+
24+
class FilterView(BaseSettingsView):
25+
def __init__(
26+
self,
27+
author: discord.Member | discord.User,
28+
message: discord.Message,
29+
filters: wavelink.Filters,
30+
):
31+
super().__init__(author, message)
32+
self.filters: wavelink.Filters = filters
33+
self._exit: bool = False
34+
self._save: bool = False
35+
36+
def exit(self):
37+
self._exit = True
38+
self.stop()
39+
40+
def save(self):
41+
self._save = True
42+
self.stop()
43+
44+
def is_save(self) -> bool:
45+
return self._save
46+
47+
def is_exit(self) -> bool:
48+
return self._exit
49+
50+
def set_filter(self, category: str, name: str, value: float):
51+
try:
52+
getattr(self.filters, category).set(**{name: value}) # pyright: ignore[reportAny]
53+
return True
54+
except AttributeError:
55+
logging.error(f"Failed to set filter {category} {name} {value}")
56+
return False

nameless/custom/player/settings/filter_settings.py nameless/custom/player/settings/filters/filter_settings.py

+12-4
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@
22
from typing import cast, override
33

44
import discord
5+
import wavelink
56
from discord.ext import commands
67

78
from nameless import Nameless
89
from nameless.custom.ui import CustomDropdown
910

10-
from .base import BaseView
11+
from ..base import BaseSettingsView
1112
from .karaoke_settings import make as karaoke_make
1213

14+
__all__ = ["make"]
15+
1316

1417
class FilterFlags(Enum):
1518
EXIT = "-1"
@@ -33,7 +36,7 @@ def get_selected_flag(self) -> FilterFlags:
3336
return FilterFlags(self.values[0])
3437

3538

36-
class SettingsView(BaseView):
39+
class SettingsView(BaseSettingsView):
3740
def __init__(self, author: discord.Member | discord.User, message: discord.Message):
3841
super().__init__(author, message)
3942
self.add_item(FilterDropdown())
@@ -44,6 +47,8 @@ def get_dropdown(self) -> FilterDropdown:
4447

4548

4649
async def make(ctx: commands.Context[Nameless]):
50+
assert ctx.guild is not None
51+
4752
embed = (
4853
discord.Embed(
4954
title="Filter Settings",
@@ -59,10 +64,13 @@ async def make(ctx: commands.Context[Nameless]):
5964
.add_field(name="Rotation", value="Change the rotation settings")
6065
)
6166

67+
voice_client = cast(wavelink.Player, ctx.guild.voice_client)
68+
filters = voice_client.filters
6269
message = await ctx.send(embed=embed)
70+
6371
while True:
6472
view = SettingsView(ctx.author, message)
65-
await message.edit(view=view)
73+
await message.edit(view=view, embed=embed)
6674

6775
if await view.wait():
6876
await message.edit(view=None)
@@ -71,7 +79,7 @@ async def make(ctx: commands.Context[Nameless]):
7179
selected_flag = view.get_dropdown().get_selected_flag()
7280
match selected_flag:
7381
case FilterFlags.KARAOKE:
74-
await karaoke_make(ctx, message)
82+
await karaoke_make(ctx, message, filters, voice_client)
7583
case FilterFlags.EXIT:
7684
await message.edit(view=None)
7785
return

0 commit comments

Comments
 (0)