From 71790c6f9d83fc4f738d03821aa48408f0956e08 Mon Sep 17 00:00:00 2001 From: XYCode Kerman Date: Fri, 21 Jun 2024 23:54:13 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20(bot.py)=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=8F=91=E9=80=81=E7=BE=A4=E6=B6=88=E6=81=AF=E3=80=81=E7=A7=81?= =?UTF-8?q?=E8=81=8A=E6=B6=88=E6=81=AF=E7=9A=84=E7=AE=80=E4=BE=BF=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mirai_onebot/bot.py | 68 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/mirai_onebot/bot.py b/mirai_onebot/bot.py index 746b4f8..c114d4e 100644 --- a/mirai_onebot/bot.py +++ b/mirai_onebot/bot.py @@ -1,12 +1,19 @@ import asyncio import logging -from typing import Callable, Optional, Type, TypeVar, Union +from typing import Callable, List, Optional, Type, TypeVar, Union from mirai_onebot.adapters.base import Adapter from mirai_onebot.api.interfaces.base import BotSelf, Request, Response +from mirai_onebot.api.interfaces.message import (SendMessageRequest, + SendMessageRequestParams, + SendMessageResponse) from mirai_onebot.event import SLUG_TO_EVENT from mirai_onebot.event.bus import EventBus from mirai_onebot.event.event_base import EventBase +from mirai_onebot.message.message_chain import MessageChain +from mirai_onebot.message.message_components import (MessageComponent, + MessageComponentsType, + Text) logger = logging.getLogger(__name__) ResponseT = TypeVar('ResponseT', bound=Response) @@ -119,3 +126,62 @@ async def call(self, request: Request, response_type: Type[ResponseT], auto_set_ request.self = BotSelf(platform=self.bot_platform, user_id=self.bot_user_id) return await self.adapter.call(request, response_type) + + # 简化 API + async def send_group_message(self, group_id: str, message: Union[MessageChain, str, List[str], List[MessageComponentsType]]): + """发送私聊消息 + + Args: + group_id (str): 群 id + message (Union[MessageChain, str, List[str], List[MessageComponentsType]]): 消息 + + Returns: + SendMessageResponseData: 返回值 + """ + if isinstance(message, str): + message_chain = MessageChain([Text(message)]) + elif isinstance(message, list): + message_chain = MessageChain([ + x if isinstance(x, MessageComponent) else Text(x) + for x in message + ]) + + return (await self.call( + request=SendMessageRequest( + params=SendMessageRequestParams( + detail_type='group', + group_id=group_id, + message=message_chain.to_dict() + ) + ), + response_type=SendMessageResponse + )).data + + async def send_private_message(self, user_id: str, message: Union[MessageChain, str, List[str], List[MessageComponentsType]]): + """发送私聊消息 + + Args: + user_id (str): 用户 id + message (Union[MessageChain, str, List[str], List[MessageComponentsType]]): 消息 + + Returns: + SendMessageResponseData: 返回值 + """ + if isinstance(message, str): + message_chain = MessageChain([Text(message)]) + elif isinstance(message, list): + message_chain = MessageChain([ + x if isinstance(x, MessageComponent) else Text(x) + for x in message + ]) + + return await self.call( + request=SendMessageRequest( + params=SendMessageRequestParams( + detail_type='private', + user_id=user_id, + message=message_chain.to_dict() + ) + ), + response_type=SendMessageResponse + )