nonebot2/nonebot/adapters/mirai/event/request.py

98 lines
3.8 KiB
Python
Raw Normal View History

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')
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"):
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
})