koishi-plugin-aka-60s-api 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.js +111 -1
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -70,6 +70,21 @@ function apply(ctx, config) {
|
|
|
70
70
|
let moyuScheduleTimeout = null;
|
|
71
71
|
let goldScheduleTimeout = null;
|
|
72
72
|
let fuelScheduleTimeout = null;
|
|
73
|
+
const sentToday = {
|
|
74
|
+
news: "",
|
|
75
|
+
aiNews: "",
|
|
76
|
+
moyu: "",
|
|
77
|
+
gold: "",
|
|
78
|
+
fuel: ""
|
|
79
|
+
};
|
|
80
|
+
function getTodayString() {
|
|
81
|
+
const now = /* @__PURE__ */ new Date();
|
|
82
|
+
const year = now.getFullYear();
|
|
83
|
+
const month = `${now.getMonth() + 1}`.padStart(2, "0");
|
|
84
|
+
const day = `${now.getDate()}`.padStart(2, "0");
|
|
85
|
+
return `${year}-${month}-${day}`;
|
|
86
|
+
}
|
|
87
|
+
__name(getTodayString, "getTodayString");
|
|
73
88
|
async function resolveGroupScheduleChannels(whitelist, tag) {
|
|
74
89
|
try {
|
|
75
90
|
if (!whitelist.length) {
|
|
@@ -540,6 +555,14 @@ ${newsItem.link}`).join("\n\n");
|
|
|
540
555
|
return target.getTime() - now.getTime();
|
|
541
556
|
}
|
|
542
557
|
__name(getMsUntilNextTime, "getMsUntilNextTime");
|
|
558
|
+
function isTimePassedToday(timeStr) {
|
|
559
|
+
const [hours, minutes] = timeStr.split(":").map(Number);
|
|
560
|
+
const now = /* @__PURE__ */ new Date();
|
|
561
|
+
const target = /* @__PURE__ */ new Date();
|
|
562
|
+
target.setHours(hours, minutes, 0, 0);
|
|
563
|
+
return target <= now;
|
|
564
|
+
}
|
|
565
|
+
__name(isTimePassedToday, "isTimePassedToday");
|
|
543
566
|
function setupSchedule() {
|
|
544
567
|
if (!config.enableSchedule) {
|
|
545
568
|
logInfo("60s API: 定时发送新闻功能已禁用");
|
|
@@ -550,15 +573,33 @@ ${newsItem.link}`).join("\n\n");
|
|
|
550
573
|
scheduleTimeout = null;
|
|
551
574
|
}
|
|
552
575
|
try {
|
|
576
|
+
const today = getTodayString();
|
|
577
|
+
if (sentToday.news === today) {
|
|
578
|
+
logInfo("60s API: 今日新闻已发送过,设置为明天任务", { today });
|
|
579
|
+
const msUntilNext2 = getMsUntilNextTime(config.scheduleTime) + 24 * 60 * 60 * 1e3;
|
|
580
|
+
scheduleTimeout = setTimeout(() => {
|
|
581
|
+
sentToday.news = "";
|
|
582
|
+
setupSchedule();
|
|
583
|
+
}, msUntilNext2);
|
|
584
|
+
return;
|
|
585
|
+
}
|
|
553
586
|
const msUntilNext = getMsUntilNextTime(config.scheduleTime);
|
|
554
587
|
logInfo("60s API: 新闻定时任务已设置", {
|
|
555
588
|
scheduleTime: config.scheduleTime,
|
|
556
589
|
msUntilNext,
|
|
557
590
|
nextRun: new Date(Date.now() + msUntilNext).toLocaleString(),
|
|
558
|
-
whitelist: config.scheduleWhitelist
|
|
591
|
+
whitelist: config.scheduleWhitelist,
|
|
592
|
+
today,
|
|
593
|
+
alreadySent: sentToday.news === today
|
|
559
594
|
});
|
|
560
595
|
scheduleTimeout = setTimeout(async () => {
|
|
596
|
+
if (sentToday.news === getTodayString()) {
|
|
597
|
+
logInfo("60s API: 今日新闻已在本次任务等待期间发送,跳过");
|
|
598
|
+
setupSchedule();
|
|
599
|
+
return;
|
|
600
|
+
}
|
|
561
601
|
await sendNewsToChannels();
|
|
602
|
+
sentToday.news = getTodayString();
|
|
562
603
|
setupSchedule();
|
|
563
604
|
}, msUntilNext);
|
|
564
605
|
} catch (error) {
|
|
@@ -576,6 +617,16 @@ ${newsItem.link}`).join("\n\n");
|
|
|
576
617
|
aiNewsScheduleTimeout = null;
|
|
577
618
|
}
|
|
578
619
|
try {
|
|
620
|
+
const today = getTodayString();
|
|
621
|
+
if (sentToday.aiNews === today) {
|
|
622
|
+
logInfo("60s API: 今日AI快报已发送过,设置为明天任务", { today });
|
|
623
|
+
const msUntilNext2 = getMsUntilNextTime(config.aiNewsScheduleTime) + 24 * 60 * 60 * 1e3;
|
|
624
|
+
aiNewsScheduleTimeout = setTimeout(() => {
|
|
625
|
+
sentToday.aiNews = "";
|
|
626
|
+
setupAiNewsSchedule();
|
|
627
|
+
}, msUntilNext2);
|
|
628
|
+
return;
|
|
629
|
+
}
|
|
579
630
|
const msUntilNext = getMsUntilNextTime(config.aiNewsScheduleTime);
|
|
580
631
|
logInfo("60s API: AI快报定时任务已设置", {
|
|
581
632
|
scheduleTime: config.aiNewsScheduleTime,
|
|
@@ -584,7 +635,13 @@ ${newsItem.link}`).join("\n\n");
|
|
|
584
635
|
whitelist: config.scheduleWhitelist
|
|
585
636
|
});
|
|
586
637
|
aiNewsScheduleTimeout = setTimeout(async () => {
|
|
638
|
+
if (sentToday.aiNews === getTodayString()) {
|
|
639
|
+
logInfo("60s API: 今日AI快报已在本次任务等待期间发送,跳过");
|
|
640
|
+
setupAiNewsSchedule();
|
|
641
|
+
return;
|
|
642
|
+
}
|
|
587
643
|
await sendAiNewsToChannels();
|
|
644
|
+
sentToday.aiNews = getTodayString();
|
|
588
645
|
setupAiNewsSchedule();
|
|
589
646
|
}, msUntilNext);
|
|
590
647
|
} catch (error) {
|
|
@@ -602,6 +659,16 @@ ${newsItem.link}`).join("\n\n");
|
|
|
602
659
|
moyuScheduleTimeout = null;
|
|
603
660
|
}
|
|
604
661
|
try {
|
|
662
|
+
const today = getTodayString();
|
|
663
|
+
if (sentToday.moyu === today) {
|
|
664
|
+
logInfo("60s API: 今日摸鱼日报已发送过,设置为明天任务", { today });
|
|
665
|
+
const msUntilNext2 = getMsUntilNextTime(config.moyuScheduleTime) + 24 * 60 * 60 * 1e3;
|
|
666
|
+
moyuScheduleTimeout = setTimeout(() => {
|
|
667
|
+
sentToday.moyu = "";
|
|
668
|
+
setupMoyuSchedule();
|
|
669
|
+
}, msUntilNext2);
|
|
670
|
+
return;
|
|
671
|
+
}
|
|
605
672
|
const msUntilNext = getMsUntilNextTime(config.moyuScheduleTime);
|
|
606
673
|
logInfo("60s API: 摸鱼日报定时任务已设置", {
|
|
607
674
|
scheduleTime: config.moyuScheduleTime,
|
|
@@ -610,7 +677,13 @@ ${newsItem.link}`).join("\n\n");
|
|
|
610
677
|
whitelist: config.scheduleWhitelist
|
|
611
678
|
});
|
|
612
679
|
moyuScheduleTimeout = setTimeout(async () => {
|
|
680
|
+
if (sentToday.moyu === getTodayString()) {
|
|
681
|
+
logInfo("60s API: 今日摸鱼日报已在本次任务等待期间发送,跳过");
|
|
682
|
+
setupMoyuSchedule();
|
|
683
|
+
return;
|
|
684
|
+
}
|
|
613
685
|
await sendMoyuToChannels();
|
|
686
|
+
sentToday.moyu = getTodayString();
|
|
614
687
|
setupMoyuSchedule();
|
|
615
688
|
}, msUntilNext);
|
|
616
689
|
} catch (error) {
|
|
@@ -628,6 +701,16 @@ ${newsItem.link}`).join("\n\n");
|
|
|
628
701
|
goldScheduleTimeout = null;
|
|
629
702
|
}
|
|
630
703
|
try {
|
|
704
|
+
const today = getTodayString();
|
|
705
|
+
if (sentToday.gold === today) {
|
|
706
|
+
logInfo("60s API: 今日金价已发送过,设置为明天任务", { today });
|
|
707
|
+
const msUntilNext2 = getMsUntilNextTime(config.goldScheduleTime) + 24 * 60 * 60 * 1e3;
|
|
708
|
+
goldScheduleTimeout = setTimeout(() => {
|
|
709
|
+
sentToday.gold = "";
|
|
710
|
+
setupGoldSchedule();
|
|
711
|
+
}, msUntilNext2);
|
|
712
|
+
return;
|
|
713
|
+
}
|
|
631
714
|
const msUntilNext = getMsUntilNextTime(config.goldScheduleTime);
|
|
632
715
|
logInfo("60s API: 今日金价定时任务已设置", {
|
|
633
716
|
scheduleTime: config.goldScheduleTime,
|
|
@@ -636,7 +719,13 @@ ${newsItem.link}`).join("\n\n");
|
|
|
636
719
|
whitelist: config.scheduleWhitelist
|
|
637
720
|
});
|
|
638
721
|
goldScheduleTimeout = setTimeout(async () => {
|
|
722
|
+
if (sentToday.gold === getTodayString()) {
|
|
723
|
+
logInfo("60s API: 今日金价已在本次任务等待期间发送,跳过");
|
|
724
|
+
setupGoldSchedule();
|
|
725
|
+
return;
|
|
726
|
+
}
|
|
639
727
|
await sendGoldToChannels();
|
|
728
|
+
sentToday.gold = getTodayString();
|
|
640
729
|
setupGoldSchedule();
|
|
641
730
|
}, msUntilNext);
|
|
642
731
|
} catch (error) {
|
|
@@ -654,6 +743,16 @@ ${newsItem.link}`).join("\n\n");
|
|
|
654
743
|
fuelScheduleTimeout = null;
|
|
655
744
|
}
|
|
656
745
|
try {
|
|
746
|
+
const today = getTodayString();
|
|
747
|
+
if (sentToday.fuel === today) {
|
|
748
|
+
logInfo("60s API: 今日油价已发送过,设置为明天任务", { today });
|
|
749
|
+
const msUntilNext2 = getMsUntilNextTime(config.fuelScheduleTime) + 24 * 60 * 60 * 1e3;
|
|
750
|
+
fuelScheduleTimeout = setTimeout(() => {
|
|
751
|
+
sentToday.fuel = "";
|
|
752
|
+
setupFuelSchedule();
|
|
753
|
+
}, msUntilNext2);
|
|
754
|
+
return;
|
|
755
|
+
}
|
|
657
756
|
const msUntilNext = getMsUntilNextTime(config.fuelScheduleTime);
|
|
658
757
|
logInfo("60s API: 今日油价定时任务已设置", {
|
|
659
758
|
scheduleTime: config.fuelScheduleTime,
|
|
@@ -662,7 +761,13 @@ ${newsItem.link}`).join("\n\n");
|
|
|
662
761
|
whitelist: config.scheduleWhitelist
|
|
663
762
|
});
|
|
664
763
|
fuelScheduleTimeout = setTimeout(async () => {
|
|
764
|
+
if (sentToday.fuel === getTodayString()) {
|
|
765
|
+
logInfo("60s API: 今日油价已在本次任务等待期间发送,跳过");
|
|
766
|
+
setupFuelSchedule();
|
|
767
|
+
return;
|
|
768
|
+
}
|
|
665
769
|
await sendFuelToChannels();
|
|
770
|
+
sentToday.fuel = getTodayString();
|
|
666
771
|
setupFuelSchedule();
|
|
667
772
|
}, msUntilNext);
|
|
668
773
|
} catch (error) {
|
|
@@ -1067,6 +1172,11 @@ ${shortDetail}
|
|
|
1067
1172
|
clearTimeout(fuelScheduleTimeout);
|
|
1068
1173
|
fuelScheduleTimeout = null;
|
|
1069
1174
|
}
|
|
1175
|
+
sentToday.news = "";
|
|
1176
|
+
sentToday.aiNews = "";
|
|
1177
|
+
sentToday.moyu = "";
|
|
1178
|
+
sentToday.gold = "";
|
|
1179
|
+
sentToday.fuel = "";
|
|
1070
1180
|
});
|
|
1071
1181
|
}
|
|
1072
1182
|
__name(apply, "apply");
|