results.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. from dataclasses import dataclass
  2. from typing import TypeAlias, Union
  3. from .content import ContentMediaGroup, ContentMediaItem, ContentTextItem
  4. @dataclass(frozen=True)
  5. class Result:
  6. pass
  7. @dataclass(frozen=True)
  8. class CommandInfoResult(Result):
  9. pass
  10. @dataclass(frozen=True)
  11. class CommandStartResult(Result):
  12. pass
  13. @dataclass(frozen=True)
  14. class PostPreparedResult(Result):
  15. content: Union[ContentTextItem, ContentMediaItem, ContentMediaGroup]
  16. moderation_approved: bool
  17. @dataclass(frozen=True)
  18. class ModerationDecisionResult(Result):
  19. is_approved: bool
  20. reason: str
  21. @dataclass(frozen=True)
  22. class ModerationStartedResult(Result):
  23. pass
  24. @dataclass(frozen=True)
  25. class UserBannedResult(Result):
  26. pass
  27. @dataclass(frozen=True)
  28. class UserSubscriptionRequiredResult(Result):
  29. pass
  30. @dataclass(frozen=True)
  31. class UserThrottledResult(Result):
  32. remaining_time: int
  33. @dataclass(frozen=True)
  34. class UserNotRegisteredResult(Result):
  35. pass
  36. Results: TypeAlias = Union[
  37. CommandInfoResult,
  38. CommandStartResult,
  39. PostPreparedResult,
  40. ModerationDecisionResult,
  41. ModerationStartedResult,
  42. UserBannedResult,
  43. UserSubscriptionRequiredResult,
  44. UserThrottledResult,
  45. UserNotRegisteredResult
  46. ]