mirror of
https://github.com/RafaelSolVargas/Vulkan.git
synced 2025-10-29 16:57:23 +00:00
Adding Play and Prev Controller
This commit is contained in:
parent
8ac80c216f
commit
362ec02fe4
@ -7,7 +7,9 @@ from Config.Helper import Helper
|
||||
from Controllers.ClearController import ClearController
|
||||
from Controllers.MoveController import MoveController
|
||||
from Controllers.NowPlayingController import NowPlayingController
|
||||
from Controllers.PlayController import PlayController
|
||||
from Controllers.PlayerController import PlayersController
|
||||
from Controllers.PrevController import PrevController
|
||||
from Controllers.RemoveController import RemoveController
|
||||
from Controllers.ResetController import ResetController
|
||||
from Controllers.ShuffleController import ShuffleController
|
||||
@ -53,21 +55,14 @@ class Music(commands.Cog):
|
||||
|
||||
@commands.command(name="play", help=helper.HELP_PLAY, description=helper.HELP_PLAY_LONG, aliases=['p', 'tocar'])
|
||||
async def play(self, ctx: Context, *args) -> None:
|
||||
track = " ".join(args)
|
||||
requester = ctx.author.name
|
||||
controller = PlayController(ctx, self.__bot)
|
||||
|
||||
player = self.__get_player(ctx)
|
||||
if player is None:
|
||||
await self.__send_embed(ctx, self.__config.ERROR_TITLE, self.__config.NO_GUILD, 'red')
|
||||
return
|
||||
|
||||
if is_connected(ctx) is None:
|
||||
success = await player.connect(ctx)
|
||||
if success == False:
|
||||
await self.__send_embed(ctx, self.__config.IMPOSSIBLE_MOVE, self.__config.NO_CHANNEL, 'red')
|
||||
return
|
||||
|
||||
await player.play(ctx, track, requester)
|
||||
response = await controller.run(args)
|
||||
if response is not None:
|
||||
view1 = EmbedView(response)
|
||||
view2 = EmoteView(response)
|
||||
await view1.run()
|
||||
await view2.run()
|
||||
|
||||
@commands.command(name="queue", help=helper.HELP_QUEUE, description=helper.HELP_QUEUE_LONG, aliases=['q', 'fila'])
|
||||
async def queue(self, ctx: Context) -> None:
|
||||
@ -123,17 +118,14 @@ class Music(commands.Cog):
|
||||
|
||||
@commands.command(name='prev', help=helper.HELP_PREV, description=helper.HELP_PREV_LONG, aliases=['anterior'])
|
||||
async def prev(self, ctx: Context) -> None:
|
||||
player = self.__get_player(ctx)
|
||||
if player is None:
|
||||
return
|
||||
controller = PrevController(ctx, self.__bot)
|
||||
|
||||
if is_connected(ctx) is None:
|
||||
success = await player.connect(ctx)
|
||||
if success == False:
|
||||
await self.__send_embed(ctx, self.__config.IMPOSSIBLE_MOVE, self.__config.NO_CHANNEL, 'red')
|
||||
return
|
||||
|
||||
await player.play_prev(ctx)
|
||||
response = await controller.run()
|
||||
if response is not None:
|
||||
view1 = EmbedView(response)
|
||||
view2 = EmoteView(response)
|
||||
await view1.run()
|
||||
await view2.run()
|
||||
|
||||
@commands.command(name='history', help=helper.HELP_HISTORY, description=helper.HELP_HISTORY_LONG, aliases=['historico'])
|
||||
async def history(self, ctx: Context) -> None:
|
||||
|
||||
53
Controllers/PlayController.py
Normal file
53
Controllers/PlayController.py
Normal file
@ -0,0 +1,53 @@
|
||||
from discord.ext.commands import Context
|
||||
from discord import Client
|
||||
from Controllers.AbstractController import AbstractController
|
||||
from Exceptions.Exceptions import ImpossibleMove, UnknownError
|
||||
from Controllers.ControllerResponse import ControllerResponse
|
||||
|
||||
|
||||
class PlayController(AbstractController):
|
||||
def __init__(self, ctx: Context, bot: Client) -> None:
|
||||
super().__init__(ctx, bot)
|
||||
|
||||
async def run(self, args: str) -> ControllerResponse:
|
||||
track = " ".join(args)
|
||||
requester = self.ctx.author.name
|
||||
|
||||
if not self.__user_connected():
|
||||
error = ImpossibleMove()
|
||||
embed = self.embeds.NO_CHANNEL()
|
||||
return ControllerResponse(self.ctx, embed, error)
|
||||
|
||||
if not self.__is_connected():
|
||||
success = await self.__connect()
|
||||
if not success:
|
||||
error = UnknownError()
|
||||
embed = self.embeds.UNKNOWN_ERROR()
|
||||
return ControllerResponse(self.ctx, embed, error)
|
||||
|
||||
await self.player.play(self.ctx, track, requester)
|
||||
|
||||
def __user_connected(self) -> bool:
|
||||
if self.ctx.author.voice:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def __is_connected(self) -> bool:
|
||||
try:
|
||||
voice_channel = self.guild.voice_client.channel
|
||||
|
||||
if not self.guild.voice_client.is_connected():
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
|
||||
async def __connect(self) -> bool:
|
||||
# if self.guild.voice_client is None:
|
||||
try:
|
||||
await self.ctx.author.voice.channel.connect(reconnect=True, timeout=None)
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
55
Controllers/PrevController.py
Normal file
55
Controllers/PrevController.py
Normal file
@ -0,0 +1,55 @@
|
||||
from discord.ext.commands import Context
|
||||
from discord import Client
|
||||
from Controllers.AbstractController import AbstractController
|
||||
from Exceptions.Exceptions import ImpossibleMove, UnknownError
|
||||
from Controllers.ControllerResponse import ControllerResponse
|
||||
|
||||
|
||||
class PrevController(AbstractController):
|
||||
def __init__(self, ctx: Context, bot: Client) -> None:
|
||||
super().__init__(ctx, bot)
|
||||
|
||||
async def run(self) -> ControllerResponse:
|
||||
if len(self.player.playlist.history()) == 0:
|
||||
error = ImpossibleMove()
|
||||
embed = self.embeds.NOT_PREVIOUS_SONG()
|
||||
return ControllerResponse(self.ctx, embed, error)
|
||||
|
||||
if not self.__user_connected():
|
||||
error = ImpossibleMove()
|
||||
embed = self.embeds.NO_CHANNEL()
|
||||
return ControllerResponse(self.ctx, embed, error)
|
||||
|
||||
if not self.__is_connected():
|
||||
success = await self.__connect()
|
||||
if not success:
|
||||
error = UnknownError()
|
||||
embed = self.embeds.UNKNOWN_ERROR()
|
||||
return ControllerResponse(self.ctx, embed, error)
|
||||
|
||||
await self.player.play_prev(self.ctx)
|
||||
|
||||
def __user_connected(self) -> bool:
|
||||
if self.ctx.author.voice:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def __is_connected(self) -> bool:
|
||||
try:
|
||||
voice_channel = self.guild.voice_client.channel
|
||||
|
||||
if not self.guild.voice_client.is_connected():
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
|
||||
async def __connect(self) -> bool:
|
||||
# if self.guild.voice_client is None:
|
||||
try:
|
||||
await self.ctx.author.voice.channel.connect(reconnect=True, timeout=None)
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
@ -36,14 +36,6 @@ class Player(commands.Cog):
|
||||
def playlist(self) -> Playlist:
|
||||
return self.__playlist
|
||||
|
||||
async def connect(self, ctx: Context) -> bool:
|
||||
if not ctx.author.voice:
|
||||
return False
|
||||
|
||||
if self.__guild.voice_client == None:
|
||||
await ctx.author.voice.channel.connect(reconnect=True, timeout=None)
|
||||
return True
|
||||
|
||||
def __play_next(self, error, ctx: Context) -> None:
|
||||
if self.__force_stop: # If it's forced to stop player
|
||||
self.__force_stop = False
|
||||
|
||||
@ -201,6 +201,14 @@ class Embeds:
|
||||
)
|
||||
return embed
|
||||
|
||||
def NO_CHANNEL(self) -> Embed:
|
||||
embed = Embed(
|
||||
title=self.__config.IMPOSSIBLE_MOVE,
|
||||
description=self.__config.NO_CHANNEL,
|
||||
colour=self.__colors.BLACK
|
||||
)
|
||||
return embed
|
||||
|
||||
def ERROR_DUE_LOOP_ONE_ON(self) -> Embed:
|
||||
embed = Embed(
|
||||
title=self.__config.BAD_COMMAND_TITLE,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user