Module mirai.models.entities
此模块提供实体和配置项模型。
Expand source code
# -*- coding: utf-8 -*-
"""
此模块提供实体和配置项模型。
"""
import abc
from datetime import datetime
from enum import Enum
from typing import TYPE_CHECKING, Optional
if TYPE_CHECKING:
from typing_extensions import Literal
else:
try:
from typing import Literal
except ImportError:
from typing_extensions import Literal
from mirai.models.base import MiraiBaseModel
class Entity(MiraiBaseModel):
"""实体,表示一个用户或群。"""
id: int
"""QQ 号或群号。"""
@abc.abstractmethod
def get_avatar_url(self) -> str:
"""头像图片链接。"""
@abc.abstractmethod
def get_name(self) -> str:
"""名称。"""
class Friend(Entity):
"""好友。"""
id: int
"""QQ 号。"""
nickname: Optional[str]
"""昵称。"""
remark: Optional[str]
"""备注。"""
def get_avatar_url(self) -> str:
return f'http://q4.qlogo.cn/g?b=qq&nk={self.id}&s=140'
def get_name(self) -> str:
return self.nickname or self.remark or ''
class Permission(str, Enum):
"""群成员身份权限。"""
Member = "MEMBER"
"""成员。"""
Administrator = "ADMINISTRATOR"
"""管理员。"""
Owner = "OWNER"
"""群主。"""
def __repr__(self) -> str:
return repr(self.value)
class Group(Entity):
"""群。"""
id: int
"""群号。"""
name: str
"""群名称。"""
permission: Permission
"""Bot 在群中的权限。"""
def get_avatar_url(self) -> str:
return f'https://p.qlogo.cn/gh/{self.id}/{self.id}/'
def get_name(self) -> str:
return self.name
class GroupMember(Entity):
"""群成员。"""
id: int
"""QQ 号。"""
member_name: str
"""群成员名称。"""
permission: Permission
"""Bot 在群中的权限。"""
group: Group
"""群。"""
special_title: str = ''
"""群头衔。"""
join_timestamp: datetime = datetime.utcfromtimestamp(0)
"""加入群的时间。"""
last_speak_timestamp: datetime = datetime.utcfromtimestamp(0)
"""最后一次发言的时间。"""
mute_time_remaining: int = 0
"""禁言剩余时间。"""
def get_avatar_url(self) -> str:
return f'http://q4.qlogo.cn/g?b=qq&nk={self.id}&s=140'
def get_name(self) -> str:
return self.member_name
class Client(Entity):
"""来自其他客户端的用户。"""
id: int
"""识别 id。"""
platform: str
"""来源平台。"""
def get_avatar_url(self) -> str:
raise NotImplementedError
def get_name(self) -> str:
return self.platform
class Subject(MiraiBaseModel):
"""另一种实体类型表示。"""
id: int
"""QQ 号或群号。"""
kind: Literal['Friend', 'Group', 'Stranger']
"""类型。"""
class Config(MiraiBaseModel):
"""配置项类型。"""
def modify(self, **kwargs) -> 'Config':
"""修改部分设置。"""
for k, v in kwargs.items():
if k in self.__fields__:
setattr(self, k, v)
else:
raise ValueError(f'未知配置项: {k}')
return self
class GroupConfigModel(Config):
"""群配置。"""
name: str
"""群名称。"""
confess_talk: bool
"""是否允许坦白说。"""
allow_member_invite: bool
"""是否允许成员邀请好友入群。"""
auto_approve: bool
"""是否开启自动审批入群。"""
anonymous_chat: bool
"""是否开启匿名聊天。"""
announcement: str = ''
"""群公告。"""
class MemberInfoModel(Config, GroupMember):
"""群成员信息。"""
__all__ = [
'Entity',
'Friend',
'Group',
'GroupMember',
'Permission',
'Sender',
'Subject',
'Config',
'GroupConfigModel',
'MemberInfoModel',
]
Classes
class Config (*args, **kwargs)
-
配置项类型。
Expand source code
class Config(MiraiBaseModel): """配置项类型。""" def modify(self, **kwargs) -> 'Config': """修改部分设置。""" for k, v in kwargs.items(): if k in self.__fields__: setattr(self, k, v) else: raise ValueError(f'未知配置项: {k}') return self
Ancestors
- MiraiBaseModel
- pydantic.main.BaseModel
- pydantic.utils.Representation
Subclasses
Methods
def modify(self, **kwargs) ‑> Config
-
修改部分设置。
Expand source code
def modify(self, **kwargs) -> 'Config': """修改部分设置。""" for k, v in kwargs.items(): if k in self.__fields__: setattr(self, k, v) else: raise ValueError(f'未知配置项: {k}') return self
class Entity (*args, **kwargs)
-
实体,表示一个用户或群。
Expand source code
class Entity(MiraiBaseModel): """实体,表示一个用户或群。""" id: int """QQ 号或群号。""" @abc.abstractmethod def get_avatar_url(self) -> str: """头像图片链接。""" @abc.abstractmethod def get_name(self) -> str: """名称。"""
Ancestors
- MiraiBaseModel
- pydantic.main.BaseModel
- pydantic.utils.Representation
Subclasses
- mirai.models.entities.Client
- Friend
- Group
- GroupMember
Class variables
var id : int
-
QQ 号或群号。
Methods
def get_avatar_url(self) ‑> str
-
头像图片链接。
Expand source code
@abc.abstractmethod def get_avatar_url(self) -> str: """头像图片链接。"""
def get_name(self) ‑> str
-
名称。
Expand source code
@abc.abstractmethod def get_name(self) -> str: """名称。"""
class Friend (*args, **kwargs)
-
好友。
Expand source code
class Friend(Entity): """好友。""" id: int """QQ 号。""" nickname: Optional[str] """昵称。""" remark: Optional[str] """备注。""" def get_avatar_url(self) -> str: return f'http://q4.qlogo.cn/g?b=qq&nk={self.id}&s=140' def get_name(self) -> str: return self.nickname or self.remark or ''
Ancestors
- Entity
- MiraiBaseModel
- pydantic.main.BaseModel
- pydantic.utils.Representation
Class variables
var nickname : Optional[str]
-
昵称。
var remark : Optional[str]
-
备注。
Inherited members
class Group (*args, **kwargs)
-
群。
Expand source code
class Group(Entity): """群。""" id: int """群号。""" name: str """群名称。""" permission: Permission """Bot 在群中的权限。""" def get_avatar_url(self) -> str: return f'https://p.qlogo.cn/gh/{self.id}/{self.id}/' def get_name(self) -> str: return self.name
Ancestors
- Entity
- MiraiBaseModel
- pydantic.main.BaseModel
- pydantic.utils.Representation
Class variables
var name : str
-
群名称。
var permission : Permission
-
Bot 在群中的权限。
Inherited members
class GroupConfigModel (*args, **kwargs)
-
群配置。
Expand source code
class GroupConfigModel(Config): """群配置。""" name: str """群名称。""" confess_talk: bool """是否允许坦白说。""" allow_member_invite: bool """是否允许成员邀请好友入群。""" auto_approve: bool """是否开启自动审批入群。""" anonymous_chat: bool """是否开启匿名聊天。""" announcement: str = '' """群公告。"""
Ancestors
- Config
- MiraiBaseModel
- pydantic.main.BaseModel
- pydantic.utils.Representation
Class variables
var allow_member_invite : bool
-
是否允许成员邀请好友入群。
var announcement : str
-
群公告。
var anonymous_chat : bool
-
是否开启匿名聊天。
var auto_approve : bool
-
是否开启自动审批入群。
var confess_talk : bool
-
是否允许坦白说。
var name : str
-
群名称。
Inherited members
class GroupMember (*args, **kwargs)
-
群成员。
Expand source code
class GroupMember(Entity): """群成员。""" id: int """QQ 号。""" member_name: str """群成员名称。""" permission: Permission """Bot 在群中的权限。""" group: Group """群。""" special_title: str = '' """群头衔。""" join_timestamp: datetime = datetime.utcfromtimestamp(0) """加入群的时间。""" last_speak_timestamp: datetime = datetime.utcfromtimestamp(0) """最后一次发言的时间。""" mute_time_remaining: int = 0 """禁言剩余时间。""" def get_avatar_url(self) -> str: return f'http://q4.qlogo.cn/g?b=qq&nk={self.id}&s=140' def get_name(self) -> str: return self.member_name
Ancestors
- Entity
- MiraiBaseModel
- pydantic.main.BaseModel
- pydantic.utils.Representation
Subclasses
Class variables
var group : Group
-
群。
var join_timestamp : datetime.datetime
-
加入群的时间。
var last_speak_timestamp : datetime.datetime
-
最后一次发言的时间。
var member_name : str
-
群成员名称。
var mute_time_remaining : int
-
禁言剩余时间。
var permission : Permission
-
Bot 在群中的权限。
var special_title : str
-
群头衔。
Inherited members
class MemberInfoModel (*args, **kwargs)
-
群成员信息。
Expand source code
class MemberInfoModel(Config, GroupMember): """群成员信息。"""
Ancestors
- Config
- GroupMember
- Entity
- MiraiBaseModel
- pydantic.main.BaseModel
- pydantic.utils.Representation
Inherited members
class Permission (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
群成员身份权限。
Expand source code
class Permission(str, Enum): """群成员身份权限。""" Member = "MEMBER" """成员。""" Administrator = "ADMINISTRATOR" """管理员。""" Owner = "OWNER" """群主。""" def __repr__(self) -> str: return repr(self.value)
Ancestors
- builtins.str
- enum.Enum
Class variables
var Administrator
-
管理员。
var Member
-
成员。
var Owner
-
群主。
class Sender (value, names=None, *, module=None, qualname=None, type=None, start=1)
-
群成员身份权限。
Expand source code
class Permission(str, Enum): """群成员身份权限。""" Member = "MEMBER" """成员。""" Administrator = "ADMINISTRATOR" """管理员。""" Owner = "OWNER" """群主。""" def __repr__(self) -> str: return repr(self.value)
Ancestors
- builtins.str
- enum.Enum
Class variables
var Administrator
-
管理员。
var Member
-
成员。
var Owner
-
群主。
class Subject (*args, **kwargs)
-
另一种实体类型表示。
Expand source code
class Subject(MiraiBaseModel): """另一种实体类型表示。""" id: int """QQ 号或群号。""" kind: Literal['Friend', 'Group', 'Stranger'] """类型。"""
Ancestors
- MiraiBaseModel
- pydantic.main.BaseModel
- pydantic.utils.Representation
Class variables
var id : int
-
QQ 号或群号。
var kind : Literal['Friend', 'Group', 'Stranger']
-
类型。