text: from typing import TYPE_CHECKING
  
  from pydantic import Field
  from typing_extensions import Literal
  
  from .base import Event
  
  if TYPE_CHECKING:
      from ..bot import Bot
  
  
  class RequestEvent(Event):
      """请求事件基类"""
      event_id: int = Field(alias='eventId')
      message: str
      nick: str
  
  
  class NewFriendRequestEvent(RequestEvent):
      """添加好友申请"""
      from_id: int = Field(alias='fromId')
      group_id: int = Field(0, alias='groupId')
  
      async def approve(self, bot: "Bot"):
          """
          :说明:
  
            通过此人的好友申请
  
          :参数:
  
            * ``bot: 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 = ''):
          """
          :说明:
  
            拒绝此人的好友申请 
  
          :参数:
  
            * ``bot: Bot``: 当前的 ``Bot`` 对象
            * ``operate: Literal[1, 2]``: 响应的操作类型
  
              * ``1``: 拒绝添加好友
              * ``2``: 拒绝添加好友并添加黑名单，不再接收该用户的好友申请
  
            * ``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):
      """用户入群申请（Bot需要有管理员权限）"""
      from_id: int = Field(alias='fromId')
      group_id: int = Field(alias='groupId')
      group_name: str = Field(alias='groupName')
  
      async def approve(self, bot: "Bot"):
          """
          :说明:
  
            通过此人的加群申请
  
          :参数:
  
            * ``bot: 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 = ''):
          """
          :说明:
  
            拒绝(忽略)此人的加群申请
  
          :参数:
  
            * ``bot: Bot``: 当前的 ``Bot`` 对象
            * ``operate: Literal[1, 2, 3, 4]``: 响应的操作类型
  
              * ``1``: 拒绝入群
              * ``2``: 忽略请求
              * ``3``: 拒绝入群并添加黑名单，不再接收该用户的入群申请
              * ``4``: 忽略入群并添加黑名单，不再接收该用户的入群申请
  
            * ``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):
      """Bot被邀请入群申请"""
      from_id: int = Field(alias='fromId')
      group_id: int = Field(alias='groupId')
      group_name: str = Field(alias='groupName')
  
      async def approve(self, bot: "Bot"):
          """
          :说明:
  
            通过这份被邀请入群申请 
  
          :参数:
  
            * ``bot: 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 = ""):
          """
          :说明:
  
            拒绝这份被邀请入群申请 
  
          :参数:
  
            * ``bot: 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
                                    })
  