docs: def cmd(send, msg, args):
      """Gets the weather.
  
      Syntax: {command} <[--date (date)] [--hour (hour)] (location)|--set (default)>
      Powered by Weather Underground, www.wunderground.com
  
      """
      apikey = args['config']['api']['weatherapikey']
      parser = arguments.ArgParser(args['config'])
      parser.add_argument('--date', action=arguments.DateParser)
      parser.add_argument('--hour', type=int)
      parser.add_argument('--set', action='store_true')
      parser.add_argument('string', nargs='*')
      try:
          cmdargs = parser.parse_args(msg)
      except arguments.ArgumentException as e:
          send(str(e))
          return
      if isinstance(cmdargs.string, list):
          cmdargs.string = " ".join(cmdargs.string)
      if cmdargs.set:
          set_default(args['nick'], cmdargs.string, args['db'], send, apikey)
          return
      if cmdargs.hour is not None and cmdargs.hour > 23:
          send("Invalid Hour")
          cmdargs.hour = None
      nick = args['nick'] if args['name'] == 'weather' else '`bjones'
      if not cmdargs.string:
          cmdargs.string = get_default(nick, args['db'], send, args['config'], args['source'])
      if cmdargs.hour is not None:
          get_hourly(cmdargs, send, apikey)
      elif cmdargs.date:
          get_forecast(cmdargs, send, apikey)
      else:
          get_weather(cmdargs, send, apikey)