From 50066cda2045a1475dcb613c410f1bfda3a4cff1 Mon Sep 17 00:00:00 2001 From: nenohi Date: Thu, 8 Aug 2024 06:15:14 +0900 Subject: [PATCH] =?UTF-8?q?enhance(moderation):=20Bot=E5=90=8C=E5=A3=AB?= =?UTF-8?q?=E3=81=A7=E3=81=AF=E3=83=95=E3=82=A9=E3=83=AD=E3=83=BC=E3=83=BB?= =?UTF-8?q?=E3=83=AA=E3=83=97=E3=83=A9=E3=82=A4=E3=81=8C=E3=81=A7=E3=81=8D?= =?UTF-8?q?=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=AB=20(MisskeyIO#678)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/server/api/endpoints/following/create.ts | 10 ++++++++++ .../backend/src/server/api/endpoints/notes/create.ts | 12 ++++++++++++ packages/misskey-js/src/autogen/types.ts | 1 + 3 files changed, 23 insertions(+) diff --git a/packages/backend/src/server/api/endpoints/following/create.ts b/packages/backend/src/server/api/endpoints/following/create.ts index db320e712981..3c27af6049d7 100644 --- a/packages/backend/src/server/api/endpoints/following/create.ts +++ b/packages/backend/src/server/api/endpoints/following/create.ts @@ -58,6 +58,12 @@ export const meta = { code: 'BLOCKED', id: 'c4ab57cc-4e41-45e9-bfd9-584f61e35ce0', }, + + followingAnotherBot: { + message: 'Following another bot account is not allowed.', + code: 'FOLLOWING_BOT_NOT_ALLOWED', + id: '9a61d572-4a95-7f6b-b595-2817d42017b0', + }, }, res: { @@ -100,6 +106,10 @@ export default class extends Endpoint { // eslint- throw err; }); + if ( me.isBot && followee.isBot ) { + throw new ApiError(meta.errors.followingAnotherBot); + } + try { await this.userFollowingService.follow(follower, followee, { withReplies: ps.withReplies }); } catch (e) { diff --git a/packages/backend/src/server/api/endpoints/notes/create.ts b/packages/backend/src/server/api/endpoints/notes/create.ts index 812c1a45b20a..5bff7f718b32 100644 --- a/packages/backend/src/server/api/endpoints/notes/create.ts +++ b/packages/backend/src/server/api/endpoints/notes/create.ts @@ -141,6 +141,13 @@ export const meta = { code: 'CONTAINS_TOO_MANY_MENTIONS', id: '4de0363a-3046-481b-9b0f-feff3e211025', }, + + replyingToAnotherBot: { + message: 'Replying to another bot account is not allowed.', + code: 'REPLY_TO_BOT_NOT_ALLOWED', + id: '66819f28-9525-389d-4b0a-4974363fbbbf', + }, + }, } as const; @@ -375,6 +382,11 @@ export default class extends Endpoint { // eslint- throw new ApiError(meta.errors.cannotReplyToInvisibleNote); } else if (reply.visibility === 'specified' && ps.visibility !== 'specified') { throw new ApiError(meta.errors.cannotReplyToSpecifiedVisibilityNoteWithExtendedVisibility); + } else if ( me.isBot ) { + const replayuser = await this.usersRepository.findOneBy({ id: reply.userId }); + if (replayuser?.isBot) { + throw new ApiError(meta.errors.replyingToAnotherBot); + } } // Check blocking diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts index ddfb6085ca3a..72b84f2dbe46 100644 --- a/packages/misskey-js/src/autogen/types.ts +++ b/packages/misskey-js/src/autogen/types.ts @@ -4910,6 +4910,7 @@ export type components = { canSearchNotes: boolean; canUseTranslator: boolean; canUseDriveFileInSoundSettings: boolean; + canUseReaction: boolean; canHideAds: boolean; driveCapacityMb: number; alwaysMarkNsfw: boolean;