# https://gist.github.com/38e4df0f6f7879d9324b15ac910229ac from typing import Any, Dict, Optional, cast from nonebot.adapters.onebot.v11 import Adapter, Message from nonebot.adapters.onebot.v11.event import Event, Sender def make_sender( user_id: int = 10001, nickname: str = "test", sex: str = "unknown", age: int = 1, card: str = "test", area: str = "北京", level: str = "1", role: str = "owner", title: str = "test", ): """ :说明: 生成发送人信息类型。 https://github.com/botuniverse/onebot-11/blob/master/event/message.md :参数: * ``user_id: int = 10001``: 发送者 QQ 号。 * ``nickname: str = "test"``: 昵称。 * ``sex: str = "unknown"``: 性别,`male` 或 `female` 或 `unknown`。 * ``age: int = 1``: 年龄。 * ``card: str = "test"``: 群名片/备注。 * ``area: str = "北京"``: 地区。 * ``level: str = "1"``: 成员等级。 * ``role: str = "owner"``: 角色,`owner` 或 `admin` 或 `member`。 * ``title: str = "test"``: 专属头衔。 """ return Sender( user_id=user_id, nickname=nickname, sex=sex, age=age, card=card, area=area, level=level, role=role, title=title, ) def make_event( sender: Sender = make_sender(), message: Optional[Message] = None, time: int = 0, self_id: int = 10000, post_type: str = "message", message_type: str = "private", sub_type: str = "friend", group_id: int = 10002, anonymous: Optional[Dict[str, Any]] = None, message_id: int = 1, user_id: int = 10001, font: int = 0, **kwargs, ) -> Event: """ :说明: 根据消息类型自动生成事件。 https://github.com/botuniverse/onebot-11/blob/master/event/message.md :参数: * ``time: int = 0``: 事件发生的时间戳。 * ``self_id: int = 10000``: 收到事件的机器人 QQ 号。 * ``post_type: str = "message"``: 上报类型。 * ``message_type: str = "private"``: 消息类型,`friend` 是私聊消息,`group是群消息`。 * ``sub_type: str = "friend"``: 消息子类型: * 私聊消息:如果是好友则是 `friend`,如果是群临时会话则是 `group`。 * 群消息:正常消息是 normal,匿名消息是 anonymous,系统提示(如「管理员已禁止群内匿名聊天」)是 notice * ``message_id: int = 1``: 消息 ID。 * ``user_id: int = 10001``: 发送者 QQ 号。 * ``message: Message = None``: 消息内容。 * ``font: int = 0``: 字体。 * ``sender: Sender = None``: 发送人信息。 """ raw_message = message.extract_plain_text() if message else '' return cast( Event, Adapter.json_to_event( { "time": time, "self_id": self_id, "post_type": post_type, "message_type": message_type, "sub_type": sub_type, "message_id": message_id, "user_id": user_id, "message": message, "raw_message": raw_message, "font": font, "sender": sender, "group_id": group_id, "anonymous": anonymous, **kwargs, }, ), )