feat: NoteReaction クラスを大幅に変更

pull/11/head
yupix 2 years ago
parent 86ddc2f684
commit 4cf23493ff
No known key found for this signature in database
GPG Key ID: 2FF705F5C56D9C06

@ -1,26 +1,21 @@
from __future__ import annotations
from datetime import datetime
from typing import TYPE_CHECKING, Any, Literal, Optional, Union
from typing import TYPE_CHECKING, Literal, Optional, Union
from typing_extensions import Self
from mipac.core.models.note import RawNote, RawReaction, RawRenote
from mipac.core.models.note import RawReaction, RawRenote
from mipac.core.models.poll import RawPoll
from mipac.core.models.reaction import RawNoteReaction
from mipac.core.models.user import RawUser
from mipac.exception import NotExistRequiredData
from mipac.models.lite.user import UserLite
from mipac.types.drive import IDriveFile
from mipac.types.emoji import ICustomEmojiLite
from mipac.types.note import INote, IPoll
from mipac.types.note import INote, INoteReaction, IPoll
if TYPE_CHECKING:
from mipac.actions.note import NoteActions
from mipac.manager.client import ClientActions
from mipac.manager.file import MiFile
from mipac.manager.reaction import ReactionManager
from mipac.models.drive import File
from mipac.models.emoji import Emoji
from mipac.models.user import User
__all__ = (
@ -184,30 +179,6 @@ class Renote:
return await self.__client.note.action.delete(self.__raw_data.id)
class NoteReaction:
def __init__(self, raw_data: RawNoteReaction, *, client: ClientActions):
self.__raw_data = raw_data
self.__client: ClientActions = client
@property
def id(self) -> str:
return self.__raw_data.id
@property
def created_at(self) -> datetime:
return self.__raw_data.created_at
@property
def user(self) -> User:
return self.__client._modeler.create_user_instance(
RawUser(self.__raw_data.user)
)
@property
def reaction(self) -> str:
return self.__raw_data.reaction
class Reaction:
def __init__(self, raw_data: RawReaction, *, client: ClientActions):
self.__raw_data: RawReaction = raw_data
@ -254,13 +225,57 @@ class Reaction:
return self.__client.reaction
class NoteReaction:
"""
Attributes
----------
id : Optional[str], default=None
created_at : Optional[datetime], default=None
type : Optional[str], default=None
user : Optional[RawUser], default=None
"""
__slots__ = (
'id',
'created_at',
'user',
'type',
'__reaction',
)
def __init__(self, reaction: INoteReaction):
self.__reaction: INoteReaction = reaction
@property
def id(self) -> str | None:
return self.__reaction['id']
@property
def created_at(self) -> datetime | None:
return (
datetime.strptime(
self.__reaction['created_at'], '%Y-%m-%dT%H:%M:%S.%fZ'
)
if 'created_at' in self.__reaction
else None
)
@property
def type(self) -> str | None:
return self.__reaction['type']
@property
def user(self) -> UserLite:
return UserLite(self.__reaction['user'])
class Note:
"""
Noteモデル
Parameters
----------
raw_data: RawNote
note: INote
アクションを持たないNoteクラス
client: ClientActions
"""

Loading…
Cancel
Save