From 5c76361425d1d5a32ea43f53a90fdd5d04b001cd Mon Sep 17 00:00:00 2001 From: Marrub Date: Wed, 9 Aug 2017 00:03:18 -0400 Subject: [PATCH] Add AudioServer capabilities --- source/mod_base.rb | 1 + source/server.rb | 23 +++++++++++++++++++++++ source/sv_discord.rb | 22 ++++++++++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/source/mod_base.rb b/source/mod_base.rb index 87278b2..c89b8dd 100644 --- a/source/mod_base.rb +++ b/source/mod_base.rb @@ -29,6 +29,7 @@ module Vrobot4::Server end def c_die m, argv + m.serv.voice_quit m if m.serv.flags.include? "A" m.reply \ ["STATUS: DYING", "ded", diff --git a/source/server.rb b/source/server.rb index 0b9305a..40e41aa 100644 --- a/source/server.rb +++ b/source/server.rb @@ -34,6 +34,7 @@ module Vrobot4::Server attr_reader :mprm def initialize info + @info = info @modules = [Mod_Base.new] load_permissions info["permissions"] if info.key? "permissions" end @@ -92,6 +93,28 @@ module Vrobot4::Server end end + class AudioServer < Server + def voice_join m + raise NotImplementedError, "AudioServer::#voice_join not implemented" + end + + def voice_quit m + raise NotImplementedError, "AudioServer::#voice_quit not implemented" + end + + def play m, io + raise NotImplementedError, "AudioServer::#play not implemented" + end + + def is_playing? m + raise NotImplementedError, "AudioServer::#is_playing? not implemented" + end + + def flags + "A" + end + end + @@server_types = {} def self.add_server_type t, name diff --git a/source/sv_discord.rb b/source/sv_discord.rb index 6f62201..c071885 100644 --- a/source/sv_discord.rb +++ b/source/sv_discord.rb @@ -57,6 +57,28 @@ class Sv_Discord < Vrobot4::Server::AudioServer end end + def voice_join m + chan = m.user.real.voice_channel + raise RuntimeError, "You're not in a voice channel" unless chan + @bot.voice_connect chan + end + + def voice_quit m + @bot.voice_destroy m.chan.real.server.id + end + + def play m, io + v = @bot.voice(m.chan.real) + raise ArgumentError, "Invalid i/o stream" unless io + raise RuntimeError, "I'm not in a voice channel" unless v + v.play_stream io + end + + def is_playing? m + v = @bot.voice(m.chan.real) + v != nil and v.playing? + end + def connect @bot.run end