mirror of
				https://github.com/nonebot/nonebot2.git
				synced 2025-10-30 22:46:40 +00:00 
			
		
		
		
	✨ implement group and private message
This commit is contained in:
		| @@ -1,7 +1,7 @@ | ||||
| import inspect | ||||
| import json | ||||
|  | ||||
| from typing import Any, List, Literal, Optional, Type | ||||
| from typing import Any, List, Literal, Optional, Type, Union | ||||
| from pygtrie import StringTrie | ||||
| from pydantic import BaseModel, root_validator, Field | ||||
|  | ||||
| @@ -101,11 +101,27 @@ class EventMessage(BaseModel): | ||||
|         return values | ||||
|  | ||||
|  | ||||
| class GroupEventMessage(EventMessage): | ||||
|     chat_type: Literal["group"] | ||||
|  | ||||
|  | ||||
| class PrivateEventMessage(EventMessage): | ||||
|     chat_type: Literal["p2p"] | ||||
|  | ||||
|  | ||||
| class MessageEventDetail(BaseModel): | ||||
|     sender: Sender | ||||
|     message: EventMessage | ||||
|  | ||||
|  | ||||
| class GroupMessageEventDetail(MessageEventDetail): | ||||
|     message: GroupEventMessage | ||||
|  | ||||
|  | ||||
| class PrivateMessageEventDetail(MessageEventDetail): | ||||
|     message: PrivateEventMessage | ||||
|  | ||||
|  | ||||
| class MessageEvent(Event): | ||||
|     __event__ = "im.message.receive_v1" | ||||
|     event: MessageEventDetail | ||||
| @@ -116,13 +132,15 @@ class MessageEvent(Event): | ||||
|  | ||||
|     @overrides(Event) | ||||
|     def get_event_name(self) -> str: | ||||
|         return f"{self.get_type()}.{super().get_type()}" | ||||
|         return f"{self.get_type()}.{self.event.message.chat_type}" | ||||
|  | ||||
|     @overrides(Event) | ||||
|     def get_event_description(self) -> str: | ||||
|         #TODO:换成GroupId | ||||
|         return ( | ||||
|             f"Message[{super().get_type()}]" | ||||
|             f" {self.event.message.message_id} from {self.event.sender.sender_id.user_id}" | ||||
|             f" {self.event.message.message_id} from {self.get_user_id()}" | ||||
|             f"@[{self.event.message.chat_type}:{self.event.message.chat_id}]" | ||||
|             f" {self.event.message.content}") | ||||
|  | ||||
|     @overrides(Event) | ||||
| @@ -135,11 +153,21 @@ class MessageEvent(Event): | ||||
|  | ||||
|     @overrides(Event) | ||||
|     def get_user_id(self) -> str: | ||||
|         return self.event.sender.sender_id.user_id | ||||
|         return self.event.sender.sender_id.union_id | ||||
|  | ||||
|     @overrides(Event) | ||||
|     def get_session_id(self) -> str: | ||||
|         return self.event.sender.sender_id.user_id | ||||
|         return f"{self.event.message.chat_type}_{self.event.message.chat_id}_{self.get_user_id()}" | ||||
|  | ||||
|  | ||||
| class GroupMessageEvent(MessageEvent): | ||||
|     __event__ = "im.message.receive_v1.group" | ||||
|     event: GroupMessageEventDetail | ||||
|  | ||||
|  | ||||
| class PrivateMessageEvent(MessageEvent): | ||||
|     __event__ = "im.message.receive_v1.private" | ||||
|     event: PrivateMessageEventDetail | ||||
|  | ||||
|  | ||||
| class MessageReader(BaseModel): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user