@x4zx

Как сделать две команды в одной?

Здравствуйте есть две команды `connect` и `play` код ниже, и мне нужно сделать так чтобы при команде `play` бот присоединялся к каналу в котором находится автор и там уже играл и соответственно если автор команды не в канале то выдать ошибку

@commands.command()
    async def connect(self, ctx, *, channel: discord.VoiceChannel=None):
        """Connect to voice.
        Parameters
        ------------
        channel: discord.VoiceChannel [Optional]
            The channel to connect to. If a channel is not specified, an attempt to join the voice channel you are in
            will be made.
        This command also handles moving the bot to different channels.
        """
        if not channel:
            try:
                channel = ctx.author.voice.channel
            except AttributeError:
                embed = discord.Embed(title="", description="No channel to join. Please call `,join` from a voice channel.", color=discord.Color.green())
                await ctx.send(embed=embed)
                raise InvalidVoiceChannel('No channel to join. Please either specify a valid channel or join one.')

        vc = ctx.voice_client

        if vc:
            if vc.channel.id == channel.id:
                return
            try:
                await vc.move_to(channel)
            except asyncio.TimeoutError:
                raise VoiceConnectionError(f'Moving to channel: <{channel}> timed out.')
        else:
            try:
                await channel.connect()
            except asyncio.TimeoutError:
                raise VoiceConnectionError(f'Connecting to channel: <{channel}> timed out.')
        if (random.randint(0, 1) == 0):
            await ctx.message.add_reaction('')
        await ctx.send(f'**Joined `{channel}`**')

    @commands.command()
    async def play(self, ctx, *, search: str, channel: discord.VoiceChannel = None):
        
        """Request a song and add it to the queue.
        This command attempts to join a valid voice channel if the bot is not already in one.
        Uses YTDL to automatically search and retrieve a song.
        Parameters
        ------------
        search: str [Required]
            The song to search and retrieve using YTDL. This could be a simple search, an ID or URL.
        """

        if not channel:
            channel = ctx.author.voice.channel

        await ctx.trigger_typing()

        vc = ctx.voice_client

        if not vc:
            await ctx.invoke(self.connect_)

        player = self.get_player(ctx)

        # If download is False, source will be a dict which will be used later to regather the stream.
        # If download is True, source will be a discord.FFmpegPCMAudio with a VolumeTransformer.
        source = await YTDLSource.create_source(ctx, search, loop=self.bot.loop, download=False)

        await player.queue.put(source)
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 1
UkaUkaa
@UkaUkaa
По специальности программист, по жизни леньтяй
Боту надо запоминать кто вызывал его, и уже через событие on_voice_state_update проверять, или member (тот кто вызывал бота) не ушел с канала с которого вызывал
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы