diff --git a/boticordpy/client.py b/boticordpy/client.py index 5a605a3..c621cb9 100644 --- a/boticordpy/client.py +++ b/boticordpy/client.py @@ -87,6 +87,22 @@ class BoticordClient: """ response = await self.http.get_server_info(server_id) return boticord_types.ResourceServer.from_dict(response) + + async def get_user_info( + self, user_id: typing.Union[str, int] + ) -> boticord_types.UserProfile: + """Gets information about specified user. + + Args: + user_id (Union[:obj:`str`, :obj:`int`]) + Id of the user + + Returns: + :obj:`~.types.UserProfile`: + UserProfile object. + """ + response = await self.http.get_user_info(user_id) + return boticord_types.UserProfile.from_dict(response) def autopost(self) -> AutoPost: """Returns a helper instance for auto-posting. diff --git a/boticordpy/http.py b/boticordpy/http.py index 55eda40..954a102 100644 --- a/boticordpy/http.py +++ b/boticordpy/http.py @@ -29,7 +29,7 @@ class HttpClient: self.session = kwargs.get("session") or aiohttp.ClientSession(loop=loop) - async def make_request(self, method: str, endpoint: str, **kwargs): + async def make_request(self, method: str, endpoint: str, **kwargs) -> dict: """Send requests to the API""" kwargs["headers"] = {"Content-Type": "application/json"} @@ -60,3 +60,7 @@ class HttpClient: def get_server_info(self, server_id: typing.Union[str, int]): """Get information about specified server""" return self.make_request("GET", f"servers/{server_id}") + + def get_user_info(self, user_id: typing.Union[str, int]): + """Get information about specified user""" + return self.make_request("GET", f"users/{user_id}") diff --git a/boticordpy/types.py b/boticordpy/types.py index 4d455c9..918f088 100644 --- a/boticordpy/types.py +++ b/boticordpy/types.py @@ -401,12 +401,13 @@ class UserLinks(APIObjectBase): """ self: UserLinks = super().__new__(cls) + data = data or {} self.vk = data.get("vk") self.telegram = data.get("telegram") self.donate = data.get("donate") self.git = data.get("git") - self.custon = data.get("custom") + self.custom = data.get("custom") return self @@ -547,7 +548,7 @@ class PartialUser(APIObjectBase): self.discriminator = data["discriminator"] self.avatar = data.get("avatar") self.id = data["id"] - self.socials = UserLinks.from_dict(data["socials"]) + self.socials = UserLinks.from_dict(data.get("socials", {})) self.description = data.get("description") self.short_description = data.get("shortDescription") self.status = data.get("status") @@ -647,6 +648,7 @@ class ResourceServer(APIObjectBase): self.owner = data.get("owner") self.website = data.get("website") self.up_count = data.get("upCount") + self.standart_banner_id = data.get("standartBannerID") self.premium_active = data["premium"].get("active") self.premium_splash_url = data["premium"].get("splashURL") diff --git a/examples/webhooks.py b/examples/webhooks.py deleted file mode 100644 index 5b937a6..0000000 --- a/examples/webhooks.py +++ /dev/null @@ -1,20 +0,0 @@ -# You can use any library to interact with the Discord API. -# This example uses discord.py. -# You can install it with `pip install discord.py`. - -from discord.ext import commands -from boticordpy import webhook - -bot = commands.Bot(command_prefix="!") - - -async def edit_bot_comment(data): - print(data.comment.new) - - -boticord_webhook = webhook.Webhook("x-hook-key", "bot").register_listener( - "edit_bot_comment", edit_bot_comment -) -boticord_webhook.start(5000) - -bot.run("bot_token")