Advertisement
SilkKheldar

LauraCaught

May 16th, 2023 (edited)
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let version  = "1.0";
  2. let createdt = "16 MAy2023";
  3. let usage    = '!addcom !goal -ul=moderator -cd=5 $(eval q="$(querystring)";$(urlfetch json https://pastebin.com/raw/RdZ4ZCfM))';
  4. let designer = "Silkenator23";
  5.  
  6. dates =
  7. [
  8.   [20230605,"111.672.673","77.201",  "5 june 2023","5-6-2023"],
  9.   [20230530,"110.110.171","75.912",  "30 may 2023","30-5-2023"],
  10.   [20230529,"109.912.307","75.535",  "29 may 2023","29-5-2023"],
  11.   [20230523,"109.371.487","74.357",  "23 may 2023","23-5-2023"],
  12.   [20230522,"108.973.287","73.884",  "22 may 2023","22-5-2023"],
  13.   [20230521,"108.836.927","73.523",  "21 may 2023","21-5-2023"],
  14.   [20230519,"108.155.706","73.020",  "19 may 2023","19-5-2023"],
  15.   [20230518,"108.039.191","72.690",  "18 may 2023","18-5-2023"],
  16.   [20230517,"107.791.731","72.315",  "17 may 2023","17-5-2023"],
  17.   [20230516,"107.706.434","72.023",  "16 may 2023","16-5-2023"],
  18. ];
  19.  
  20. message_start     = "/me ";
  21. message_middle_1  = " xp ";
  22. message_middle_2  = " pókemon caught on ";
  23. message_middle_p_1 = " pókemon were caught and ";
  24. message_middle_p_2 = " xp was earned between ";
  25. message_middle_p_3 = " and ";
  26. goal = 100000;
  27. const goal_date =  new Date("2023-08-4");
  28.  
  29. message_goal = " pókemon to catch and " ;
  30. message_goal_2 = " days before pókemon Go Fest London. Catch goal a day is: ";
  31.  
  32.  
  33. if (q == null||q=="")
  34. {
  35.   var countsting1_s ;
  36.   countsting1_s = dates[0][2].replaceAll(".", "");
  37.   var xpIresult_s = Math.abs(countsting1_s - goal);
  38.   var strxpIresult_s = xpIresult_s.toLocaleString('nl-NL', { minimumFractionDigits: 0 });
  39.  
  40.   var date_Str_s_s = dates[0][0].toString();
  41.   var date_Str_s = date_Str_s_s.slice(0, 4) + '-' +  date_Str_s_s.slice(4, 6) + '-' +  date_Str_s_s.slice(6, 8);
  42.   Date_s = new Date(date_Str_s);
  43.   var Difference_In_Time = goal_date.getTime() - Date_s.getTime();
  44.   var Difference_In_Days = Math.ceil(Difference_In_Time / (1000 * 3600 * 24));
  45.  
  46.   var p_per_day =  Math.ceil(xpIresult_s / Difference_In_Days);
  47.  
  48.   message = message_start + dates[0][1]+ message_middle_1 + dates[0][2] + message_middle_2 + dates[0][3] + message_middle_p_3 + strxpIresult_s + message_goal + Difference_In_Days +  message_goal_2 + p_per_day + ' pókemon' ;
  49. }
  50. else
  51. {
  52.   let date1;
  53.   let date2;
  54.   var teststring1 = q.replaceAll("%20", " ");
  55.   var teststring2 = teststring1.replaceAll("\\", "-");
  56.   var teststring2 = teststring1.replaceAll("%2F", "-");
  57.   var teststring3 = teststring2.replaceAll("/", "-");
  58.   var teststring3 = teststring2.replaceAll("%5C", "-");
  59.   let dLen    = dates.length;
  60.  
  61.   PlaceSpace = teststring3.indexOf(" ");
  62.  
  63.   if(PlaceSpace == -1)
  64.   {
  65.     var PlaceSepSM = teststring3.indexOf("-");
  66.     var PlaceSepMY = teststring3.lastIndexOf("-");
  67.     if(PlaceSepSM > 0)
  68.     {
  69.       dayte =  '0'+ teststring3.slice(0,PlaceSepSM);
  70.       day = dayte.slice(-2);
  71.       lengthS = PlaceSepMY- PlaceSepSM -1;
  72.       if(lengthS >= 1)
  73.       {  
  74.         var mntte =  '0'+ teststring3.substr(PlaceSepSM + 1, lengthS);
  75.         mnt = mntte.slice(-2);
  76.         var year =  teststring3.substr(PlaceSepMY+ 1);
  77.         search= year + mnt + day ;
  78.         let dLen =  dates.length;
  79.         var RowI = 0;
  80.         for (let i = 0; i < dLen; i++)
  81.         {
  82.           rdat = dates[i][0] ;
  83.           if(rdat == search)
  84.           {
  85.             message = message_start + dates[i][1]+ message_middle_1 + dates[i][2] + message_middle_2 + dates[i][3];
  86.             RowI = i;
  87.             break;
  88.           }
  89.           if(rdat < search)
  90.           {
  91.             message =  message_start + 'No data has been found for the date ' + teststring3 + '. Closest earlier known date is ' + dates[i][3] + ' with ' + dates[i][1] + ' xp and ' + dates[i][2] + ' pókemon caught' ;
  92.             RowI = i;
  93.             break;
  94.           }
  95.           if (i == dLen - 1)
  96.           {
  97.             message =  message_start + 'No data has been found for the date ' + teststring3 + '. the earliest known date is ' + dates[i][3] + ' with ' + dates[i][1] + ' xp and ' + dates[i][2] + ' pókemon caught' ;
  98.             RowI = i;
  99.             break;
  100.           }
  101.         }
  102.           var countsting1_s2 ;
  103.           countsting1_s2 = dates[RowI][2].replaceAll(".", "");
  104.           var xpIresult_s2 = Math.abs(goal-countsting1_s2);
  105.           var strxpIresult_s2 = xpIresult_s2.toLocaleString('nl-NL', { minimumFractionDigits: 0 });
  106.          
  107.           var date_Str_s_s2 = dates[RowI][0].toString();
  108.           var date_Str_s2 = date_Str_s_s2.slice(0, 4) + '-' +  date_Str_s_s2.slice(4, 6) + '-' +  date_Str_s_s2.slice(6, 8);
  109.           Date_s2 = new Date(date_Str_s2);
  110.           var Difference_In_Time2 = goal_date.getTime() - Date_s2.getTime();
  111.           var Difference_In_Days2 = Math.ceil(Difference_In_Time2 / (1000 * 3600 * 24));
  112.          
  113.            var p_per_day2 =  Math.ceil(xpIresult_s2 / Difference_In_Days2);
  114.           message =  message  + message_middle_p_3 + strxpIresult_s2 + message_goal + Difference_In_Days2 +  message_goal_2 + p_per_day2 + ' pókemon';
  115.  
  116.  
  117.       }
  118.       else
  119.       {
  120.         message =  message_start + 'No data has been found for the date ' + teststring3 + '. last known date is ' + dates[0][3] + ' with ' + dates[0][1] + ' xp and ' + dates[0][2] + ' pókemon caught' ;  
  121.       }
  122.     }
  123.     else
  124.     {
  125.       uq = q.toUpperCase();
  126.       message =  message_start + 'No data has been found for the date ' + teststring3 + '. last known date is ' + dates[0][3] + ' with ' + dates[0][1] + ' xp and ' + dates[0][2] + ' pókemon caught' ;
  127.       switch (uq)
  128.       {
  129.         case "LIST":
  130.           let check;
  131.           message = message_start + 'Last known dates: ';
  132.           let sep = ' ';
  133.           for (let i = 0; i < dLen; i++)
  134.           {
  135.             check = message.length + dates[i][4].length;
  136.             if(check >=400)
  137.             {
  138.               break;
  139.             }
  140.             message = message + sep + dates[i][4];
  141.             sep = ', ';
  142.           }
  143.           break;
  144.  
  145.         case "LISTL":
  146.           let check3;
  147.           message = message_start + 'Last known dates: ';
  148.           let sep3 = ' ';
  149.           for (let i = 0; i < dLen; i++)
  150.           {
  151.             check3 = message.length + dates[i][4].length;
  152.             if(check3 >=400)
  153.             {
  154.               break;
  155.             }
  156.             message = message + sep3 + dates[i][4];
  157.             sep3 = ', ';
  158.           }
  159.           break;
  160.  
  161.         case "LISTF":
  162.           let check2;
  163.           let sep2 = ' ';
  164.           message = message_start + 'First known dates: ';
  165.           for (let i = dLen-1; i > 1; i--)
  166.           {
  167.             check2 = message.length + dates[i][4].length;
  168.             if(check2 >=400)
  169.             {
  170.               break;
  171.             }
  172.             message = message + sep2 + dates[i][4];
  173.             sep2 = ', ';
  174.           }
  175.           break;
  176.  
  177.  
  178.         case "HELP":
  179.           message =  message_start + 'Type !goal for the last know xp.  Type !goal LISTL for a list of last know dates (max 400 positions). Type !goal LISTF for a list of first know dates (max 400 positions). Type !goal <date> for values on date. Type !goal <date><space><date> for comparison between 2 dates. Type !goal version for version data.';
  180.           break;
  181.  
  182.         case "ASK":
  183.           message =  '@iiamlaura can you show your XP and pokemon caught please :rolling_eyes: ';
  184.           break;
  185.  
  186.        
  187.         case "VERSION":
  188.           message =  message_start + 'Vesion: ' + version + ' (' + createdt +') by ' + designer;
  189.           break;
  190.  
  191.       }
  192.     }
  193.   }
  194.   else
  195.   {
  196.     day1t = teststring3.slice(0,PlaceSpace );
  197.     var PlaceSepSM = day1t.indexOf("-");
  198.     var PlaceSepMY = day1t.lastIndexOf("-");
  199.     let caughtday1;
  200.     let caughtxpy1;
  201.     let displayday1;
  202.     let msgday1;
  203.     if(PlaceSepSM > 0)
  204.     {
  205.       dayte =  '0'+ teststring3.slice(0,PlaceSepSM);
  206.       day = dayte.slice(-2);
  207.       lengthS = PlaceSepMY- PlaceSepSM -1;
  208.       if(lengthS >= 1)
  209.       {  
  210.         let blncont = false;
  211.         var mntte   = '0'+ teststring3.substr(PlaceSepSM + 1, lengthS);
  212.         mnt         = mntte.slice(-2);
  213.         lengthS     = PlaceSpace - PlaceSepMY-1;
  214.         var year    = teststring3.substr(PlaceSepMY+ 1, lengthS);
  215.         search      = year + mnt + day ;
  216.  
  217.  
  218.         for (let i = 0; i < dLen; i++)
  219.         {
  220.           rdat = dates[i][0] ;
  221.           caughtday1  = dates[i][2];
  222.           caughtxpy1  = dates[i][1];
  223.           displayday1 = dates[i][3];
  224.           blncont = 'first';
  225.           if(rdat == search)
  226.           {
  227.             blncont = 'true';
  228.             break;
  229.           }
  230.           if(rdat < search)
  231.           {
  232.             blncont     = 'closest';
  233.             break;
  234.           }
  235.         }
  236.         if(blncont == 'true')
  237.         {
  238.           msgday1 =  ' ';
  239.         }
  240.         if(blncont == 'closest')
  241.         {
  242.           msgday1 = 'No data has been found for the date ' + day1t + ' the closest earlier day is ' + displayday1 + '. ';
  243.         }
  244.         if(blncont == 'first')
  245.         {
  246.           msgday1 =   'No data has been found for the date ' + day1t + '.  First known date is ' + displayday1 + '. ';
  247.         }
  248.       }
  249.       else
  250.       {
  251.         caughtday1  = dates[dLen-1][2];
  252.         caughtxpy1  = dates[dLen-1][1];
  253.         displayday1 = dates[dLen-1][3];
  254.         msgday1 =   'No data has been found for the date ' + day1t + '.  First known date is ' + displayday1 + '. ';
  255.         message = msgday1;
  256.       }
  257.     }
  258.     else
  259.     {
  260.       caughtday1  = dates[dLen-1][2];
  261.       caughtxpy1  = dates[dLen-1][1];
  262.       displayday1 = dates[dLen-1][3];
  263.       msgday1 =   'No data has been found for the date ' + day1t + '.  First known date is ' + displayday1 + '. ';
  264.  
  265.     }  
  266.     day2t = teststring3.slice(PlaceSpace+1 );
  267.     var PlaceSepSM2 = day2t.indexOf("-");
  268.     var PlaceSepMY2 = day2t.lastIndexOf("-");
  269.     let search2;
  270.     let msgday2;
  271.     let blncont2   = false;
  272.     let caughtday2;
  273.     let caughtxpy2;
  274.     let displayday2;
  275.     var RowI3 = 0;
  276.    
  277.     if(PlaceSepSM2 > 0)
  278.     {
  279.       day2te =  '0'+ day2t.slice(0,PlaceSepSM2);
  280.       day2 = day2te.slice(-2);
  281.       lengthS2 =  PlaceSepMY2 - PlaceSepSM2-1 ;
  282.       if(lengthS2 >= 1)
  283.       {
  284.         var mntte2     = '0'+ day2t.substr(PlaceSepSM2 + 1, lengthS2);
  285.         mnt2           = mntte2.slice(-2);
  286.         lengthS2       =  PlaceSepMY2;
  287.         var year2      = day2t.substr(PlaceSepMY2+1, 4);
  288.         search2        = year2 + mnt2 + day2 ;
  289.         for (let i = 0; i < dLen; i++)
  290.         {
  291.           rdat2 = dates[i][0] ;
  292.           caughtday2  = dates[i][2];
  293.           caughtxpy2  = dates[i][1];
  294.           displayday2 = dates[i][3];
  295.           RowI3 = i;
  296.           if(rdat2 == search2)
  297.           {
  298.             blncont2    = 'true';
  299.  
  300.             break;
  301.           }
  302.           else
  303.           {
  304.             if(rdat2 < search2)
  305.             {
  306.               blncont2     = 'closest';
  307.               break;
  308.             }
  309.             else
  310.             {
  311.               caughtday2  = dates[0][2];
  312.               caughtxpy2  = dates[0][1];
  313.               displayday2 = dates[0][3];
  314.               blncont2 = 'last';
  315.                         RowI3 = 0;
  316.             }
  317.           }
  318.         }
  319.         if(blncont2 == 'true')
  320.         {
  321.           msgday2 =  ' ';
  322.         }
  323.         if(blncont2 == 'closest')
  324.         {
  325.           msgday2 = 'No data has been found for the date ' + day2t + ' the closest earlier day is ' + displayday2 + '. ';
  326.         }
  327.         if(blncont2 == 'last')
  328.         {
  329.           msgday2 =   'No data has been found for the date ' + day2t + '. Last known date is ' + displayday2 + '. ';
  330.         }
  331.       }
  332.       else
  333.       {
  334.         caughtday2  = dates[0][2];
  335.         caughtxpy2  = dates[0][1];
  336.         displayday2 = dates[0][3];
  337.         msgday2 =   'No data has been found for the date ' + day2t + '. Last known  date is ' + displayday1 + '. ';
  338.                     RowI3 = 0;
  339.       }
  340.     }
  341.     else
  342.     {
  343.       caughtday2  = dates[0][2];
  344.       caughtxpy2  = dates[0][1];
  345.       displayday2 = dates[0][3];
  346.       msgday2 =   'No data has been found for the date ' + day2t + '. Last known  date is ' + displayday1 + '. ';
  347.     }
  348.     var countsting1 = caughtday1.replaceAll(".", "");
  349.     var countsting2 = caughtday2.replaceAll(".", "");
  350.     var intday1 = parseInt(countsting1);
  351.     var intday2 = parseInt(countsting2);
  352.     var Iresult = Math.abs(intday1 - intday2);
  353.     var strIresult = Iresult.toLocaleString('nl-NL', { minimumFractionDigits: 0 });
  354.     var xpcountsting1 = caughtxpy1.replaceAll(".", "");
  355.     var xpcountsting2 = caughtxpy2.replaceAll(".", "");
  356.     var xpintday1 = parseInt(xpcountsting1);
  357.     var xpintday2 = parseInt(xpcountsting2);
  358.     var xpIresult = Math.abs(xpintday1 - xpintday2);
  359.     var strxpIresult = xpIresult.toLocaleString('nl-NL', { minimumFractionDigits: 0 });
  360.    
  361.           var countsting1_s3 ;
  362.           countsting1_s3 = dates[RowI3][2].replaceAll(".", "");
  363.           var xpIresult_s3 = Math.abs(goal-countsting1_s3);
  364.           var strxpIresult_s3 = xpIresult_s3.toLocaleString('nl-NL', { minimumFractionDigits: 0 });
  365.          
  366.           var date_Str_s_s3 = dates[RowI3][0].toString();
  367.           var date_Str_s3 = date_Str_s_s3.slice(0, 4) + '-' +  date_Str_s_s3.slice(4, 6) + '-' +  date_Str_s_s3.slice(6, 8);
  368.           Date_s3 = new Date(date_Str_s3);
  369.           var Difference_In_Time3 = goal_date.getTime() - Date_s3.getTime();
  370.           var Difference_In_Days3 = Math.ceil(Difference_In_Time3 / (1000 * 3600 * 24));
  371.          
  372.            var p_per_day3 =  Math.ceil(xpIresult_s3 / Difference_In_Days3);
  373.            
  374.     message = message_start + msgday1 + msgday2 + strIresult + message_middle_p_1 + strxpIresult + message_middle_p_2 + displayday1 + message_middle_p_3 + displayday2;
  375.           message =  message + ". " + strxpIresult_s3 + message_goal + Difference_In_Days3 +  message_goal_2 + p_per_day3 + ' pókemon';
  376.    
  377.   }
  378. }
  379. message;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement