Chg: 最大震度が投稿に必要な値に満たない場合のコンソール表示を変更 / Feat: 返信ではないユーズの自主的な文字数制限
This commit is contained in:
@@ -116,7 +116,7 @@ const processMessage = async (message: any) => {
|
||||
message.earthquake.maxScale !== -1 &&
|
||||
message.earthquake.maxScale < config.earthquake.requireMaxScale
|
||||
) {
|
||||
console.log("投稿に必要な最大震度に満たないため、スキップします");
|
||||
console.log(`最大震度(${scaleMessages[message.earthquake.maxScale]})が投稿に必要な値(${scaleMessages[config.earthquake.requireMaxScale]})に満たないため、スキップします`);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ const processMessage = async (message: any) => {
|
||||
}
|
||||
|
||||
const grouped: Record<string, { scale: number; prefs: Record<string, string[]> }> = {};
|
||||
|
||||
|
||||
for (const point of message.points) {
|
||||
const { addr, scale, pref } = point;
|
||||
const label = scaleMessages[String(scale)] ?? "不明";
|
||||
@@ -163,7 +163,7 @@ const processMessage = async (message: any) => {
|
||||
.sort((a, b) => b[1].scale - a[1].scale)
|
||||
.map(([label, { prefs }]) => {
|
||||
const prefLines = Object.entries(prefs)
|
||||
.map(([pref, addrs]) => `${pref}: ${addrs.join("・")}`)
|
||||
.map(([pref, addrs]) => `**${pref}:** ${addrs.join("・")}`)
|
||||
.join(EOL);
|
||||
|
||||
return `【${label}】${EOL}${prefLines}`;
|
||||
@@ -281,7 +281,7 @@ const processMessage = async (message: any) => {
|
||||
? `から${scaleMessages[String(Math.floor(area.scaleTo))]}`
|
||||
: ""),
|
||||
kind: kindMessages[area.kindCode] ?? "😕主要動の***到達予想は***ありません。",
|
||||
arrivalTime: area.arrivalTime !== undefined
|
||||
arrivalTime: typeof area.arrivalTime === "string" && area.arrivalTime !== ""
|
||||
? format(new Date(area.arrivalTime), "yyyy年M月d日 H:mm:ss")
|
||||
: "不明",
|
||||
}) + EOL.repeat(2);
|
||||
@@ -306,7 +306,7 @@ const processMessage = async (message: any) => {
|
||||
magnitude: message.earthquake.hypocenter.magnitude === undefined ||
|
||||
message.earthquake.hypocenter.magnitude === -1
|
||||
? "不明"
|
||||
: `M${message.earthquake.hypocenter.magnitude}`,
|
||||
: `M${message.earthquake.hypocenter.magnitude.toFixed(1)}`,
|
||||
areas: areasMsg !== ""
|
||||
? EOL.repeat(2) + areasMsg.trim()
|
||||
: "",
|
||||
|
||||
+13
-2
@@ -15,7 +15,6 @@ export default client;
|
||||
|
||||
export const createUeuse = async (data: ApiMap["ueuse/create"]["body"], title: string) => {
|
||||
const mem = Memory.memory;
|
||||
const maxLength = mem.max_length;
|
||||
const excessedMessage = "👉返信に続きがあります。";
|
||||
|
||||
let lines = data.text.split(EOL);
|
||||
@@ -26,7 +25,13 @@ export const createUeuse = async (data: ApiMap["ueuse/create"]["body"], title: s
|
||||
count++;
|
||||
let currentText = "";
|
||||
|
||||
const limit = maxLength - (excessedMessage.length + EOL.length * 2);
|
||||
const currentMaxLength = (data.replyid !== undefined || firstUniqid !== "")
|
||||
? mem.max_length
|
||||
: config.ueuse.maxLengthWithPublic === 0
|
||||
? mem.max_length
|
||||
: config.ueuse.maxLengthWithPublic;
|
||||
|
||||
const limit = currentMaxLength - (excessedMessage.length + EOL.length * 2);
|
||||
|
||||
while (lines.length > 0) {
|
||||
const nextLine = lines[0];
|
||||
@@ -50,6 +55,8 @@ export const createUeuse = async (data: ApiMap["ueuse/create"]["body"], title: s
|
||||
}
|
||||
}
|
||||
|
||||
currentText = currentText.trimEnd();
|
||||
|
||||
if (lines.length > 0) {
|
||||
currentText += EOL.repeat(2) + excessedMessage;
|
||||
}
|
||||
@@ -87,5 +94,9 @@ export const createUeuse = async (data: ApiMap["ueuse/create"]["body"], title: s
|
||||
firstUniqid = postedUniqid;
|
||||
|
||||
console.log(`${title}を投稿(${count}):`, postedUniqid);
|
||||
|
||||
while (lines.length > 0 && lines[0]?.trim() === "") {
|
||||
lines.shift();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -37,6 +37,7 @@ const schema = z.object({
|
||||
ueuse: z.object({
|
||||
maxRetries: z.number().int().positive(),
|
||||
retryInterval: z.number().positive(),
|
||||
maxLengthWithPublic: z.number().int().nonnegative(),
|
||||
}),
|
||||
debug: z.boolean().optional(),
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user