|
|
|
def playMusic(bot, bang)
|
|
|
|
bot.message(start_with: "#{bang}Play ") do |event|
|
|
|
|
message = event.content
|
|
|
|
author = event.author
|
|
|
|
voice_channel = author.voice_channel.id
|
|
|
|
server = event.server
|
|
|
|
arguments = message.sub("#{bang}Play ", '').split.first
|
|
|
|
#event.voice.play_file('./example.mp3')
|
|
|
|
if arguments.include? "&list"
|
|
|
|
event.respond "Do not play playlists. They are unsupported."
|
|
|
|
elsif ENV["#{voice_channel}"] == 'playing'
|
|
|
|
event.respond "Music currently playing. Adding to queue"
|
|
|
|
if $queue.key?(voice_channel) == false
|
|
|
|
$queue[voice_channel] = Array.new
|
|
|
|
$queue[voice_channel].push arguments
|
|
|
|
puts $queue[voice_channel]
|
|
|
|
else
|
|
|
|
$queue[voice_channel].push arguments
|
|
|
|
puts $queue[voice_channel]
|
|
|
|
end
|
|
|
|
elsif arguments.include? "youtu"
|
|
|
|
actuallyPlayMusic(bot, event, arguments, voice_channel, server)
|
|
|
|
else
|
|
|
|
actuallyPlayMusic(bot, event, arguments, voice_channel, server)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
bot.message(with_text: "#{bang}Play") do |event|
|
|
|
|
event.respond "Please provide youtube link!"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def actuallyPlayMusic(bot, event, arguments, voice_channel, server)
|
|
|
|
event.respond "Playing song! This may take some time."
|
|
|
|
bot.voice_connect(voice_channel)
|
|
|
|
ENV["#{voice_channel}"] = 'playing'
|
|
|
|
tempFile = Dir::Tmpname.create(['youtubedlruby-', '.mp3']) {}
|
|
|
|
cmd = "yt-dlp --extract-audio --audio-format mp3 --output " + tempFile + " " + arguments
|
|
|
|
if arguments.include? "youtu"
|
|
|
|
system(cmd)
|
|
|
|
end
|
|
|
|
event.voice.play_file(tempFile)
|
|
|
|
File.delete(tempFile) if File.exist?(tempFile)
|
|
|
|
if $queue.key?(voice_channel) == true
|
|
|
|
if $queue[voice_channel][0] != nil
|
|
|
|
event.respond "Queue exists. Playing next song."
|
|
|
|
actuallyPlayMusic(bot, event, $queue[voice_channel].shift, voice_channel, server)
|
|
|
|
else
|
|
|
|
bot.voice_destroy(server)
|
|
|
|
event.respond "Done playing!"
|
|
|
|
ENV["#{voice_channel}"] = 'open'
|
|
|
|
end
|
|
|
|
else
|
|
|
|
bot.voice_destroy(server)
|
|
|
|
event.respond "Done playing!"
|
|
|
|
ENV["#{voice_channel}"] = 'open'
|
|
|
|
end
|
|
|
|
end
|