import { meApi, ueuse } from "../../../types/types"; import { readFileSync } from "fs"; import config from "../../../config.js"; import { Reply } from "../main.js"; import { Permission } from "./permission"; import MiQ from "../../../miq/main.js"; export default async function MiQAllow(data: ueuse) { if (!config.miq) { console.log("MiQ(管理者無効):", await Reply(` BOT管理者によってMake it a quoteが無効化されています。 そのため\`/miq\`はご利用いただけません。 `, data.uniqid)); return; } if (data.replyid === "") { console.log("MiQ許可制(誤ユーズ):", await Reply(` 形式が正規ではありません。 `, data.uniqid)); } // 権限一覧取得 const permissions: { [user: string]: Permission } = JSON.parse(readFileSync("data/miqPermissions.json", "utf-8")); if (permissions[data.account.userid] !== "consent") { console.log("MiQ許可制(許可制以外):", await Reply(` あなたに対してのMake it a Quoteの生成要求者が許可制に設定されていません。 そのため、\`/miq allow\`はご利用いただけません。 `, data.uniqid)); return; } const confirmUeuse: ueuse = (await ( await fetch(`${config.uwuzu.host}/api/ueuse/get`, { method: "POST", cache: "no-store", body: JSON.stringify({ token: config.uwuzu.apiToken, uniqid: data.replyid, }), }) ).json())["0"]; const me: meApi = await ( await fetch(`${config.uwuzu.host}/api/me/`, { method: "POST", cache: "no-store", body: JSON.stringify({ token: config.uwuzu.apiToken }), }) ).json() if (confirmUeuse.account.userid !== me.userid) { console.log("MiQ許可制(誤アカウント):", await Reply(` 返信先がこのBOTではありません。 `, data.uniqid)); return; } if (confirmUeuse.replyid === "") { console.log("MiQ許可制(誤ユーズ):", await Reply(` 形式が正規ではありません。 `, data.uniqid)); return; } const requestUeuse: ueuse = (await ( await fetch(`${config.uwuzu.host}/api/ueuse/get`, { method: "POST", cache: "no-store", body: JSON.stringify({ token: config.uwuzu.apiToken, uniqid: confirmUeuse.replyid, }), }) ).json())["0"]; if (requestUeuse.replyid === "") { console.log("MiQ許可制(誤ユーズ):", await Reply(` 形式が正規ではありません。 `, data.uniqid)); return; } const miqUeuse: ueuse = (await ( await fetch(`${config.uwuzu.host}/api/ueuse/get`, { method: "POST", cache: "no-store", body: JSON.stringify({ token: config.uwuzu.apiToken, uniqid: requestUeuse.replyid, }), }) ).json())["0"]; let color: boolean; let msg: string; if (requestUeuse.abi === "color: true") { msg = "カラーモードでMake it a Quoteを生成しました。"; color = true; } else if (requestUeuse.abi === "color: false") { msg = "モノクロモードでMake it a Quoteを生成しました。"; color = false; } else { msg = "ご指定がないためモノクロモードでMake it a Quoteを生成しました。"; color = false; } const img = await MiQ({ type: "Base64Data", color: color, text: miqUeuse.text, iconURL: miqUeuse.account.user_icon, userName: miqUeuse.account.username, userID: miqUeuse.account.userid, }); const req = await fetch(`${config.uwuzu.host}/api/ueuse/create`, { method: "POST", body: JSON.stringify({ token: config.uwuzu.apiToken, text: msg, image1: img, nsfw: miqUeuse.nsfw, replyid: data.uniqid, }), cache: "no-store", }); const res = await req.json(); console.log("MiQ(許可制):", res); }