Example #1
0
    async def skip(self, ctx, time="0"):
        skipped = 0
        requestTime = self.songStartTime - datetime.now()
        voice = get(bot.voice_clients, guild=ctx.guild)

        try:
            if int(time) == 0:
                await ctx.channel.purge(limit=1)
                if voice.is_playing():
                    await ctx.send("Track skipped", delete_after=self.skipDeleteAfter)
                    self.skipToTime = 0
                    voice.stop()
                else:
                    await ctx.send("Nothing is playing", delete_after=self.skipDeleteAfter)
            else:
                skipped += int(time) + abs(int(requestTime.total_seconds()))
                self.skipToTime += skipped
                await self.skipto(ctx, self.skipToTime)
        except:
            skipped += TimeManager.timeParse(time) + abs(int(requestTime.total_seconds()))
            self.skipToTime += skipped
            await self.skipto(ctx, self.skipToTime)
Example #2
0
    async def skipto(self, ctx, time):
        await ctx.channel.purge(limit=1)
        channel = ctx.message.author.voice.channel
        voice = get(bot.voice_clients, guild=ctx.guild)

        if voice and voice.is_connected():
            voice = await voice.move_to(channel)
        else:
            voice = await channel.connect()

        if voice.is_playing():
            self.songQueue[ctx.guild.id].insert(1, self.songQueue[ctx.guild.id][0])
            self.musicTitles[ctx.guild.id].insert(1, self.musicTitles[ctx.guild.id][0])
            self.skipToTime = TimeManager.timeParse(time)
            voice.stop()
        else:
            await ctx.send("Nothing to skip", delete_after=self.skipDeleteAfter)

        await ctx.send(
            f"**Skipped to:** {TimeManager.parseDuration(self.skipToTime)} **Requested by:** {ctx.message.author}",
            delete_after=self.skipDeleteAfter)
        await self.edit_message(ctx)
Example #3
0
    def playNext(self, ctx):
        voice = get(bot.voice_clients, guild=ctx.guild)
        if voice is None:
            del self.songQueue[ctx.guild.id]
            del self.musicTitles[ctx.guild.id]
            del self.message[ctx.guild.id]
        elif voice.is_connected():
            endTime = self.songStartTime - datetime.now()
            end = self.skipToTime
            self.ffmpegOptions["before_options"] = f"-ss {self.skipToTime} -reconnect 1 " \
                                                   f"-reconnect_at_eof 1 -reconnect_streamed 1 " \
                                                   f"-reconnect_delay_max 5"
            voice.is_paused()

            if self.loop is True:
                self.songQueue[ctx.guild.id].append(self.songQueue[ctx.guild.id][0])
                self.musicTitles[ctx.guild.id].append(self.musicTitles[ctx.guild.id][0])

            end += abs(int(endTime.total_seconds()))

            if len(self.songQueue[ctx.guild.id]) > 1 and len(self.musicTitles[ctx.guild.id]) > 1:
                del self.songQueue[ctx.guild.id][0], self.musicTitles[ctx.guild.id][0]

                if TimeManager.timeParse(self.songQueue[ctx.guild.id][0]["duration"]) <= end:
                    self.skipToTime = 0
                    voice.stop()

                asyncio.run_coroutine_threadsafe(self.edit_message(ctx), bot.loop)
                self.songStartTime = datetime.now()
                self._playMusic(ctx, self.ffmpegPathUrl, self.musicTitles[ctx.guild.id][0])
                voice.is_playing()
            else:
                del self.songQueue[ctx.guild.id]
                del self.musicTitles[ctx.guild.id]
                del self.message[ctx.guild.id]
                asyncio.run_coroutine_threadsafe(voice.disconnect(), bot.loop)
                self.loop = False