diff --git a/examples/config.ts b/examples/config.ts index 6e4b970..da60546 100644 --- a/examples/config.ts +++ b/examples/config.ts @@ -2,12 +2,18 @@ import type { configTypes } from "types/config"; // READMEの設定項目を参照 const config: configTypes = { + time: { + stopTimes: { + start: new Date("23:00"), + stop: new Date("6:00"), + } + }, earthquake: { reconnectTimes: 5000, websocketUrl: "wss://api.p2pquake.net/v2/ws", areasCsvUrl: "https://raw.githubusercontent.com/p2pquake/epsp-specifications/master/epsp-area.csv", maxScaleMax: 30, - rateLimit: 10, + rateLimit: 30, }, weather: { splitCount: 4, diff --git a/package.json b/package.json index 447d406..7c30387 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "noticeuwuzu", - "version": "v3.5.6@uwuzu1.5.4", + "version": "v4.0@uwuzu1.5.4", "description": "uwuzu Notice Bot", "main": "dist/main.js", "scripts": { diff --git a/scripts/earthquakeNotice.ts b/scripts/earthquakeNotice.ts index ef38673..46ad5aa 100644 --- a/scripts/earthquakeNotice.ts +++ b/scripts/earthquakeNotice.ts @@ -291,11 +291,37 @@ async function event(earthquakeInfo: any): Promise { description = `この地震について:${earthquakeInfo.comments.freeFormComment}`; } + // 深さ + let depth: string = ""; + + if ( + earthquakeInfo.earthquake.hypocenter.depth !== null || + earthquakeInfo.earthquake.hypocenter.depth !== -1 + ) { + if (earthquakeInfo.earthquake.hypocenter.depth === 0) { + depth = "深さ:ごく浅い"; + } else { + depth = `深さ:${earthquakeInfo.hypocenter.depth}km`; + } + } + + // マグニチュード + let magnitude: string = ""; + + if( + earthquakeInfo.earthquake.hypocenter.magnitude !== null || + earthquakeInfo.earthquake.hypocenter.magnitude !== -1 + ) { + magnitude = `マグニチュード:${earthquakeInfo.earthquake.hypocenter.magnitude}`; + } + ueuse(` ==地震情報== 【地震発生】 時刻:${earthquakeInfo.time} ${description} + ${magnitude} + ${depth} ${maxScale} ${areas} 国内の津波:${domesticTsunami} @@ -323,7 +349,7 @@ async function event(earthquakeInfo: any): Promise { const areas = areaNames.join("・"); - if (differenceInMinutes(new Date(), rateLimit) >= config.earthquake.rateLimit) { + if (differenceInMinutes(rateLimit, new Date()) >= config.earthquake.rateLimit) { ueuse(` ==地震情報== 【地域情報更新】 diff --git a/scripts/timeNotice.ts b/scripts/timeNotice.ts index 45a3253..8407dc7 100644 --- a/scripts/timeNotice.ts +++ b/scripts/timeNotice.ts @@ -1,26 +1,39 @@ -import { format } from "date-fns"; +import { format, isAfter, isBefore } from "date-fns"; import type * as types from "types/types"; - import config from "../config.js"; -export default async function timeNotice() { - // 現在時刻を取得 - const now = format(new Date(), "HH:mm"); +// 時刻取得 +const now = new Date(); +const start = config.time.stopTimes.start; +const stop = config.time.stopTimes.stop; - // 投稿 - const resUeuse = await fetch( - `https://${config.uwuzuServer}/api/ueuse/create`, - { - method: "POST", - body: JSON.stringify({ - token: config.apiToken, - text: `${now}になりました`, - }), - }, - ); +// 停止時刻外 +let inRange: Boolean = false; - const ueuseData: types.ueuseCreateApi = await resUeuse.json(); - - console.log(JSON.stringify(ueuseData)); +if (isBefore(start, stop)) { + inRange = isAfter(now, start) && isBefore(now, stop); +} else { + inRange = isAfter(now, start) || isBefore(now, stop); +} + + +export default async function timeNotice() { + if (inRange === false) { + // 投稿 + const resUeuse = await fetch( + `https://${config.uwuzuServer}/api/ueuse/create`, + { + method: "POST", + body: JSON.stringify({ + token: config.apiToken, + text: `${now}になりました`, + }), + }, + ); + + const ueuseData: types.ueuseCreateApi = await resUeuse.json(); + + console.log(JSON.stringify(ueuseData)); + } } diff --git a/scripts/weatherNotice.ts b/scripts/weatherNotice.ts index 5d17d96..938be56 100644 --- a/scripts/weatherNotice.ts +++ b/scripts/weatherNotice.ts @@ -83,7 +83,7 @@ export default async function weatherNotice() { today.chanceOfRain.T06_12 !== null || today.chanceOfRain.T06_12 !== "--%" ) { - chanceOfRain = `${today.chanceOfRain.T06_12}%`; + chanceOfRain = today.chanceOfRain.T06_12; } else { chanceOfRain = "取得できませんでした"; } diff --git a/types/config.d.ts b/types/config.d.ts index 8bdeeae..0ce6af4 100644 --- a/types/config.d.ts +++ b/types/config.d.ts @@ -10,7 +10,17 @@ interface weatherTypes { splitCount: number; } +interface stopsTypes { + start: Date; + stop: Date; +} + +interface timeTypes { + stopTimes: stopsTypes; +} + export interface configTypes { + time: timeTypes, earthquake: earthquakeTypes; weather: weatherTypes;