157 lines
4.4 KiB
TypeScript
157 lines
4.4 KiB
TypeScript
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 confirmUeuseReq = await fetch(`${config.uwuzu.host}/api/ueuse/get`, {
|
||
method: "POST",
|
||
cache: "no-store",
|
||
body: JSON.stringify({
|
||
token: config.uwuzu.apiToken,
|
||
uniqid: data.replyid,
|
||
}),
|
||
});
|
||
|
||
if (confirmUeuseReq.status < 200 || confirmUeuseReq.status > 299) {
|
||
return;
|
||
}
|
||
|
||
const confirmUeuse: ueuse = (await confirmUeuseReq.json())["0"];
|
||
|
||
const meReq = await fetch(`${config.uwuzu.host}/api/me/`, {
|
||
method: "POST",
|
||
cache: "no-store",
|
||
body: JSON.stringify({
|
||
token: config.uwuzu.apiToken
|
||
}),
|
||
});
|
||
|
||
if (meReq.status < 200 || meReq.status > 299) {
|
||
return;
|
||
}
|
||
|
||
const me: meApi = await meReq.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 requestUeuseReq = await fetch(`${config.uwuzu.host}/api/ueuse/get`, {
|
||
method: "POST",
|
||
cache: "no-store",
|
||
body: JSON.stringify({
|
||
token: config.uwuzu.apiToken,
|
||
uniqid: confirmUeuse.replyid,
|
||
}),
|
||
});
|
||
|
||
if (requestUeuseReq.status < 200 || requestUeuseReq.status > 299) {
|
||
return;
|
||
}
|
||
|
||
const requestUeuse: ueuse = (await requestUeuseReq.json())["0"];
|
||
|
||
if (requestUeuse.replyid === "") {
|
||
console.log("MiQ許可制(誤ユーズ):", await Reply(`
|
||
形式が正規ではありません。
|
||
`, data.uniqid));
|
||
return;
|
||
}
|
||
|
||
const miqUeuseReq = await fetch(`${config.uwuzu.host}/api/ueuse/get`, {
|
||
method: "POST",
|
||
cache: "no-store",
|
||
body: JSON.stringify({
|
||
token: config.uwuzu.apiToken,
|
||
uniqid: requestUeuse.replyid,
|
||
}),
|
||
});
|
||
|
||
if (miqUeuseReq.status < 200 || miqUeuseReq.status > 299) {
|
||
return;
|
||
}
|
||
|
||
const miqUeuse: ueuse = (await miqUeuseReq.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",
|
||
});
|
||
|
||
if (req.status < 200 || req.status > 299) {
|
||
return;
|
||
}
|
||
|
||
const res = await req.json();
|
||
|
||
console.log("MiQ(許可制):", res);
|
||
}
|