Source code for flask_discord.models.connections
from flask import current_app
from .base import DiscordModelsBase
from .integration import Integration
[docs]class UserConnection(DiscordModelsBase):
"""Class representing connections in discord account of the user.
Attributes
----------
id : str
ID of the connection account.
name : str
The username of the connection account.
type : str
The service of connection (twitch, youtube).
revoked : bool
A boolean representing whether the connection is revoked.
integrations : list
A list of server Integration objects.
verified : bool
A boolean representing whether the connection is verified.
friend_sync : bool
A boolean representing whether friend sync is enabled for this connection.
show_activity : bool
A boolean representing whether activities related to this connection will
be shown in presence updates.
visibility : int
An integer representing
`visibility <https://discordapp.com/developers/docs/resources/user#user-object-visibility-types>`_
of this connection.
"""
MANY = True
ROUTE = "/users/@me/connections"
def __init__(self, payload):
super().__init__(payload)
self.id = self._payload["id"]
self.name = self._payload.get("name")
self.type = self._payload.get("type")
self.revoked = self._payload.get("revoked")
self.integrations = self.__get_integrations()
self.verified = self._payload.get("verified")
self.friend_sync = self._payload.get("friend_sync")
self.show_activity = self._payload.get("show_activity")
self.visibility = self._payload.get("visibility")
def __get_integrations(self):
return [Integration(payload) for payload in self._payload.get("integrations", list())]
@property
def is_visible(self):
"""A property returning bool if this integration is visible to everyone."""
return bool(self.visibility)
[docs] @classmethod
def fetch_from_api(cls, cache=True):
"""A class method which returns an instance or list of instances of this model by implicitly making an
API call to Discord. If an instance of :py:class:`flask_discord.User` exists in the users internal cache
who are attached to these connections then, the cached property :py:attr:`flask_discord.User.connections`
is updated.
Parameters
----------
cache : bool
Determines if the :py:attr:`flask_discord.User.guilds` cache should be updated with the new guilds.
Returns
-------
list[flask_discord.UserConnection, ...]
List of instances of :py:class:`flask_discord.UserConnection` to which this user belongs.
"""
connections = super().fetch_from_api()
if cache:
user = current_app.discord.users_cache.get(current_app.discord.user_id)
try:
user.connections = connections
except AttributeError:
pass
return connections