デバッグ表示を分かりやすく2(v4.3)
This commit is contained in:
parent
c3ab3a8456
commit
568ae7abf6
|
@ -8,9 +8,14 @@ uwuzuで動作するお知らせBOTです。
|
||||||
examples/config.tsをプロジェクトルートへ移動し各設定を更新してください。
|
examples/config.tsをプロジェクトルートへ移動し各設定を更新してください。
|
||||||
|
|
||||||
## 設定項目
|
## 設定項目
|
||||||
|
time.stopTimes.start: 時報休止期間の開始時刻(HH)
|
||||||
|
time.stopTimes.stop: 時報休止期間の停止時刻(HH)
|
||||||
|
|
||||||
earthquake.reconnectTimes:地震情報のWebSocketが切断されたときに自動再接続する時間(ミリ秒)
|
earthquake.reconnectTimes:地震情報のWebSocketが切断されたときに自動再接続する時間(ミリ秒)
|
||||||
earthquake.websocketUrl:地震情報のWebSocket接続先URL
|
earthquake.websocketUrl:地震情報のWebSocket接続先URL
|
||||||
earthquake.areasCsvUrl:地域情報のデータベース(CSV)ファイルのURL
|
earthquake.areasCsvUrl:地域情報のデータベース(CSV)ファイルのURL
|
||||||
|
earthquake.maxScaleMin: 地震発生投稿の最低震度(10-70)
|
||||||
|
earthquake.rateLimit: 地域情報更新のレート制限(分)
|
||||||
|
|
||||||
weather.splitCount:天気お知らせの返信の分割数(4分割を推奨)
|
weather.splitCount:天気お知らせの返信の分割数(4分割を推奨)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
# # ##### ####### ### ##### ####### # # # # # # ###### # #
|
||||||
|
## # # # # # ## # # # # # # # # # # #
|
||||||
|
# ## # # # # # # ###### # # # # # # # # ## # #
|
||||||
|
# ## # # # # ## # # # # # # # # # #
|
||||||
|
# # ##### # ### ##### ####### ###### # # ###### ###### #######
|
4
main.ts
4
main.ts
|
@ -6,6 +6,10 @@ import timeNotice from "./scripts/timeNotice.js";
|
||||||
import weatherNotice from "./scripts/weatherNotice.js";
|
import weatherNotice from "./scripts/weatherNotice.js";
|
||||||
import earthquakeNotice from "./scripts/earthquakeNotice.js";
|
import earthquakeNotice from "./scripts/earthquakeNotice.js";
|
||||||
|
|
||||||
|
// アスキーアート読み込み
|
||||||
|
import asciiArt from "./scripts/asciiart.js";
|
||||||
|
asciiArt();
|
||||||
|
|
||||||
// フォローバック機能読み込み
|
// フォローバック機能読み込み
|
||||||
import followBack from "./scripts/followBack.js";
|
import followBack from "./scripts/followBack.js";
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "noticeuwuzu",
|
"name": "noticeuwuzu",
|
||||||
"version": "v4.2@uwuzu1.5.4",
|
"version": "v4.3@uwuzu1.5.4",
|
||||||
"description": "uwuzu Notice Bot",
|
"description": "uwuzu Notice Bot",
|
||||||
"main": "dist/main.js",
|
"main": "dist/main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -29,6 +29,7 @@
|
||||||
"@types/dotenv": "^6.1.1",
|
"@types/dotenv": "^6.1.1",
|
||||||
"@types/node-cron": "^3.0.11",
|
"@types/node-cron": "^3.0.11",
|
||||||
"date-fns": "^4.1.0",
|
"date-fns": "^4.1.0",
|
||||||
|
"fs": "^0.0.1-security",
|
||||||
"node-cron": "^4.1.1",
|
"node-cron": "^4.1.1",
|
||||||
"tsx": "^4.20.3",
|
"tsx": "^4.20.3",
|
||||||
"typescript": "^5.8.3",
|
"typescript": "^5.8.3",
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
import * as fs from "fs";
|
||||||
|
|
||||||
|
export default function asciiArt() {
|
||||||
|
console.log(fs.readFileSync("asciiart.txt", "utf-8"));
|
||||||
|
}
|
|
@ -20,13 +20,13 @@ class P2PEarthquakeClient {
|
||||||
if (this.isConnecting) return;
|
if (this.isConnecting) return;
|
||||||
|
|
||||||
this.isConnecting = true;
|
this.isConnecting = true;
|
||||||
console.log("P2P地震情報に接続中");
|
console.log("地震情報サーバーに接続中");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.ws = new WebSocket(config.earthquake.websocketUrl);
|
this.ws = new WebSocket(config.earthquake.websocketUrl);
|
||||||
|
|
||||||
this.ws.on("open", () => {
|
this.ws.on("open", () => {
|
||||||
console.log("P2P地震情報に接続しました");
|
console.log("地震情報サーバーに接続しました");
|
||||||
this.isConnecting = false;
|
this.isConnecting = false;
|
||||||
|
|
||||||
if (this.reconnectTimer) {
|
if (this.reconnectTimer) {
|
||||||
|
@ -45,7 +45,7 @@ class P2PEarthquakeClient {
|
||||||
});
|
});
|
||||||
|
|
||||||
this.ws.on("close", (code: number, reason: Buffer) => {
|
this.ws.on("close", (code: number, reason: Buffer) => {
|
||||||
console.log(`接続が閉じられました: ${code} - ${reason.toString()}`);
|
console.log(`切断されました: ${code} - ${reason.toString()}`);
|
||||||
this.isConnecting = false;
|
this.isConnecting = false;
|
||||||
this.scheduleReconnect();
|
this.scheduleReconnect();
|
||||||
});
|
});
|
||||||
|
@ -75,7 +75,7 @@ class P2PEarthquakeClient {
|
||||||
this.executeEventFunc(message);
|
this.executeEventFunc(message);
|
||||||
break;
|
break;
|
||||||
case 555: // 地域情報更新情報
|
case 555: // 地域情報更新情報
|
||||||
console.log("地域情報更新情報を受信しました");
|
console.log("地域情報更新を受信しました");
|
||||||
this.executeEventFunc(message);
|
this.executeEventFunc(message);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -91,6 +91,7 @@ class P2PEarthquakeClient {
|
||||||
private scheduleReconnect(): void {
|
private scheduleReconnect(): void {
|
||||||
if (this.reconnectTimer) return;
|
if (this.reconnectTimer) return;
|
||||||
|
|
||||||
|
console.log("地震情報サーバーから切断されました");
|
||||||
console.log(`${this.reconnectInterval / 1000}秒後に再接続を試みます`);
|
console.log(`${this.reconnectInterval / 1000}秒後に再接続を試みます`);
|
||||||
this.reconnectTimer = setTimeout(() => {
|
this.reconnectTimer = setTimeout(() => {
|
||||||
this.reconnectTimer = null;
|
this.reconnectTimer = null;
|
||||||
|
@ -361,6 +362,9 @@ async function event(earthquakeInfo: any): Promise<void> {
|
||||||
`);
|
`);
|
||||||
|
|
||||||
rateLimit = new Date();
|
rateLimit = new Date();
|
||||||
|
} else {
|
||||||
|
console.log("レート制限に満たしていないため投稿されませんでした");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -376,7 +380,7 @@ async function ueuse(text: string) {
|
||||||
|
|
||||||
const resData = await res.json();
|
const resData = await res.json();
|
||||||
|
|
||||||
console.log(JSON.stringify(resData));
|
console.log(`地震情報投稿:${JSON.stringify(resData)}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function earthquakeNotice(): void {
|
export default function earthquakeNotice(): void {
|
||||||
|
|
|
@ -3,18 +3,20 @@ import type * as types from "types/types";
|
||||||
import config from "../config.js";
|
import config from "../config.js";
|
||||||
|
|
||||||
export default async function followBack() {
|
export default async function followBack() {
|
||||||
|
console.log("----------------");
|
||||||
|
|
||||||
// フォロワーを取得
|
// フォロワーを取得
|
||||||
const resMe = await fetch(
|
const resMe = await fetch(
|
||||||
`https://${config.uwuzuServer}/api/me?token=${config.apiToken}`,
|
`https://${config.uwuzuServer}/api/me?token=${config.apiToken}`,
|
||||||
{
|
{
|
||||||
method: "GET",
|
method: "GET",
|
||||||
// uwuzu.netで/api/meのPOSTが死んでいるため簡易的にGET
|
// uwuzu v1.5.4で/api/meのPOSTが死んでいるため簡易的にGET
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
const meData: types.meApi = await resMe.json();
|
const meData: types.meApi = await resMe.json();
|
||||||
|
|
||||||
console.log(meData);
|
console.log(`BOTプロフィール:${meData}`);
|
||||||
|
|
||||||
const followers: Array<string> = meData.follower;
|
const followers: Array<string> = meData.follower;
|
||||||
|
|
||||||
|
@ -35,6 +37,6 @@ export default async function followBack() {
|
||||||
|
|
||||||
const followData: types.followApi = await resFollow.json();
|
const followData: types.followApi = await resFollow.json();
|
||||||
|
|
||||||
console.log(JSON.stringify(followData));
|
console.log(`フォロー:${JSON.stringify(followData)}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,12 @@ if (start < stop) {
|
||||||
|
|
||||||
|
|
||||||
export default async function timeNotice() {
|
export default async function timeNotice() {
|
||||||
if (inRange === false) {
|
console.log("----------------");
|
||||||
|
|
||||||
|
if (inRange) {
|
||||||
|
console.log("時報休止期間のため投稿されませんでした");
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
// 投稿
|
// 投稿
|
||||||
const resUeuse = await fetch(
|
const resUeuse = await fetch(
|
||||||
`https://${config.uwuzuServer}/api/ueuse/create`,
|
`https://${config.uwuzuServer}/api/ueuse/create`,
|
||||||
|
@ -38,6 +43,6 @@ export default async function timeNotice() {
|
||||||
|
|
||||||
const ueuseData: types.ueuseCreateApi = await resUeuse.json();
|
const ueuseData: types.ueuseCreateApi = await resUeuse.json();
|
||||||
|
|
||||||
console.log(JSON.stringify(ueuseData));
|
console.log(`時報投稿:${JSON.stringify(ueuseData)}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,8 @@ import type * as types from "types/types.js";
|
||||||
import config from "../config.js";
|
import config from "../config.js";
|
||||||
|
|
||||||
export default async function weatherNotice() {
|
export default async function weatherNotice() {
|
||||||
|
console.log("----------------");
|
||||||
|
|
||||||
// 仮投稿
|
// 仮投稿
|
||||||
const resUeuse = await fetch(
|
const resUeuse = await fetch(
|
||||||
`https://${config.uwuzuServer}/api/ueuse/create`,
|
`https://${config.uwuzuServer}/api/ueuse/create`,
|
||||||
|
@ -22,7 +24,7 @@ export default async function weatherNotice() {
|
||||||
|
|
||||||
const ueuseData: types.ueuseCreateApi = await resUeuse.json();
|
const ueuseData: types.ueuseCreateApi = await resUeuse.json();
|
||||||
|
|
||||||
console.log(JSON.stringify(ueuseData));
|
console.log(`天気仮投稿:${JSON.stringify(ueuseData)}`);
|
||||||
|
|
||||||
|
|
||||||
// インデックス
|
// インデックス
|
||||||
|
@ -114,6 +116,6 @@ export default async function weatherNotice() {
|
||||||
|
|
||||||
const replyData: types.ueuseCreateApi = await resReply.json();
|
const replyData: types.ueuseCreateApi = await resReply.json();
|
||||||
|
|
||||||
console.log(JSON.stringify(replyData));
|
console.log(`天気投稿:${JSON.stringify(replyData)}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue