import { ueuse } from "../../../types/types"; import MiQ from "../../../miq/main.js"; import config from "../../../config.js"; import { Reply } from "../main.js"; import { readFileSync, writeFileSync } from "fs"; import { Permission } from "./permission"; export default async function MakeItAQuote(data: ueuse) { if (!config.miq) { console.log("MiQ(管理者無効):", await Reply(` BOT管理者によってMake it a quoteが無効化されています。 そのため\`/miq\`はご利用いただけません。 `, data.uniqid)); return; } let color: boolean; let msg: string; if (data.abi === "color: true") { msg = "カラーモードでMake it a Quoteを生成しました。"; color = true; } else if (data.abi === "color: false") { msg = "モノクロモードでMake it a Quoteを生成しました。"; color = false; } else { msg = "ご指定がないためモノクロモードでMake it a Quoteを生成しました。"; color = false; } const ueuseDataReq = await fetch(`${config.uwuzu.host}/api/ueuse/get`, { method: "POST", cache: "no-store", body: JSON.stringify({ token: config.uwuzu.apiToken, uniqid: data.replyid, }), }); if (ueuseDataReq.status < 200 || ueuseDataReq.status > 299) { return; } const ueuseData: ueuse = (await ueuseDataReq.json())["0"]; console.log(ueuseData); // 権限一覧取得 const permissions: { [user: string]: Permission } = JSON.parse(readFileSync("data/miqPermissions.json", "utf-8")); // 初期化 if (permissions[ueuseData.account.userid] === undefined) { permissions[ueuseData.account.userid] = "consent"; writeFileSync( "data/miqPermissions.json", JSON.stringify(permissions), "utf-8" ); } if ( permissions[ueuseData.account.userid] === "me" && ueuseData.account.userid !== data.account.userid ) { console.log("MiQ(自分自身専用):", await Reply(` 生成元ユーズの投稿者が生成要求者を自分自身のみに設定しています。 しかし、あなたは投稿者自身ではないためこのユーズにMake it a Quoteを使用することはできません。 `, data.uniqid)); return; } if ( permissions[ueuseData.account.userid] === "consent" && data.account.userid !== ueuseData.account.userid ) { console.log("MiQ(許可制):", await Reply(` 生成元ユーズの投稿者が生成要求者を許可制に設定しています。 このユーズにMake it a Quoteを使用するには、 @${ueuseData.account.userid}さんがこのユーズに返信で\`/miq allow\`を使用する必要があります。 `, data.uniqid)); return; } const img = await MiQ({ type: "Base64Data", color: color, text: ueuseData.text, iconURL: ueuseData.account.user_icon, userName: ueuseData.account.username, userID: ueuseData.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: data.nsfw, replyid: data.uniqid, }), cache: "no-store", }); if (req.status < 200 || req.status > 299) { return; } const res = await req.json(); console.log("MiQ:", res); }