You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.2 KiB
85 lines
2.2 KiB
from disco.types.base import SlottedModel, Field, ListField, snowflake, text, enum
|
|
from disco.types.guild import Integration
|
|
from disco.types.user import User
|
|
from disco.util.snowflake import to_snowflake
|
|
|
|
|
|
class TeamMembershipState(object):
|
|
INVITED = 1
|
|
ACCEPTED = 2
|
|
|
|
|
|
class TeamMember(SlottedModel):
|
|
membership_state = Field(enum(TeamMembershipState))
|
|
permissions = Field(text)
|
|
team_id = Field(snowflake)
|
|
user = Field(User)
|
|
|
|
|
|
class Team(SlottedModel):
|
|
icon = Field(text)
|
|
id = Field(snowflake)
|
|
members = ListField(TeamMember)
|
|
owner_user_id = Field(snowflake)
|
|
|
|
|
|
class Application(SlottedModel):
|
|
id = Field(snowflake)
|
|
name = Field(text)
|
|
icon = Field(text)
|
|
description = Field(text)
|
|
rpc_origins = ListField(text)
|
|
bot_public = Field(bool)
|
|
bot_require_code_grant = Field(bool)
|
|
owner = Field(User)
|
|
summary = Field(text)
|
|
verify_key = Field(text)
|
|
team = Field(Team)
|
|
guild_id = Field(snowflake)
|
|
primary_sku_id = Field(snowflake)
|
|
slug = Field(text)
|
|
cover_image = Field(text)
|
|
|
|
def user_is_owner(self, user):
|
|
user_id = to_snowflake(user)
|
|
if user_id == self.owner.id:
|
|
return True
|
|
|
|
return any(user_id == member.user.id for member in self.team.members)
|
|
|
|
def get_icon_url(self, fmt='webp', size=1024):
|
|
if not self.icon:
|
|
return ''
|
|
|
|
return 'https://cdn.discordapp.com/app-icons/{}/{}.{}?size={}'.format(self.id, self.icon, fmt, size)
|
|
|
|
def get_cover_image_url(self, fmt='webp', size=1024):
|
|
if not self.cover_image:
|
|
return ''
|
|
|
|
return 'https://cdn.discordapp.com/app-icons/{}/{}.{}?size={}'.format(self.id, self.cover_image, fmt, size)
|
|
|
|
@property
|
|
def icon_url(self):
|
|
return self.get_icon_url()
|
|
|
|
@property
|
|
def cover_image_url(self):
|
|
return self.get_cover_image_url()
|
|
|
|
|
|
class ConnectionVisibility(object):
|
|
NOBODY = 0
|
|
EVERYONE = 1
|
|
|
|
|
|
class Connection(SlottedModel):
|
|
id = Field(text)
|
|
name = Field(text)
|
|
type = Field(text)
|
|
revoked = Field(bool)
|
|
integrations = ListField(Integration)
|
|
verified = Field(bool)
|
|
friend_sync = Field(bool)
|
|
show_activity = Field(bool)
|
|
visibility = Field(enum(ConnectionVisibility))
|
|
|