Re-implement voice sending.
This is a complete redesign of the old voice code. A list of major changes is as follows: * The voice websocket will now automatically reconnect with exponential back-off just like the regular Client does. * Removal of the stream player concept. * Audio now gracefully pauses and resumes when a disconnect is found. * Introduce a discord.AudioSource concept to abstract streams * Flatten previous stream player functionality with the VoiceClient, e.g. player.stop() is now voice_client.stop() * With the above re-coupling this means you no longer have to store players anywhere. * The after function now requires a single parameter, the error, if any existed. This will typically be None. A lot of this design is experimental.
This commit is contained in:
		@@ -290,7 +290,7 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable):
 | 
			
		||||
                    count += 1
 | 
			
		||||
                    ret.append(msg)
 | 
			
		||||
 | 
			
		||||
class VoiceChannel(discord.abc.GuildChannel, Hashable):
 | 
			
		||||
class VoiceChannel(discord.abc.Callable, discord.abc.GuildChannel, Hashable):
 | 
			
		||||
    """Represents a Discord guild voice channel.
 | 
			
		||||
 | 
			
		||||
    Supported Operations:
 | 
			
		||||
@@ -335,6 +335,12 @@ class VoiceChannel(discord.abc.GuildChannel, Hashable):
 | 
			
		||||
    def __repr__(self):
 | 
			
		||||
        return '<VoiceChannel id={0.id} name={0.name!r} position={0.position}>'.format(self)
 | 
			
		||||
 | 
			
		||||
    def _get_voice_client_key(self):
 | 
			
		||||
        return self.guild.id, 'guild_id'
 | 
			
		||||
 | 
			
		||||
    def _get_voice_state_pair(self):
 | 
			
		||||
        return self.guild.id, self.id
 | 
			
		||||
 | 
			
		||||
    def _update(self, guild, data):
 | 
			
		||||
        self.guild = guild
 | 
			
		||||
        self.name = data['name']
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user