docs: async def setvolume(self, value):
          """The volume command
  
          Args:
              value (str): The value to set the volume to
          """
  
          self.logger.debug("volume command")
  
          if self.state != 'ready':
              return
  
          logger.debug("Volume command received")
  
          if value == '+':
              if self.volume < 100:
                  self.statuslog.debug("Volume up")
                  self.volume = (10 * (self.volume // 10)) + 10
                  self.volumelog.info(str(self.volume))
                  try:
                      self.streamer.volume = self.volume / 100
                  except AttributeError:
                      pass
              else:
                  self.statuslog.warning("Already at maximum volume")
  
          elif value == '-':
              if self.volume > 0:
                  self.statuslog.debug("Volume down")
                  self.volume = (10 * ((self.volume + 9) // 10)) - 10
                  self.volumelog.info(str(self.volume))
                  try:
                      self.streamer.volume = self.volume / 100
                  except AttributeError:
                      pass
              else:
                  self.statuslog.warning("Already at minimum volume")
  
          else:
              try:
                  value = int(value)
              except ValueError:
                  self.statuslog.error("Volume argument must be +, -, or a %")
              else:
                  if 0 <= value <= 200:
                      self.statuslog.debug("Setting volume")
                      self.volume = value
                      self.volumelog.info(str(self.volume))
                      try:
                          self.streamer.volume = self.volume / 100
                      except AttributeError:
                          pass
                  else:
                      self.statuslog.error("Volume must be between 0 and 200")
  
          self.write_volume()