From 20b299c75802aefbf7198a80631a1fe7a1f9de9e Mon Sep 17 00:00:00 2001 From: Mix Date: Sun, 31 Jan 2021 17:01:04 +0800 Subject: [PATCH] :children_crossing: add .approve and .reject method for request event in mirai adapter --- nonebot/adapters/mirai/event/request.py | 71 +++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/nonebot/adapters/mirai/event/request.py b/nonebot/adapters/mirai/event/request.py index 44a70c17..27fea4d8 100644 --- a/nonebot/adapters/mirai/event/request.py +++ b/nonebot/adapters/mirai/event/request.py @@ -1,7 +1,13 @@ +from typing import TYPE_CHECKING +from typing_extensions import Literal + from pydantic import Field from .base import Event +if TYPE_CHECKING: + from ..bot import MiraiBot as Bot + class RequestEvent(Event): event_id: int = Field(alias='eventId') @@ -13,14 +19,79 @@ class NewFriendRequestEvent(RequestEvent): from_id: int = Field(alias='fromId') group_id: int = Field(0, alias='groupId') + async def approve(self, bot: "Bot"): + return await bot.api.post('/resp/newFriendRequestEvent', + params={ + 'eventId': self.event_id, + 'groupId': self.group_id, + 'fromId': self.from_id, + 'operate': 0 + }) + + async def reject(self, + bot: "Bot", + operate: Literal[1, 2] = 1, + message: str = ''): + assert operate > 0 + return await bot.api.post('/resp/newFriendRequestEvent', + params={ + 'eventId': self.event_id, + 'groupId': self.group_id, + 'fromId': self.from_id, + 'operate': operate, + 'message': message + }) + class MemberJoinRequestEvent(RequestEvent): from_id: int = Field(alias='fromId') group_id: int = Field(alias='groupId') group_name: str = Field(alias='groupName') + async def approve(self, bot: "Bot"): + return await bot.api.post('/resp/memberJoinRequestEvent', + params={ + 'eventId': self.event_id, + 'groupId': self.group_id, + 'fromId': self.from_id, + 'operate': 0 + }) + + async def reject(self, + bot: "Bot", + operate: Literal[1, 2, 3, 4] = 1, + message: str = ''): + assert operate > 0 + return await bot.api.post('/resp/memberJoinRequestEvent', + params={ + 'eventId': self.event_id, + 'groupId': self.group_id, + 'fromId': self.from_id, + 'operate': operate, + 'message': message + }) + class BotInvitedJoinGroupRequestEvent(RequestEvent): from_id: int = Field(alias='fromId') group_id: int = Field(alias='groupId') group_name: str = Field(alias='groupName') + + async def approve(self, bot: "Bot"): + return await bot.api.post('/resp/botInvitedJoinGroupRequestEvent', + params={ + 'eventId': self.event_id, + 'groupId': self.group_id, + 'fromId': self.from_id, + 'operate': 0 + }) + + async def reject(self, bot: "Bot", message: str = ""): + return await bot.api.post('/resp/botInvitedJoinGroupRequestEvent', + params={ + 'eventId': self.event_id, + 'groupId': self.group_id, + 'fromId': self.from_id, + 'operate': 1, + 'message': message + })