yes
This commit is contained in:
parent
9791ebbbcc
commit
48fd364309
@ -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))
|
||||
@ -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 <link> -channel <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))
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user