diff --git a/py/cogs/voice.py b/py/cogs/voice.py index 2cf9ec5..3530223 100644 --- a/py/cogs/voice.py +++ b/py/cogs/voice.py @@ -16,8 +16,9 @@ class Voice(commands.Cog): password=self.bot.config["wavelink"]["password"],) @commands.Cog.listener() - async def on_track_end(self, player, track, reason): - if not reason == wavelink.TrackEndReason.STOPPED or self.queue.is_empty: + async def on_wavelink_track_end(self, player, track, reason): + print("track ended") + if not self.queue.is_empty: await player.play(self.queue.get()) @bridge.bridge_command(alises=["j"]) @@ -42,32 +43,15 @@ class Voice(commands.Cog): @bridge.bridge_command(aliases=["p"]) async def play(self, ctx, *, link: str=""): await ctx.defer() - - #check for overrides - # args = link.split(" ") - # print(args[6]) - # for arg in range(len(args)-1): - # print(arg) - # print(args[arg]) - # if args[arg] == "-channel" or args[arg] == "-c": - # channel = self.bot.get_channel(discord.utils.get(ctx.guild.channels, name=args[arg+1]).id) - # providedchannel = True - # if args[arg] == "-now" or args[arg] == "-n": - # queueoverride = True - # if args[arg] == "-earrape" or args[arg] == "-e": - # earape = True providedchannel = False queueoverride = False earape = False channel = "" args = link.split(" -") - print(args) if len(args) > 1: for arg in range(len(args)): if args[arg].startswith("channel") or args[arg].startswith("c"): - print(args[arg].split(" ")[1]) channel = self.bot.get_channel(discord.utils.get(ctx.guild.channels, name=args[arg].split(" ")[1]).id) - print(channel) providedchannel = True if args[arg].startswith("now") or args[arg].startswith("n"): queueoverride = True @@ -104,8 +88,11 @@ class Voice(commands.Cog): ctx.voice_client.resume() if (self.queue.is_empty and not ctx.voice_client.is_playing()) or queueoverride: - if earape: - ctx.voice_client.filters.set_filter(wavelink.Equalizer(wavelink.Filter.highpass(40, 1), wavelink.Filter.peaking(1000, 10))) + #not implemented + #if earape: + #print("earrape") + #await ctx.voice_client.set_filter(wavelink.Filter(distortion=wavelink.Distortion(sin_offset=2,sin_scale=2,tan_offset=3)),seek=True) + await ctx.voice_client.play(track) await ctx.respond(f"Now playing: {track.title} by {track.author}\n {track.uri}") else: @@ -131,5 +118,4 @@ class Voice(commands.Cog): await ctx.respond("Skipped") def setup(bot): - bot.add_cog(Voice(bot)) - + bot.add_cog(Voice(bot)) \ No newline at end of file diff --git a/py/cogs/voice_old.py b/py/cogs/voice_old.py deleted file mode 100644 index 9a30172..0000000 --- a/py/cogs/voice_old.py +++ /dev/null @@ -1,143 +0,0 @@ -import discord -from discord.ext import bridge, commands -from yt_dlp import YoutubeDL -from bin.storage import Config - -class Voice(commands.Cog): - def __init__(self, bot): - self.bot = bot - - def qhandler(error=None,self=None, ctx=None, st=None): - print("test") - queue = (st.read("voice", "queue")).split("/./") - try: - queue.pop(0) - except: - pass - st.write("voice", "queue", "/./".join(queue)) - ffmpeg_options = { - 'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', - 'options': '-vn' - } - if len(queue) > 0: - ctx.voice_client.play(discord.FFmpegPCMAudio(queue[0]), **ffmpeg_options, after=self.qhandler(self, ctx)) - ctx.respond(f"Now playing: {queue[0]}") - - @bridge.bridge_command(alises=["j"]) - async def join(self, ctx): - await ctx.defer() - if ctx.author.voice is None: - await ctx.respond("You are not in a voice channel") - else: - channel = ctx.author.voice.channel - await channel.connect() - - @bridge.bridge_command(alises=["l"]) - async def leave(self, ctx): - await ctx.defer() - st = Config(ctx.guild.id, self.bot.db) - st.write("voice", "queue", "") - if ctx.voice_client is None: - await ctx.respond("I am not in a voice channel") - else: - await ctx.voice_client.disconnect() - - @bridge.bridge_command(aliases=["p"]) - async def play(self, ctx, *, video: str=""): - await ctx.defer() - args = video.split(" ") - providedchannel = False - channel = "" - for arg in range(len(args)-1): - if args[arg] == "-channel" or args[arg] == "-c": - channel = self.bot.get_channel(discord.utils.get(ctx.guild.channels, name=args.pop(arg+1)).id) - print(type(channel)) - print(channel) - args.pop(arg) - providedchannel = True - break - else: - channel = ctx.author.voice.channel - - link = " ".join(args) - - if providedchannel and ctx.author.guild_permissions.administrator == False: - await ctx.respond("You do not have permission to specify a channel") - return - - if ctx.author.voice is None and channel == "": - await ctx.respond("You are not in a voice channel, to specify a channel use `play -channel `") - return - - if ctx.voice_client is None: - await channel.connect() - - if link == "" and ctx.voice_client.is_paused(): - ctx.voice_client.resume() - return - - if ctx.voice_client.is_paused(): - ctx.voice_client.resume() - - ffmpeg_options = { - 'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', - 'options': '-vn' - } - ytdl_format_options = { - 'format': 'bestaudio/best', - 'outtmpl': '%(extractor)s-%(id)s-%(title)s.%(ext)s', - 'restrictfilenames': True, - 'noplaylist': True, - 'nocheckcertificate': True, - 'ignoreerrors': False, - 'logtostderr': False, - 'quiet': True, - 'no_warnings': True, - 'default_search': 'auto', - 'source_address': '0.0.0.0', - } - - with YoutubeDL(ytdl_format_options) as ydl: - st = Config(ctx.guild.id, self.bot.db) - if link.startswith("https://"): - info_dict = ydl.extract_info(link, download=False) - video_url = info_dict.get("url", None) - video_id = info_dict.get("id", None) - video_title = info_dict.get('title', None) - else: - info_dict = ydl.extract_info(f"ytsearch:{link}", download=False)["entries"][0] - video_url = info_dict.get("url", None) - video_id = info_dict.get("id", None) - video_title = info_dict.get('title', None) - if not ctx.voice_client.is_playing(): - ctx.voice_client.play(discord.FFmpegPCMAudio(video_url, **ffmpeg_options), after=self.qhandler(self=self, ctx=ctx, st=st)) - await ctx.respond(f"Now playing: {video_title}") - else: - print("Added to queue") - queue = st.read("voice", "queue").split("/./") - queue.append(info_dict.get("url",None)) - st.write("voice", "queue", "/./".join(queue)) - await ctx.respond(f"Added to queue: {video_title}") - - @bridge.bridge_command(aliases=["stop"]) - async def pause(self, ctx): - await ctx.defer() - if ctx.voice_client is None: - await ctx.respond("I am not in a voice channel") - else: - ctx.voice_client.pause() - await ctx.respond("Paused") - - @bridge.bridge_command(alias=["next", "n","s"]) - async def skip(self, ctx): - await ctx.defer() - if ctx.voice_client is None: - await ctx.respond("I am not in a voice channel") - else: - ctx.voice_client.stop() - await ctx.respond("Skipped") - -def setup(bot): - bot.add_cog(Voice(bot)) - - \ No newline at end of file