This commit is contained in:
parent
5d410ab994
commit
411f359921
@ -40,6 +40,7 @@ class CommandProcessor:
|
||||
"contacts": user_commands.ContactsBot,
|
||||
"help": user_commands.HelpCommand,
|
||||
"p": user_commands.PlayPauseCommand,
|
||||
"e": user_commands.QueueCommand,
|
||||
"u": user_commands.PlayUrlCommand,
|
||||
"sv": user_commands.ServiceCommand,
|
||||
"s": user_commands.StopCommand,
|
||||
|
@ -1,6 +1,7 @@
|
||||
from __future__ import annotations
|
||||
from typing import List, Optional, TYPE_CHECKING
|
||||
import os
|
||||
import re
|
||||
|
||||
from bot.commands.command import Command
|
||||
from bot.player.enums import Mode, State, TrackType
|
||||
@ -582,6 +583,68 @@ class DownloadCommand(Command):
|
||||
else:
|
||||
return self.translator.translate("Nothing is playing")
|
||||
|
||||
class QueueCommand(Command):
|
||||
@property
|
||||
def help(self) -> str:
|
||||
return self.translator.translate(
|
||||
"QUERY Adds a track to the queue. If no track is playing, plays immediately."
|
||||
)
|
||||
|
||||
def __call__(self, arg: str, user: User) -> Optional[str]:
|
||||
if not arg:
|
||||
raise errors.InvalidArgumentError
|
||||
|
||||
self.run_async(
|
||||
self.ttclient.send_message,
|
||||
self.translator.translate("Searching..."),
|
||||
user,
|
||||
)
|
||||
|
||||
try:
|
||||
if re.match(r'http[s]?://', arg):
|
||||
# Kalau URL, langsung stream
|
||||
tracks = self.module_manager.streamer.get(arg, user.is_admin if user is not None else True)
|
||||
self.player.add_to_queue(tracks)
|
||||
|
||||
# Kalau gak lagi main apa-apa, langsung play
|
||||
if not self.player.is_playing():
|
||||
self.player.play_next()
|
||||
|
||||
if self.config.general.send_channel_messages:
|
||||
self.run_async(
|
||||
self.ttclient.send_message,
|
||||
self.translator.translate(
|
||||
"{nickname} added a stream URL to the queue."
|
||||
).format(nickname=user.nickname),
|
||||
type=2,
|
||||
)
|
||||
return self.translator.translate("Added stream URL to the queue.")
|
||||
else:
|
||||
# Kalau bukan URL, cari lagu dari service
|
||||
track_list = self.service_manager.service.search(arg)
|
||||
self.player.add_to_queue(track_list)
|
||||
|
||||
if not self.player.is_playing():
|
||||
self.player.play_next()
|
||||
|
||||
if self.config.general.send_channel_messages:
|
||||
self.run_async(
|
||||
self.ttclient.send_message,
|
||||
self.translator.translate(
|
||||
"{nickname} added {request} to the queue."
|
||||
).format(nickname=user.nickname, request=arg),
|
||||
type=2,
|
||||
)
|
||||
return self.translator.translate("Added {} to the queue.").format(
|
||||
track_list[0].name
|
||||
)
|
||||
except errors.NothingFoundError:
|
||||
return self.translator.translate("Nothing is found for your query")
|
||||
except errors.ServiceError:
|
||||
return self.translator.translate(
|
||||
"The selected service is currently unavailable"
|
||||
)
|
||||
|
||||
class ChangeLogCommand(Command):
|
||||
@property
|
||||
def help(self) -> str:
|
||||
|
@ -181,6 +181,25 @@ class Player:
|
||||
raise ValueError()
|
||||
self._player.speed = arg
|
||||
|
||||
def add_to_queue(self, tracks: List[Track]) -> None:
|
||||
"""Adds tracks to the queue."""
|
||||
self.track_list.extend(tracks)
|
||||
logging.debug(f"Added {len(tracks)} track(s) to the queue.")
|
||||
|
||||
# If nothing is playing, start playing the next track
|
||||
if self.state == State.Stopped and len(self.track_list) > 0:
|
||||
self.play_next()
|
||||
|
||||
def play_next(self) -> None:
|
||||
"""Play the next track in the queue."""
|
||||
if len(self.track_list) > 0:
|
||||
self.track_index = 0 # Start with the first track
|
||||
self.track = self.track_list[self.track_index]
|
||||
self._play(self.track.url)
|
||||
self.state = State.Playing
|
||||
else:
|
||||
self.state = State.Stopped
|
||||
|
||||
def seek_back(self, step: Optional[float] = None) -> None:
|
||||
step = step if step else self.config.seek_step
|
||||
if step <= 0:
|
||||
|
@ -1,5 +1,6 @@
|
||||
This change log is written to find out the changes that have been made by Pandora, and the source code still refers to TTMediaBot.
|
||||
5/5/2025
|
||||
Added new command: e, to add either link or new song to the extended track. if nothing is playing, it plays the track directly.
|
||||
Fix user rights to upload file, hopefully...
|
||||
|
||||
5/4/2025
|
||||
|
Loading…
x
Reference in New Issue
Block a user