code: async def jsk_vc_join(self, ctx: commands.Context, *,
                            destination: typing.Union[discord.VoiceChannel, discord.Member] = None):
          
  
          destination = destination or ctx.author
  
          if isinstance(destination, discord.Member):
              if destination.voice and destination.voice.channel:
                  destination = destination.voice.channel
              else:
                  return await ctx.send("Member has no voice channel.")
  
          voice = ctx.guild.voice_client
  
          if voice:
              await voice.move_to(destination)
          else:
              await destination.connect(reconnect=True)
  
          await ctx.send(f"Connected to {destination.name}.")
docs: Joins a voice channel, or moves to it if already connected.
  
          Passing a voice channel uses that voice channel.
          Passing a member will use that member's current voice channel.
          Passing nothing will use the author's voice channel.