1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-26 21:14:19 +00:00

🔧 Stuff is actually working now?!

This commit is contained in:
Steffo 2021-03-31 16:13:21 +02:00
parent af5d1ace94
commit 3d055e2495
Signed by: steffo
GPG key ID: 6965406171929D01
12 changed files with 49 additions and 6 deletions

View file

@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "royalnet" name = "royalnet"
version = "6.1.0" version = "6.1.1"
description = "A multipurpose bot framework" description = "A multipurpose bot framework"
authors = ["Stefano Pigozzi <me@steffo.eu>"] authors = ["Stefano Pigozzi <me@steffo.eu>"]
license = "AGPL-3.0-or-later" license = "AGPL-3.0-or-later"

View file

@ -2,6 +2,7 @@ import royalnet.royaltyping as t
import sqlalchemy.orm as so import sqlalchemy.orm as so
import abc import abc
import async_property as ap
from .. import exc from .. import exc
from ._base import BulletContents from ._base import BulletContents
@ -11,6 +12,7 @@ __all__ = (
"t", "t",
"so", "so",
"abc", "abc",
"ap",
"exc", "exc",
"BulletContents", "BulletContents",
) )

View file

@ -7,6 +7,7 @@ class Button(BulletContents, metaclass=abc.ABCMeta):
An abstract class representing a clickable button. An abstract class representing a clickable button.
""" """
@ap.async_property
async def text(self) -> t.Optional[str]: async def text(self) -> t.Optional[str]:
""" """
:return: The text displayed on the button. :return: The text displayed on the button.

View file

@ -13,6 +13,7 @@ class ButtonReaction(Button, metaclass=abc.ABCMeta):
An abstract class representing a clickable reaction to a message. An abstract class representing a clickable reaction to a message.
""" """
@ap.async_property
async def reactions(self) -> t.List["Reaction"]: async def reactions(self) -> t.List["Reaction"]:
""" """
:return: The list of reactions generated by this button. It may vary every time this property is accessed, :return: The list of reactions generated by this button. It may vary every time this property is accessed,
@ -20,6 +21,7 @@ class ButtonReaction(Button, metaclass=abc.ABCMeta):
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
@ap.async_property
async def count(self) -> int: async def count(self) -> int:
""" """
:return: The count of reactions that this button generated. It may vary every time this property is accessed, :return: The count of reactions that this button generated. It may vary every time this property is accessed,
@ -27,6 +29,7 @@ class ButtonReaction(Button, metaclass=abc.ABCMeta):
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
@ap.async_property
async def message(self) -> t.Optional["Message"]: async def message(self) -> t.Optional["Message"]:
""" """
:return: The message this button is attached to. Can be :data:`None`, if the button hasn't been attached to a :return: The message this button is attached to. Can be :data:`None`, if the button hasn't been attached to a

View file

@ -11,18 +11,21 @@ class Channel(BulletContents, metaclass=abc.ABCMeta):
An abstract class representing a channel where messages can be sent. An abstract class representing a channel where messages can be sent.
""" """
@ap.async_property
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.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
@ap.async_property
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.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
@ap.async_property
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.

View file

@ -13,36 +13,42 @@ class Message(BulletContents, metaclass=abc.ABCMeta):
An abstract class representing a chat message. An abstract class representing a chat message.
""" """
@ap.async_property
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.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
@ap.async_property
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.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
@ap.async_property
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.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
@ap.async_property
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.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
@ap.async_property
async def files(self) -> t.Optional[t.List[t.BinaryIO]]: async def files(self) -> t.Optional[t.List[t.BinaryIO]]:
""" """
:return: A :class:`list` of files attached to the message. :return: A :class:`list` of files attached to the message.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
@ap.async_property
async def reactions(self) -> t.List["ButtonReaction"]: async def reactions(self) -> t.List["ButtonReaction"]:
""" """
:return: A :class:`list` of reaction buttons attached to the message. :return: A :class:`list` of reaction buttons attached to the message.

View file

@ -10,12 +10,14 @@ class User(BulletContents, metaclass=abc.ABCMeta):
An abstract class representing a user who can read or send messages in the chat. An abstract class representing a user who can read or send messages in the chat.
""" """
@ap.async_property
async def name(self) -> t.Optional[str]: async def name(self) -> t.Optional[str]:
""" """
:return: The user's name. :return: The user's name.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
@ap.async_property
async def database(self, session: so.Session) -> t.Any: async def database(self, session: so.Session) -> t.Any:
""" """
:param session: A :class:`sqlalchemy.orm.Session` instance to use to fetch the database entry. :param session: A :class:`sqlalchemy.orm.Session` instance to use to fetch the database entry.

View file

@ -2,6 +2,7 @@ import royalnet.royaltyping as t
import sqlalchemy.orm as so import sqlalchemy.orm as so
import abc import abc
import async_property as ap
from .. import exc from .. import exc
from ._base import Projectile from ._base import Projectile
@ -11,6 +12,7 @@ __all__ = (
"t", "t",
"so", "so",
"abc", "abc",
"ap",
"exc", "exc",
"Projectile", "Projectile",
) )

