Feat: コマンドの並列処理数を制限できる機能
This commit is contained in:
@@ -8,6 +8,7 @@ import followCommand from "@/feature/command/follow";
|
||||
import unfollowCommand from "@/feature/command/unfollow";
|
||||
import miqCommand from "@/feature/command/miq";
|
||||
import initI18n from "@/lib/i18n";
|
||||
import config from "@/lib/config";
|
||||
|
||||
await initI18n();
|
||||
console.log("コマンドの処理を行います");
|
||||
@@ -84,60 +85,64 @@ try {
|
||||
|
||||
ueuses = [...new Set(ueuses)];
|
||||
|
||||
await Promise.all(ueuses.map(async (ueuse) => {
|
||||
const mem = Memory.memory;
|
||||
let text = ueuse.text;
|
||||
text = text.replace(`@${mem.userid}`, "");
|
||||
text = text.trim();
|
||||
|
||||
const rows = text.split(/\r\n|\r|\n/).map(row => row.trim());
|
||||
const commandRow = rows.filter(row => row.startsWith("/"))[0];
|
||||
|
||||
if (!commandRow || commandRow === "") {
|
||||
console.warn("コマンドが本文から参照できません");
|
||||
|
||||
const response = await client.request("ueuse/create", {
|
||||
text: i18next.t("commandNotFound"),
|
||||
replyid: ueuse.uniqid,
|
||||
});
|
||||
|
||||
if (!response.success)
|
||||
console.warn("ユーズの作成に失敗しました:", response.error_code);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
const args = commandRow.replace("/", "").split(" ");
|
||||
for (let i = 0; i < ueuses.length; i += config.command.maxParallels) {
|
||||
const chunk = ueuses.slice(i, i + config.command.maxParallels);
|
||||
|
||||
switch (args[0]) {
|
||||
case "help":
|
||||
await helpCommand(ueuse, args);
|
||||
break;
|
||||
case "weather":
|
||||
await weatherCommand(ueuse);
|
||||
break;
|
||||
case "follow":
|
||||
await followCommand(ueuse);
|
||||
break;
|
||||
case "unfollow":
|
||||
await unfollowCommand(ueuse);
|
||||
break;
|
||||
case "miq":
|
||||
await miqCommand(ueuse, args);
|
||||
break;
|
||||
default:
|
||||
console.warn("不明なコマンドが入力されました:", args[0]);
|
||||
await Promise.all(chunk.map(async (ueuse) => {
|
||||
const mem = Memory.memory;
|
||||
let text = ueuse.text;
|
||||
text = text.replace(`@${mem.userid}`, "");
|
||||
text = text.trim();
|
||||
|
||||
const rows = text.split(/\r\n|\r|\n/).map(row => row.trim());
|
||||
const commandRow = rows.filter(row => row.startsWith("/"))[0];
|
||||
|
||||
if (!commandRow || commandRow === "") {
|
||||
console.warn("コマンドが本文から参照できません");
|
||||
|
||||
const response = await client.request("ueuse/create", {
|
||||
text: i18next.t("unknownCommand", { command: args[0] }),
|
||||
text: i18next.t("commandNotFound"),
|
||||
replyid: ueuse.uniqid,
|
||||
});
|
||||
|
||||
if (!response.success)
|
||||
console.warn("ユーズの作成に失敗しました:", response.error_code);
|
||||
break;
|
||||
}
|
||||
}));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
const args = commandRow.replace("/", "").split(" ");
|
||||
|
||||
switch (args[0]) {
|
||||
case "help":
|
||||
await helpCommand(ueuse, args);
|
||||
break;
|
||||
case "weather":
|
||||
await weatherCommand(ueuse);
|
||||
break;
|
||||
case "follow":
|
||||
await followCommand(ueuse);
|
||||
break;
|
||||
case "unfollow":
|
||||
await unfollowCommand(ueuse);
|
||||
break;
|
||||
case "miq":
|
||||
await miqCommand(ueuse, args);
|
||||
break;
|
||||
default:
|
||||
console.warn("不明なコマンドが入力されました:", args[0]);
|
||||
|
||||
const response = await client.request("ueuse/create", {
|
||||
text: i18next.t("unknownCommand", { command: args[0] }),
|
||||
replyid: ueuse.uniqid,
|
||||
});
|
||||
|
||||
if (!response.success)
|
||||
console.warn("ユーズの作成に失敗しました:", response.error_code);
|
||||
break;
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
process.exit(0);
|
||||
} catch (err: any) {
|
||||
|
||||
@@ -6,6 +6,7 @@ import { EOL } from "node:os";
|
||||
const schema = z.object({
|
||||
command: z.object({
|
||||
interval: z.number().int().positive(),
|
||||
maxParallels: z.number().int().positive(),
|
||||
}),
|
||||
earthquake: z.object({
|
||||
requireMaxScale: z.union([
|
||||
|
||||
Reference in New Issue
Block a user