Skip to content
This repository has been archived by the owner on May 5, 2024. It is now read-only.

Commit

Permalink
utils.get_list_of_types()
Browse files Browse the repository at this point in the history
  • Loading branch information
pixeldeee committed Aug 4, 2023
1 parent 8f6c386 commit 01452fd
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 11 deletions.
16 changes: 8 additions & 8 deletions pytecord/guild.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from .user import User
from .role import Role
from .reaction import Emoji, Sticker
from .utils import MessagePayload, get_snowflake, apost, rget
from .utils import MessagePayload, get_snowflake, get_list_of_types, apost, rget
from .annotations import hash_str, permissions_set


Expand All @@ -25,7 +25,7 @@ def channel(self) -> 'GuildChannel':
class WelcomeScreen:
def __init__(self, data: dict[str, Any], token: str) -> None:
self.description: str | None = data.get('description')
self.channels: list[WelcomeScreenChannel] = [WelcomeScreenChannel(i, token) for i in data.get('welcome_channels')]
self.channels: list[WelcomeScreenChannel] = get_list_of_types(WelcomeScreenChannel, data.get('welcome_channels'), token)

class Guild(Object):
def __init__(self, data: dict[str, Any], token: str):
Expand All @@ -45,8 +45,8 @@ def __init__(self, data: dict[str, Any], token: str):
self.verification_level: int = data.get('verification_level')
self.default_message_notifications: int = data.get('default_message_notifications')
self.explicit_content_filter: int = data.get('explicit_content_filter')
self.roles: list[Role] = [Role(i) for i in data.get('roles', [])]
self.emojis: list[Emoji] = [Emoji(i) for i in data.get('emojis', [])]
self.roles: list[Role] = get_list_of_types(Role, data.get('roles', []))
self.emojis: list[Emoji] = get_list_of_types(Emoji, data.get('emojis', []))
self.features: list[str] = data.get('features')
self.mfa_level: int = data.get('mfa_level')
self.application_id: int | None = get_snowflake('application_id')
Expand All @@ -68,7 +68,7 @@ def __init__(self, data: dict[str, Any], token: str):
self.approximate_presence_count: int | None = data.get('approximate_presence_count')
self.welcome_screen: WelcomeScreen | None = WelcomeScreen(x, token) if (x := data.get('welcome_screen')) else None
self.nsfw_level: int = data.get('nsfw_level')
self.stickers: list[Sticker] = [Sticker(i, token) for i in x] if (x := data.get('stickers')) else None
self.stickers: list[Sticker] = get_list_of_types(Sticker, data.get('stickers'), token)
self.premium_progress_bar_enabled: bool = data.get('premium_progress_bar_enabled')
self.safety_alerts_channel_id: int | None = get_snowflake('safety_alerts_channel_id')

Expand Down Expand Up @@ -134,15 +134,15 @@ def __init__(self, data: dict[str, Any], token: str):
self.id: int = get_snowflake('id')
self.type: int = data.get('type')
self.position: int | None = data.get('position')
self.permission_overwrites: list[Overwrite] = [Overwrite(i) for i in data.get('permission_overwrites', [])]
self.permission_overwrites: list[Overwrite] = get_list_of_types(Overwrite, data.get('permission_overwrites', []))
self.name = data.get('name')
self.topic = data.get('topic')
self.nsfw = data.get('nsfw')
self.last_message_id = get_snowflake('last_message_id')
self.bitrate = data.get('bitrate')
self.user_limit = data.get('user_limit')
self.rate_limit_per_user = data.get('rate_limit_per_user')
self.recipients = [User(i, token) for i in x] if (x := data.get('recipients')) else None
self.recipients = get_list_of_types(User, data.get('recipients'), token)
self.icon = data.get('icon')
self.owner_id = get_snowflake('owner_id')
self.application_id = get_snowflake('application_id')
Expand Down Expand Up @@ -247,7 +247,7 @@ def __init__(self, data: dict[str, Any], token: str) -> None:
self.edited_timestamp = data.get('edited_timestamp')
self.tts = data.get('tts')
self.mention_everyone = data.get('mention_everyone')
self.mentions = [User(i, token) for i in x] if (x := data.get('mentions')) else None
self.mentions = get_list_of_types(User, data.get('mentions'), token)
self.mention_roles = data.get('mention_roles')
self.mention_channels = data.get('mention_channels')
self.attachments = data.get('attachments')
Expand Down
4 changes: 2 additions & 2 deletions pytecord/reaction.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
from typing import Any
from .role import Role
from .user import User
from .utils import get_snowflake
from .utils import get_snowflake, get_list_of_types

class Emoji:
def __init__(self, data: dict[str, Any], token: str) -> None:
self.id: int = get_snowflake('id')
self.name: str | None = data.get('name')
self.roles: list[Role] | None = [Role(i) for i in x] if (x := data.get('roles')) else None
self.roles: list[Role] | None = get_list_of_types(Role, data.get('roles'))
self.user: User = User(data.get('user'), token)
self.require_colons: bool | None = data.get('require_colons')
self.managed: bool | None = data.get('managed')
Expand Down
7 changes: 6 additions & 1 deletion pytecord/utils.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import json
from typing import Any
from typing import Any, TypeVar

from aiohttp import ClientSession
from requests import get

from .config import API_VERSION

T = TypeVar('T')

# API/GATEWAY

class MessagePayload:
Expand Down Expand Up @@ -50,6 +52,9 @@ def get_snowflake(__snowflake: str, __default: Any = None) -> int | Any:
"""
return int(x) if (x := __snowflake) else __default

def get_list_of_types(__type: T, __list: list[Any], *args, __default: Any = None) -> list[T]:
return [__type(i, *args, **kwargs) for i in __list] if __list else __default

def check_module(module: str):
try:
__import__(module)
Expand Down

0 comments on commit 01452fd

Please sign in to comment.