Files
GenshinUID/tests/utils.py
MingxuanGame cb24cdbf23 🚨 fix lint warnings
2022-12-28 23:46:56 +08:00

109 lines
3.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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,
},
),
)