Files
2026-07-26 18:25:37 +09:00

45 lines
1.1 KiB
JavaScript

import define from "../../define.js";
import { Users } from "../../../../models/index.js";
import { insertModerationLog } from "../../../../services/insert-moderation-log.js";
import { publishInternalEvent } from "../../../../services/stream.js";
export const meta = {
tags: [
"admin"
],
requireCredential: true,
requireModerator: true
};
export const paramDef = {
type: "object",
properties: {
userId: {
type: "string",
format: "misskey:id"
}
},
required: [
"userId"
]
};
export default define(meta, paramDef, async (ps, me)=>{
const user = await Users.findOneBy({
id: ps.userId
});
if (user == null) {
throw new Error("user not found");
}
if (user.isAdmin) {
throw new Error("cannot silence admin");
}
await Users.update(user.id, {
isSilenced: true
});
publishInternalEvent("userChangeSilencedState", {
id: user.id,
isSilenced: true
});
insertModerationLog(me, "silence", {
targetId: user.id
});
});