@@ -10,6 +10,9 @@ namespace Discord | |||||
Task<IAudioClient> ConnectAsync(Action<IAudioClient> configAction = null); | Task<IAudioClient> ConnectAsync(Action<IAudioClient> configAction = null); | ||||
/// <summary> Connects to this audio channel but can specify if client is handled externally. </summary> | /// <summary> Connects to this audio channel but can specify if client is handled externally. </summary> | ||||
Task<IAudioClient> ConnectAsync(bool external, Action<IAudioClient> configAction = null); | |||||
Task<IAudioClient> ConnectAsync(Action<IAudioClient> configAction = null, bool external = false); | |||||
/// <summary> Disconnects from this audio channel if applicable. </summary> | |||||
Task DisconnectAsync(); | |||||
} | } | ||||
} | } |
@@ -144,7 +144,8 @@ namespace Discord.Rest | |||||
//IAudioChannel | //IAudioChannel | ||||
Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction) { throw new NotSupportedException(); } | Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction) { throw new NotSupportedException(); } | ||||
Task<IAudioClient> IAudioChannel.ConnectAsync(bool external, Action<IAudioClient> configAction) { throw new NotSupportedException(); } | |||||
Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction, bool external) { throw new NotSupportedException(); } | |||||
Task IAudioChannel.DisconnectAsync() { throw new NotSupportedException(); } | |||||
//IChannel | //IChannel | ||||
Task<IUser> IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) | Task<IUser> IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) | ||||
@@ -42,7 +42,8 @@ namespace Discord.Rest | |||||
//IAudioChannel | //IAudioChannel | ||||
Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction) { throw new NotSupportedException(); } | Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction) { throw new NotSupportedException(); } | ||||
Task<IAudioClient> IAudioChannel.ConnectAsync(bool external, Action<IAudioClient> configAction) { throw new NotSupportedException(); } | |||||
Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction, bool external) { throw new NotSupportedException(); } | |||||
Task IAudioChannel.DisconnectAsync() { throw new NotSupportedException(); } | |||||
//IGuildChannel | //IGuildChannel | ||||
Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) | Task<IGuildUser> IGuildChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) | ||||
@@ -207,7 +207,8 @@ namespace Discord.WebSocket | |||||
//IAudioChannel | //IAudioChannel | ||||
Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction) { throw new NotSupportedException(); } | Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction) { throw new NotSupportedException(); } | ||||
Task<IAudioClient> IAudioChannel.ConnectAsync(bool external, Action<IAudioClient> configAction) { throw new NotSupportedException(); } | |||||
Task<IAudioClient> IAudioChannel.ConnectAsync(Action<IAudioClient> configAction, bool external) { throw new NotSupportedException(); } | |||||
Task IAudioChannel.DisconnectAsync() { throw new NotSupportedException(); } | |||||
//IChannel | //IChannel | ||||
Task<IUser> IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) | Task<IUser> IChannel.GetUserAsync(ulong id, CacheMode mode, RequestOptions options) | ||||
@@ -45,11 +45,14 @@ namespace Discord.WebSocket | |||||
return await Guild.ConnectAudioAsync(Id, false, false, configAction, false).ConfigureAwait(false); | return await Guild.ConnectAudioAsync(Id, false, false, configAction, false).ConfigureAwait(false); | ||||
} | } | ||||
public async Task<IAudioClient> ConnectAsync(bool external, Action<IAudioClient> configAction = null) | |||||
public async Task<IAudioClient> ConnectAsync(Action<IAudioClient> configAction = null, bool external = false) | |||||
{ | { | ||||
return await Guild.ConnectAudioAsync(Id, false, false, configAction, external).ConfigureAwait(false); | return await Guild.ConnectAudioAsync(Id, false, false, configAction, external).ConfigureAwait(false); | ||||
} | } | ||||
public async Task DisconnectAsync() | |||||
=> await Guild.DisconnectAudioAsync(); | |||||
public override SocketGuildUser GetUser(ulong id) | public override SocketGuildUser GetUser(ulong id) | ||||
{ | { | ||||
var user = Guild.GetUser(id); | var user = Guild.GetUser(id); | ||||
@@ -606,8 +606,11 @@ namespace Discord.WebSocket | |||||
await _audioLock.WaitAsync().ConfigureAwait(false); | await _audioLock.WaitAsync().ConfigureAwait(false); | ||||
try | try | ||||
{ | { | ||||
await RepopulateAudioStreamsAsync().ConfigureAwait(false); | |||||
await _audioClient.StartAsync(url, Discord.CurrentUser.Id, voiceState.VoiceSessionId, token).ConfigureAwait(false); | |||||
if (_audioClient != null) | |||||
{ | |||||
await RepopulateAudioStreamsAsync().ConfigureAwait(false); | |||||
await _audioClient.StartAsync(url, Discord.CurrentUser.Id, voiceState.VoiceSessionId, token).ConfigureAwait(false); | |||||
} | |||||
} | } | ||||
catch (OperationCanceledException) | catch (OperationCanceledException) | ||||
{ | { | ||||