@@ -340,12 +340,12 @@ <h4 style="margin-bottom: 0.75rem;">API Key</h4>
340340 < div class ="notification " id ="notification "> </ div >
341341
342342 < script >
343- const modelConfig = {
344- "grok-2" : { RequestFrequency : 30 , ExpirationTime : 3600000 } ,
343+ var modelConfig = {
345344 "grok-3" : { RequestFrequency : 20 , ExpirationTime : 7200000 } ,
346345 "grok-3-deepsearch" : { RequestFrequency : 10 , ExpirationTime : 86400000 } ,
347346 "grok-3-deepersearch" : { RequestFrequency : 3 , ExpirationTime : 86400000 } ,
348- "grok-3-reasoning" : { RequestFrequency : 10 , ExpirationTime : 86400000 }
347+ "grok-3-reasoning" : { RequestFrequency : 10 , ExpirationTime : 86400000 } ,
348+ "grok-4" : { RequestFrequency : 20 , ExpirationTime : 7200000 }
349349 } ;
350350
351351 let tokenMap = { } ;
@@ -364,12 +364,17 @@ <h4 style="margin-bottom: 0.75rem;">API Key</h4>
364364 function calculateModelRemaining ( ) {
365365 const modelRemaining = { } ;
366366 Object . keys ( modelConfig ) . forEach ( modelName => {
367- const maxRequests = modelConfig [ modelName ] . RequestFrequency ;
367+ var maxRequests = modelConfig [ modelName ] . RequestFrequency ;
368368 modelRemaining [ modelName ] = 0 ;
369369 Object . values ( tokenMap ) . forEach ( tokenData => {
370370 const modelData = tokenData [ modelName ] ;
371- if ( modelData . isValid ) {
372- modelRemaining [ modelName ] += maxRequests - modelData . totalRequestCount ;
371+ if ( modelData ) {
372+ if ( ! modelData . isSuper ) {
373+ modelRemaining [ modelName ] = 0 ;
374+ }
375+ else if ( modelData . isValid ) {
376+ modelRemaining [ modelName ] += maxRequests - modelData . totalRequestCount ;
377+ }
373378 }
374379 } ) ;
375380 } ) ;
@@ -385,7 +390,7 @@ <h4 style="margin-bottom: 0.75rem;">API Key</h4>
385390 }
386391
387392 const modelRemaining = calculateModelRemaining ( ) ;
388- const modelIds = [ 'grok-2' , 'grok- 3', 'grok-3-deepsearch' , 'grok-3-deepersearch' , 'grok-3-reasoning' ] ;
393+ const modelIds = [ 'grok-3' , 'grok-3-deepsearch' , 'grok-3-deepersearch' , 'grok-3-reasoning' , 'grok-4 '] ;
389394 modelIds . forEach ( modelName => {
390395 const countElement = document . getElementById ( `${ modelName } -count` ) ;
391396 if ( countElement ) {
@@ -404,7 +409,12 @@ <h4 style="margin-bottom: 0.75rem;">API Key</h4>
404409 Object . values ( tokenMap ) . forEach ( tokenData => {
405410 Object . entries ( tokenData ) . forEach ( ( [ modelName , modelData ] ) => {
406411 if ( ! modelData . isValid ) {
407- const recoveryTime = modelData . invalidatedTime + modelConfig [ modelName ] . ExpirationTime ;
412+ if ( modelData . isSuper ) {
413+ ExpirationTime = 3 * 60 * 60 * 1000 ;
414+ } else {
415+ ExpirationTime = modelConfig [ modelName ] . ExpirationTime ;
416+ }
417+ const recoveryTime = modelData . invalidatedTime + ExpirationTime ;
408418 if ( recoveryTime <= currentTime ) {
409419 shouldRefresh = true ;
410420 }
@@ -517,9 +527,30 @@ <h4 style="margin-bottom: 0.75rem;">API Key</h4>
517527 progressFill . className = 'progress-fill' ;
518528
519529 const modelData = tokenData [ modelName ] ;
520- const requestCount = modelData . totalRequestCount ;
521- const maxRequests = config . RequestFrequency ;
530+ if ( ! modelData ) return ;
531+ const isSuper = modelData . isSuper ;
532+ let requestCount = modelData . totalRequestCount ;
533+ let maxRequests = config . RequestFrequency ;
534+ if ( isSuper ) {
535+ switch ( modelName ) {
536+ case "grok-3" :
537+ maxRequests = 100 ;
538+ break ;
539+ case "grok-3-deepsearch" :
540+ maxRequests = 30 ;
541+ break ;
542+ case "grok-3-deepersearch" :
543+ maxRequests = 10 ;
544+ break ;
545+ case "grok-3-reasoning" :
546+ maxRequests = 30 ;
547+ break ;
548+ case "grok-4" :
549+ maxRequests = 20 ;
550+ }
551+ }
522552 const percentage = Math . min ( ( requestCount / maxRequests ) * 100 , 100 ) ;
553+
523554 progressFill . style . width = `${ percentage } %` ;
524555 progressFill . style . backgroundColor = getProgressColor ( percentage , modelData . isValid ) ;
525556 progressBar . appendChild ( progressFill ) ;
@@ -531,13 +562,19 @@ <h4 style="margin-bottom: 0.75rem;">API Key</h4>
531562 const status = document . createElement ( 'div' ) ;
532563 status . className = 'status' ;
533564 if ( ! modelData . isValid ) {
565+ if ( modelData . isSuper ) {
566+ ExpirationTime = 3 * 60 * 60 * 1000 ;
567+ }
568+ else {
569+ ExpirationTime = config . ExpirationTime ;
570+ }
534571 status . classList . add ( 'status-expired' ) ;
535572 status . textContent = '失效' ;
536573 status . setAttribute ( 'data-invalidated-time' , modelData . invalidatedTime ) ;
537- status . setAttribute ( 'data-expiration-time' , config . ExpirationTime ) ;
574+ status . setAttribute ( 'data-expiration-time' , ExpirationTime ) ;
538575 const tooltip = document . createElement ( 'div' ) ;
539576 tooltip . className = 'tooltip' ;
540- tooltip . textContent = getTooltipText ( modelData . invalidatedTime , config . ExpirationTime ) ;
577+ tooltip . textContent = getTooltipText ( modelData . invalidatedTime , ExpirationTime ) ;
541578 status . appendChild ( tooltip ) ;
542579 } else {
543580 status . classList . add ( 'status-active' ) ;
@@ -566,8 +603,28 @@ <h4 style="margin-bottom: 0.75rem;">API Key</h4>
566603 Object . entries ( modelConfig ) . forEach ( ( [ modelName , config ] ) => {
567604 const modelItem = modelItems [ index ++ ] ;
568605 const modelData = tokenData [ modelName ] ;
569- const requestCount = modelData . totalRequestCount ;
570- const maxRequests = config . RequestFrequency ;
606+ if ( ! modelData ) return ;
607+ const isSuper = modelData . isSuper ;
608+ let requestCount = modelData . totalRequestCount ;
609+ let maxRequests = config . RequestFrequency ;
610+ if ( isSuper ) {
611+ switch ( modelName ) {
612+ case "grok-3" :
613+ maxRequests = 100 ;
614+ break ;
615+ case "grok-3-deepsearch" :
616+ maxRequests = 30 ;
617+ break ;
618+ case "grok-3-deepersearch" :
619+ maxRequests = 10 ;
620+ break ;
621+ case "grok-3-reasoning" :
622+ maxRequests = 30 ;
623+ break ;
624+ case "grok-4" :
625+ maxRequests = 20 ;
626+ }
627+ }
571628 const percentage = Math . min ( ( requestCount / maxRequests ) * 100 , 100 ) ;
572629
573630 const progressFill = modelItem . querySelector ( '.progress-fill' ) ;
@@ -580,13 +637,19 @@ <h4 style="margin-bottom: 0.75rem;">API Key</h4>
580637 const status = modelItem . querySelector ( '.status' ) ;
581638 status . className = 'status' ;
582639 if ( ! modelData . isValid ) {
640+ if ( modelData . isSuper ) {
641+ ExpirationTime = 3 * 60 * 60 * 1000 ;
642+ }
643+ else {
644+ ExpirationTime = config . ExpirationTime ;
645+ }
583646 status . classList . add ( 'status-expired' ) ;
584647 status . textContent = '失效' ;
585648 status . setAttribute ( 'data-invalidated-time' , modelData . invalidatedTime ) ;
586- status . setAttribute ( 'data-expiration-time' , config . ExpirationTime ) ;
649+ status . setAttribute ( 'data-expiration-time' , ExpirationTime ) ;
587650 const tooltip = status . querySelector ( '.tooltip' ) || document . createElement ( 'div' ) ;
588651 tooltip . className = 'tooltip' ;
589- tooltip . textContent = getTooltipText ( modelData . invalidatedTime , config . ExpirationTime ) ;
652+ tooltip . textContent = getTooltipText ( modelData . invalidatedTime , ExpirationTime ) ;
590653 if ( ! status . contains ( tooltip ) ) status . appendChild ( tooltip ) ;
591654 } else {
592655 status . classList . add ( 'status-active' ) ;
0 commit comments