1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-23 03:24:20 +00:00

💥 Improve bullets a bit

This commit is contained in:
Steffo 2020-12-28 16:01:08 +01:00
parent 469ab100ad
commit 5bd6e39059
2 changed files with 45 additions and 9 deletions

View file

@ -15,6 +15,9 @@ from . import exc
class Bullet(metaclass=abc.ABCMeta): class Bullet(metaclass=abc.ABCMeta):
""" """
The abstract base class for Bullet data models. The abstract base class for Bullet data models.
**All** methods of :class:`Bullet` can raise :exc:`.exc.BulletException`, such as :class:`.exc.ForbiddenError` or
:class:`.exc.NotSupportedError`.
""" """
@abc.abstractmethod @abc.abstractmethod
@ -33,28 +36,33 @@ class Message(Bullet, metaclass=abc.ABCMeta):
async def text(self) -> t.Optional[str]: async def text(self) -> t.Optional[str]:
""" """
:return: The raw text contents of the message. :return: The raw text contents of the message.
:raises .exc.NotSupportedError: If the frontend does not support text messages.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
async def timestamp(self) -> t.Optional[datetime.datetime]: async def timestamp(self) -> t.Optional[datetime.datetime]:
""" """
:return: The :class:`datetime.datetime` at which the message was sent. :return: The :class:`datetime.datetime` at which the message was sent.
:raises .exc.NotSupportedError: If the frontend does not support timestamps.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
async def reply_to(self) -> t.Optional[Message]: async def reply_to(self) -> t.Optional[Message]:
""" """
:return: The :class:`.Message` this message is a reply to. :return: The :class:`.Message` this message is a reply to.
:raises .exc.NotSupportedError: If the frontend does not support replies.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
async def channel(self) -> t.Optional[Channel]: async def channel(self) -> t.Optional[Channel]:
""" """
:return: The :class:`.Channel` this message was sent in. :return: The :class:`.Channel` this message was sent in.
:raises .exc.NotSupportedError: If the frontend does not support channels. """
raise exc.NotSupportedError()
async def send_reply(self, text: str) -> t.Optional[Message]:
"""
Send a reply to this message in the same channel.
:param text: The text to reply with.
:return: The sent reply message.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
@ -67,21 +75,27 @@ class Channel(Bullet, metaclass=abc.ABCMeta):
async def name(self) -> t.Optional[str]: async def name(self) -> t.Optional[str]:
""" """
:return: The name of the message channel, such as the chat title. :return: The name of the message channel, such as the chat title.
:raises .exc.NotSupportedError: If the frontend does not support channel names.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
async def topic(self) -> t.Optional[str]: async def topic(self) -> t.Optional[str]:
""" """
:return: The topic (description) of the message channel. :return: The topic (description) of the message channel.
:raises .exc.NotSupportedError: If the frontend does not support channel topics / descriptions.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
async def users(self) -> t.List[User]: async def users(self) -> t.List[User]:
""" """
:return: A :class:`list` of :class:`.User` who can read messages sent in the channel. :return: A :class:`list` of :class:`.User` who can read messages sent in the channel.
:raises .exc.NotSupportedError: If the frontend does not support such a feature. """
raise exc.NotSupportedError()
async def send_message(self, text: str) -> t.Optional[Message]:
"""
Send a message in this channel.
:param text: The text to send in the message.
:return: The sent message.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
@ -94,7 +108,6 @@ class User(Bullet, metaclass=abc.ABCMeta):
async def name(self) -> t.Optional[str]: async def name(self) -> t.Optional[str]:
""" """
:return: The user's name. :return: The user's name.
:raises .exc.NotSupportedError: If the frontend does not support usernames.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
@ -105,6 +118,15 @@ class User(Bullet, metaclass=abc.ABCMeta):
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
async def send_message(self, text: str) -> t.Optional[Message]:
"""
Send a private message to the user.
:param text: The text to send in the message.
:return: The sent message.
"""
raise exc.NotSupportedError()
__all__ = ( __all__ = (
"Bullet", "Bullet",

View file

@ -43,12 +43,24 @@ class BulletException(EngineerException):
""" """
class NotSupportedError(BulletException, NotImplementedError): class FrontendError(BulletException):
"""
An error occoured while performing a frontend operation, such as sending a message.
"""
class NotSupportedError(FrontendError, NotImplementedError):
""" """
The requested property isn't available on the current frontend. The requested property isn't available on the current frontend.
""" """
class ForbiddenError(FrontendError):
"""
The bot user does not have sufficient permissions to perform a frontend operation.
"""
__all__ = ( __all__ = (
"EngineerException", "EngineerException",
"WrenchException", "WrenchException",
@ -57,5 +69,7 @@ __all__ = (
"InTeleporterError", "InTeleporterError",
"OutTeleporterError", "OutTeleporterError",
"BulletException", "BulletException",
"FrontendError",
"NotSupportedError", "NotSupportedError",
"ForbiddenError",
) )