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

47 lines
1.2 KiB
JavaScript

import define from "../../define.js";
import { ApiError } from "../../error.js";
import { Channels, ChannelFollowings } from "../../../../models/index.js";
import { genId } from "../../../../misc/gen-id.js";
import { publishUserEvent } from "../../../../services/stream.js";
export const meta = {
tags: [
"channels"
],
requireCredential: true,
kind: "write:channels",
errors: {
noSuchChannel: {
message: "No such channel.",
code: "NO_SUCH_CHANNEL",
id: "c0031718-d573-4e85-928e-10039f1fbb68"
}
}
};
export const paramDef = {
type: "object",
properties: {
channelId: {
type: "string",
format: "misskey:id"
}
},
required: [
"channelId"
]
};
export default define(meta, paramDef, async (ps, user)=>{
const channel = await Channels.findOneBy({
id: ps.channelId
});
if (channel == null) {
throw new ApiError(meta.errors.noSuchChannel);
}
await ChannelFollowings.insert({
id: genId(),
createdAt: new Date(),
followerId: user.id,
followeeId: channel.id
});
publishUserEvent(user.id, "followChannel", channel);
});