Fix: distに震度分布画像のアセットと地域マップがコピーされるように / Del: 正確にスケジュールが動作する機能 / Fix: 返信とメンションの返答が記録されない問題 / Fix: 震度分布画像が投稿されない問題 / Chg: 震度分布画像のメッセージを変更 / Fix: 条件に合わなくても震度分布画像を生成する問題 / Fix: 震度分布画像に隙間が空く問題

This commit is contained in:
2026-05-17 13:54:22 +09:00
parent eb027d7daf
commit 3db3a75f64
11 changed files with 235 additions and 152 deletions
+43 -48
View File
@@ -169,61 +169,56 @@ const processMessage = async (message: any) => {
.join(EOL.repeat(2))
.trim();
let earthquakeUniqid: string | null = null;
const earthquakeUeuses = await createUeuse({
text: i18next.t("earthquakeNotice", {
type: typeMessage[message.issue.type] ?? "地震情報",
occuredTime: format(new Date(message.earthquake.time), "yyyy年M月d日 H:mm"),
maxScale: scaleMessages[String(message.earthquake.maxScale)],
epicenter: message.earthquake.hypocenter.name === ""
? "不明"
: message.earthquake.hypocenter.name,
magnitude: message.earthquake.hypocenter.magnitude === -1
? "不明"
: `M${message.earthquake.hypocenter.magnitude.toFixed(1)}`,
depth: message.earthquake.hypocenter.depth === 0
? "ごく浅い"
: (message.earthquake.hypocenter.depth === -1
? "不明"
: `${message.earthquake.hypocenter.depth}km`),
domesticTsunami: domesticTsunamiMessages[(message.earthquake.domesticTsunami ?? "Unknown")],
foreignTsunami: foreignTsunamiMessages[(message.earthquake.foreignTsunami ?? "Unknown")],
points: pointsMsg === ""
? ""
: EOL.repeat(2) + pointsMsg,
source: message.issue.source ?? "不明",
comment: message.comments.freeFormComment === ""
? ""
: EOL + message.comments.freeFormComment + EOL,
}),
}, "地震発生情報");
await Promise.allSettled([
(async () => {
const ueuses = await createUeuse({
text: i18next.t("earthquakeNotice", {
type: typeMessage[message.issue.type] ?? "地震情報",
occuredTime: format(new Date(message.earthquake.time), "yyyy年M月d日 H:mm"),
maxScale: scaleMessages[String(message.earthquake.maxScale)],
epicenter: message.earthquake.hypocenter.name === ""
? "不明"
: message.earthquake.hypocenter.name,
magnitude: message.earthquake.hypocenter.magnitude === -1
? "不明"
: `M${message.earthquake.hypocenter.magnitude.toFixed(1)}`,
depth: message.earthquake.hypocenter.depth === 0
? "ごく浅い"
: (message.earthquake.hypocenter.depth === -1
? "不明"
: `${message.earthquake.hypocenter.depth}km`),
domesticTsunami: domesticTsunamiMessages[(message.earthquake.domesticTsunami ?? "Unknown")],
foreignTsunami: foreignTsunamiMessages[(message.earthquake.foreignTsunami ?? "Unknown")],
points: pointsMsg === ""
? ""
: EOL.repeat(2) + pointsMsg,
source: message.issue.source ?? "不明",
comment: message.comments.freeFormComment === ""
? ""
: EOL + message.comments.freeFormComment + EOL,
}),
}, "地震発生情報");
earthquakeUniqid = ueuses[0]?.uniqid ?? null;
})(),
(async () => {
const result = await generateImage(message);
if (typeof result === "string") {
console.warn("情報が不足しているため、地震の画像生成ができませんでした");
return;
}
while (typeof (earthquakeUniqid as string | null) !== "string") {}
try {
const image = await generateImage(message);
if (typeof image === "string") {
throw "情報が不足しているため、地震の画像生成ができませんでした";
} else {
await createUeuse({
text: "この地震の震度分布画像を生成しました。",
text: i18next.t("earthquakeImageGenerated", {
url: earthquakeUeuses[0]?.uniqid
? `${config.uwuzu.origin}/!${earthquakeUeuses[0].uniqid}`
: "不明",
}),
media: {
photo: [
result.toString("base64"),
]
image.toString("base64"),
],
},
reuseid: (earthquakeUniqid as unknown as string),
}, "震度分布画像");
})(),
]);
}
} catch (err) {
console.warn(err);
}
}
break;
case 552: