import * as fs from "fs"; import config from "../../config.js"; import type { ueuse } from "types/types.js"; const initialFile: Array = []; // コマンド読み込み import Follow from "./follow.js"; import UnFollow from "./unfollow.js"; import Weather from "./weather.js"; // 初期化 if (!fs.existsSync("logs/alreadyCommands.json")) { fs.writeFileSync( "logs/alreadyCommands.json", JSON.stringify(initialFile), "utf-8", ); } // 対応済みユーズ一覧 const alreadyCommands: Array = JSON.parse(fs.readFileSync("logs/alreadyCommands.json", "utf-8")); function cutAfterChar(str: string, char: string) { const index = str.indexOf(char); if (index === -1) { return ""; } return str.substring(index + 1); } async function Reply(text: string, reply: string) { const req = await fetch(`https://${config.uwuzu.host}/api/ueuse/create`, { method: "POST", body: JSON.stringify({ token: config.uwuzu.apiToken, text: text, replyid: reply, }), }); const res = await req.json(); return res; } function alreadyAdd(data: string) { alreadyCommands[alreadyCommands.length] = data; fs.writeFileSync( "logs/alreadyCommands.json", JSON.stringify(alreadyCommands), "utf-8", ); } export default async function Commands() { const mentionsReq = await fetch( `https://${config.uwuzu.host}/api/ueuse/mentions`, { method: "POST", body: JSON.stringify({ token: config.uwuzu.apiToken, }), } ); const mentions: Array = await mentionsReq.json(); console.log("----------------"); console.log("コマンド処理"); for (let i = 0; i < mentions.length; i++) { const data = mentions[i]; // 除外ユーズ if (alreadyCommands.indexOf(data.uniqid) !== -1) { break; } if (data.text.charAt(0) === "!") { break; } // コマンド処理 console.log("--------"); const commandName = cutAfterChar(data.text, "/"); switch (commandName) { case "follow": alreadyAdd(data.uniqid); Follow(data); break; case "unfollow": alreadyAdd(data.uniqid); UnFollow(data); break; case "weather": alreadyAdd(data.uniqid); Weather(data); break; default: alreadyAdd(data.uniqid); const reply = await Reply(` 不明なコマンドです。 コマンド実行を除外する場合は1文字目に\`!\`を入れてください。 `, data.uniqid); console.log("未対応コマンド: ", reply); break; } } }