View file

@ -10,6 +10,7 @@ class MessageReceived(Projectile, metaclass=abc.ABCMeta):
An abstract class representing the reception of a single message. An abstract class representing the reception of a single message.
""" """
@ap.async_property
async def message(self) -> "Message": async def message(self) -> "Message":
""" """
:return: The received Message. :return: The received Message.
@ -22,6 +23,7 @@ class MessageEdited(Projectile, metaclass=abc.ABCMeta):
An abstract class representing the editing of a single message. An abstract class representing the editing of a single message.
""" """
@ap.async_property
async def message(self) -> "Message": async def message(self) -> "Message":
""" """
:return: The edited Message. :return: The edited Message.
@ -34,6 +36,7 @@ class MessageDeleted(Projectile, metaclass=abc.ABCMeta):
An abstract class representing the deletion of a single message. An abstract class representing the deletion of a single message.
""" """
@ap.async_property
async def message(self) -> "Message": async def message(self) -> "Message":
""" """
:return: The edited Message. :return: The edited Message.

View file

@ -11,12 +11,14 @@ class Reaction(Projectile, metaclass=abc.ABCMeta):
An abstract class representing a reaction of a single user to a message, generated by clicking on a ButtonReaction. An abstract class representing a reaction of a single user to a message, generated by clicking on a ButtonReaction.
""" """
@ap.async_property
async def user(self) -> "User": async def user(self) -> "User":
""" """
:return: The user who reacted to the message. :return: The user who reacted to the message.
""" """
raise exc.NotSupportedError() raise exc.NotSupportedError()
@ap.async_property
async def button(self) -> "ButtonReaction": async def button(self) -> "ButtonReaction":
""" """
:return: The ButtonReaction that the user pressed to generate this reaction. :return: The ButtonReaction that the user pressed to generate this reaction.

View file

@ -10,6 +10,7 @@ class UserJoined(Projectile, metaclass=abc.ABCMeta):
An abstract class representing an user who just joined the chat channel. An abstract class representing an user who just joined the chat channel.
""" """
@ap.async_property
async def user(self) -> "User": async def user(self) -> "User":
""" """
:return: The user who joined. :return: The user who joined.
@ -22,6 +23,7 @@ class UserLeft(Projectile, metaclass=abc.ABCMeta):
An abstract class representing an user who just left the chat channel. An abstract class representing an user who just left the chat channel.
""" """
@ap.async_property
async def user(self) -> "User": async def user(self) -> "User":
""" """
:return: The user who left. :return: The user who left.
@ -34,6 +36,7 @@ class UserUpdate(Projectile, metaclass=abc.ABCMeta):
An abstract class representing a change in status of an user in the chat channel. An abstract class representing a change in status of an user in the chat channel.
""" """
@ap.async_property
async def user(self) -> "User": async def user(self) -> "User":
""" """
:return: The user who joined. :return: The user who joined.
@ -42,5 +45,7 @@ class UserUpdate(Projectile, metaclass=abc.ABCMeta):
__all__ = ( __all__ = (
"User", "UserJoined",
"UserLeft",
"UserUpdate",
) )

View file

@ -90,12 +90,12 @@ class Command(c.Conversation):
return return
log.debug(f"Getting message of: {projectile!r}") log.debug(f"Getting message of: {projectile!r}")
if not (msg := await projectile.message()): if not (msg := await projectile.message):
log.warning(f"Returning: {projectile!r} has no message") log.warning(f"Returning: {projectile!r} has no message")
return return
log.debug(f"Getting message text of: {msg!r}") log.debug(f"Getting message text of: {msg!r}")
if not (text := await msg.text()): if not (text := await msg.text):
log.debug(f"Returning: {msg!r} has no text") log.debug(f"Returning: {msg!r} has no text")
return return
@ -112,11 +112,25 @@ class Command(c.Conversation):
with _sentry.dispenser().lock(self): with _sentry.dispenser().lock(self):
log.debug(f"Passing args to function: {message_kwargs!r}") log.debug(f"Passing args to function: {message_kwargs!r}")
return await super().run(_sentry=_sentry, _proj=projectile, **base_kwargs, **message_kwargs) return await super().run(
_sentry=_sentry,
_proj=projectile,
_msg=msg,
_text=text,
**base_kwargs,
**message_kwargs
)
else: else:
log.debug(f"Passing args to function: {message_kwargs!r}") log.debug(f"Passing args to function: {message_kwargs!r}")
return await super().run(_sentry=_sentry, _proj=projectile, **base_kwargs, **message_kwargs) return await super().run(
_sentry=_sentry,
_proj=projectile,
_msg=msg,
_text=text,
**base_kwargs,
**message_kwargs
)
def help(self) -> t.Optional[str]: def help(self) -> t.Optional[str]:
""" """