115 lines
2.6 KiB
TypeScript
115 lines
2.6 KiB
TypeScript
import * as fs from "fs";
|
|
import config from "../../config.js";
|
|
import type { ueuse } from "types/types.js";
|
|
|
|
const initialFile: Array<string> = [];
|
|
|
|
// コマンド読み込み
|
|
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<string> = JSON.parse(fs.readFileSync("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 mentions: Array<ueuse> = await (await fetch(
|
|
`https://${config.uwuzu.host}/api/ueuse/mentions/`, {
|
|
method: "POST",
|
|
body: JSON.stringify({
|
|
token: config.uwuzu.apiToken,
|
|
}),
|
|
}
|
|
)).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;
|
|
}
|
|
}
|
|
}
|