koreanbots.model의 소스 코드

from typing import Any, Dict, List, Optional, Union

from .abc import KoreanbotsABC
from .typing import Category, State, Status


class BaseKoreanbots(KoreanbotsABC):
    def __init__(self, **response_data: Any) -> None:
        self._response_data = response_data

    @property
    def code(self) -> int:
        """
        상태 코드를 반환합니다.

        :return:
            상태 코드
        :rtype:
            int
        """
        return self._response_data.get("code", 0)

    @property
    def version(self) -> int:
        """
        버전을 반환합니다.

        :return:
            버전
        :rtype:
            int
        """
        return self._response_data.get("version", 0)

    @property
    def data(self) -> Dict[str, Any]:
        """
        데이터를 반환합니다.

        :return:
            데이터 딕셔너리
        :rtype:
            Dict(str, Any)
        """
        return self._response_data.get("data", {})


[문서]class KoreanbotsBot(BaseKoreanbots): """ 봇의 정보를 가져왔을떄 반환되는 인스턴스입니다. :param init_in_user: 유저 클래스에서 초기화 되었는지 여부입니다. 기본값은 False입니다. :type init_in_user: bool """ def __init__( self, init_in_user: bool = False, **response_data: Any, ) -> None: super().__init__(**response_data) self.init_in_user = init_in_user @property def id(self) -> Optional[str]: """ 아이디를 반환합니다. :return: 아이디 :rtype: Optional[str] """ return self.data.get("id") @property def name(self) -> Optional[str]: """ 이름을 반환합니다. :return: 이름 :rtype: Optional[str] """ return self.data.get("name") @property def tag(self) -> Optional[str]: """ 태그를 반환합니다. :return: 태그 :rtype: Optional[str] """ return self.data.get("tag") @property def avatar(self) -> Optional[str]: """ 아바타를 반환합니다. :return: 아바타 url :rtype: Optional[str] """ return self.data.get("avatar") @property def owners(self) -> Union[List["KoreanbotsUser"], List[str]]: """ 소유자를 반환합니다. ※ init_in_user가 True인경우 소유자들의 ID를 반환합니다. :return: 소유자들의 ID들을 담고 있는 리스트 또는 KoreanbotsUser 인스턴스를 담고있는 리스트 :rtype: Union[List[str], List[KoreanbotsUser]] """ if self.init_in_user: return self.response_data.get("owners", []) return list( map( lambda user: KoreanbotsUser(True, **user), self.data.get("owners", []), ) ) @property def flags(self) -> int: """ 플래그를 반환합니다. :return: 플래그 :rtype: int """ return self.data.get("flags", 0) @property def lib(self) -> Optional[str]: """ 봇이 사용한 라이브러리를 반환합니다. :return: 라이브러리 :rtype: Optional[str] """ return self.data.get("lib") @property def prefix(self) -> Optional[str]: """ 프리픽스를 반환합니다. :return: 프리픽스 :rtype: Optional[str] """ return self.data.get("prefix") @property def votes(self) -> int: """ 투표수를 반환합니다. :return: 투표수 :rtype: int """ return self.data.get("votes", 0) @property def servers(self) -> int: """ 서버수를 반환합니다. :return: 서버수 :rtype: int """ return self.data.get("servers", 0) @property def shards(self) -> int: """ 샤드수를 반환합니다. :return: 샤드수 :rtype: int """ return self.data.get("shards", 0) @property def intro(self) -> Optional[str]: """ 소개문구를 반환합니다. :return: 소개문구 :rtype: Optional[str] """ return self.data.get("intro") @property def desc(self) -> Optional[str]: """ 설명문구를 반환합니다. :return: 설명문구 :rtype: Optional[str] """ return self.data.get("desc") @property def web(self) -> Optional[str]: """ 웹사이트 주소를 반환합니다. :return: 웹사이트 주소 :rtype: Optional[str] """ return self.data.get("web") @property def git(self) -> Optional[str]: """ 깃 주소를 반환합니다. :return: 깃 주소 :rtype: Optional[str] """ return self.data.get("git") @property def url(self) -> Optional[str]: """ 주소를 반환합니다 :return: 주소 :rtype: Optional[str] """ return self.data.get("url") @property def discord(self) -> Optional[str]: """ 디스코드 주소를 반환합니다. :return: 디스코드 주소 :rtype: Optional[str] """ return self.data.get("discord") @property def category(self) -> Optional[Category]: """ 카테고리를 반환합니다. :return: 카테고리 :rtype: Optional[Category] """ return self.data.get("category") @property def vanity(self) -> Optional[str]: """ 봇의 가상 주소를 반환합니다. :return: 봇의 가상 주소 :rtype: Optional[str] """ return self.data.get("vanity") @property def bg(self) -> Optional[str]: """ 배경 이미지 주소를 반환합니다. :return: 배경 이미지 주소 :rtype: Optional[str] """ return self.data.get("bg") @property def banner(self) -> Optional[str]: """ 배너 이미지 주소를 반환합니다. :return: 배너 이미지 주소 :rtype: Optional[str] """ return self.data.get("banner") @property def status(self) -> Optional[Status]: """ 상태를 반환합니다. :return: 상태 :rtype: Optional[Status] """ return self.data.get("status") @property def state(self) -> Optional[State]: """ Koreanbots에서의 상태를 반환합니다. :return: Koreanbots에서의 상태 :rtype: Optional[State] """ return self.data.get("state")
[문서]class KoreanbotsUser(BaseKoreanbots): """ 유저 정보를 가져왔을때 반환되는 클래스입니다. :param init_in_bot: 봇 클래스에서 초기화 되었는지 여부입니다. 기본값은 False입니다. :type init_in_bot: bool """ def __init__(self, init_in_bot: bool = False, **response_data: Any) -> None: super().__init__(**response_data) self.init_in_bot = init_in_bot @property def id(self) -> int: """ ID를 반환합니다. :return: ID :rtype: int """ return self.data.get("id", 0) @property def username(self) -> str: """ 유저 이름을 반환합니다. :return: 유저 이름 :rtype: str """ return self.data.get("username", "") @property def tag(self) -> str: """ 태그를 반환합니다. :return: 태그 :rtype: str """ return self.data.get("tag", "") @property def github(self) -> Optional[str]: """ GitHub 주소를 반환합니다. :return: GitHub 주소 :rtype: Optional[str] """ return self.data.get("github", None) @property def flags(self) -> int: """ 플래그를 반환합니다. :return: 플래그 :rtype: int """ return self.data.get("flags", 0) @property def bots( self, ) -> Union[List[KoreanbotsBot], List[str]]: """ 봇들을 반환합니다. ※ init_in_bot가 True인경우 봇들의 ID를 반환합니다. :return: 봇들의 ID들을 담고 있는 리스트 또는 KoreanbotsUser 인스턴스를 담고있는 리스트 :rtype: Union[List[str], List[KoreanbotsUser]] """ if self.init_in_bot: return self.response_data.get("bots", []) return list( map( lambda bot: KoreanbotsBot(True, **bot), self.data.get("bots", []), ) )