// Create an IAudioClient, and store it for later use
private IAudioClient _audio;

// Create a Join command, that will join the parameter or the user's current voice channel
[Command("join")]
public async Task JoinChannel(IMessage msg,
    IVoiceChannel channel = null)
{
    // Get the audio channel
    channel = channel ?? (msg.Author as IGuildUser)?.VoiceChannel;
    if (channel == null) { await msg.Channel.SendMessageAsync("User must be in a voice channel, or a voice channel must be passed as an argument."); return; }

    // Get the IAudioClient by calling the JoinAsync method
    _audio = await channel.JoinAsync();
}