Coverage for polar/integrations/discord/webhook.py: 98%

46 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-12-05 17:15 +0000

1from typing import NotRequired, TypedDict 1a

2 

3from polar.config import settings 1a

4 

5 

6class DiscordEmbedFooter(TypedDict): 1a

7 text: str 1a

8 icon_url: NotRequired[str] 1a

9 proxy_icon_url: NotRequired[str] 1a

10 

11 

12class DiscordEmbedImage(TypedDict): 1a

13 url: str 1a

14 proxy_url: NotRequired[str] 1a

15 height: NotRequired[int] 1a

16 width: NotRequired[int] 1a

17 

18 

19class DiscordEmbedThumbnail(DiscordEmbedImage): 1a

20 pass 1a

21 

22 

23class DiscordEmbedVideo(DiscordEmbedImage): 1a

24 pass 1a

25 

26 

27class DiscordEmbedProvider(TypedDict): 1a

28 name: NotRequired[str] 1a

29 url: NotRequired[str] 1a

30 

31 

32class DiscordEmbedAuthor(TypedDict): 1a

33 name: str 1a

34 url: NotRequired[str] 1a

35 icon_url: NotRequired[str] 1a

36 proxy_icon_url: NotRequired[str] 1a

37 

38 

39class DiscordEmbedField(TypedDict): 1a

40 name: str 1a

41 value: str 1a

42 inline: NotRequired[bool] 1a

43 

44 

45class DiscordEmbed(TypedDict): 1a

46 title: NotRequired[str] 1a

47 type: NotRequired[str] 1a

48 description: NotRequired[str] 1a

49 url: NotRequired[str] 1a

50 timestamp: NotRequired[str] 1a

51 color: NotRequired[int] 1a

52 footer: NotRequired[DiscordEmbedFooter] 1a

53 image: NotRequired[DiscordEmbedImage] 1a

54 thumbnail: NotRequired[DiscordEmbedThumbnail] 1a

55 video: NotRequired[DiscordEmbedVideo] 1a

56 provider: NotRequired[DiscordEmbedProvider] 1a

57 author: NotRequired[DiscordEmbedAuthor] 1a

58 fields: NotRequired[list[DiscordEmbedField]] 1a

59 

60 

61class DiscordPayload(TypedDict): 1a

62 content: NotRequired[str] 1a

63 embeds: NotRequired[list[DiscordEmbed]] 1a

64 

65 

66def get_branded_discord_embed(embed: DiscordEmbed) -> DiscordEmbed: 1a

67 return { 

68 "color": 25343, 

69 "author": { 

70 "name": "Polar.sh", 

71 "icon_url": settings.FAVICON_URL, 

72 }, 

73 "thumbnail": { 

74 "url": settings.THUMBNAIL_URL, 

75 }, 

76 "footer": { 

77 "text": "Powered by Polar.sh", 

78 }, 

79 **embed, 

80 }