Welcome to spectrum.py’s documentation!¶
You can join the Spectrum API community at This Discord Server
API Reference¶
The following section outlines the API of spectrum.py.
Data Classes¶
Warning
Most of the objects have __slots__ defined. This allows the API to save
space in RAM, but it makes it so that it is impossible to have dynamic
attributes to the data classes. I am sorry. There is one object,
Object
, the does not have __slots__ defined. This is because it is
made specifically so that dynamic attributes can be applied.
More information about __slots__
can be found
in the official python documentation.
Object¶
-
class
spectrum.
Object
(id)¶ Represents a generic Spectrum object
Supported Operations:
Operation Description x == y Checks if two objects are equal. x != y Checks if two objects are not equal. This class is the base class of most objects, since most have an ID number.
- id : int
- The ID of the object
Message¶
-
class
spectrum.
Message
(**kwargs)¶ Represents a Spectrum message object
Supported Operations:
Operation Description x == y Checks if two messages are equal. x != y Checks if two messages are not equal. str(x) Returns the message’s content. TODO - id : int
- The ID of the Message
- time_created :
datetime.datetime
- The time that the message was created at
- time_modified :
datetime.datetime
- The time that the message was modified. NOTE: May be the same as the time that it was created. This just means it has not been modified. Maybe changed in the future.
- lobby :
Lobby
- The lobby that the message was sent in. I know the general plan of how to execute this, but since a lobby object isn’t sent with the message (which makes sense) I will have to pull it from the cache when the message is sent. I have it in my head of how it will work. # TODO
- author :
Member
- The author of the message. While this is a Member object, it is called author because it make more sense in context.
- content :
Content
- The content object in the message.
- media_id : str
- This is in the format of embed:<embed ID here>. It shows the embed ID
if the message has an embed. Can be
None
if there are no embeds - highlight_role : int or NotImplemented
- The role that the member used for that message. It may return an int if
the role was not in the clients cache, or it may return a
Role
object if it was in the clients cache. - reactions : NotImplemented
- The reactions to the message. TODO
Community¶
-
class
spectrum.
Community
(**kwargs)¶ Represents a Spectrum Community object
Supported Operations:
Operation Description x == y Checks if two communities are equal. x != y Checks if two communities are not equal. str(x) Returns the community’s name. - id : int
- The ID of the community
- type : str
The type of community. Can be one of the following: (to my knowledge)
- Public
- Private
- slug : str
- The shorthand abbreviation of the community
- name : str
- The name of the community
- avatar : str
- This is a URL for the avatar of the community
- banner : str
- This is a URL for the banner of the community
- lobbies :
- An iterator of
Lobby
objects that the community has. - roles : NotImplemented
- A list of the
Role
that the community has. #TODO
Lobby¶
-
class
spectrum.
Lobby
(**kwargs)¶ Represents a Spectrum lobby object
Supported Operations:
Operation Description x == y Checks if two lobbies are equal. x != y Checks if two lobbies are not equal. str(x) Returns the lobbies name. - id : int
- The ID of the lobby
- name : str
- The name of the lobby
- description : str
- The description of the lobby
- color : str
- The color of the lobby in hex (May make a color object in the future) #TODO
- online_members_count : int
- The number of members online
- key : str
- The API subscription key used to connect to the lobby (May make a key object in the future) #TODO
- permissions : NotImplemented
- Not sure if this is the special permission that the client has in this lobby, or something else. #TODO
- community :
Community
- The ID of the community that this lobby is a part of
Member¶
-
class
spectrum.
Member
(**kwargs)¶ Represents a Spectrum Member Object
Supported Operations:
Operation Description x == y Checks if two members are equal. x != y Checks if two members are not equal. str(x) Returns the member’s name. - id : int
- The ID of the Member
- name : str
- The name chosen to be displayed publicly everywhere by the member
- handle : str
- The unique identifying name that the member chose
- avatar : str
- URL to the member’s avatar
- presence :
Presence
- The presence of the member.
- roles : NotImplemented
- The roles held by the member. TODO
Presence¶
-
class
spectrum.
Presence
(**kwargs)¶ Represents a Spectrum Presence object
Supported Operations:
Operation Description str(x) Returns the presence’s status - status : str
Returns the status of the member. Can be one of the following:
- away
- online
- do_not_disturb
- invisible
- info : str/None
Returns a string of what the member is doing. If the member is playing Star Citizen it can be one of two things:
- “Playing Star Citizen” if they are currently in game
- “In Menus” if they have the game open, but are in in game
- since :
datetime.datetime
- Return a datetime object from when this member’s presence has changed
Content¶
-
class
spectrum.
Content
(**kwargs)¶ Represents a Spectrum content object
Supported Operations:
Operation Description str(x) Returns the content’s raw_content. - lines : int
- The number of blocks that makes up the Content object
- blocks : list
- A
list
ofBlock
objects that makes up the Content object. Each block represents a line in the message. - raw_content : str
- The raw content string of the message. Every block (line) ends with a ‘ \n’ before the next block (line) starts.
Emoji¶
-
class
spectrum.
Emoji
(**kwargs)¶ Represents a Spectrum Emoji object
Supported Operations:
Operation Description str(x) Returns the emoji’s name. - mutability : str
- Displays the mutability of the emoji. I do not know what this means in context, or when they are ever mutable. I have an open prize of 3 free original tapirs to anyone who can solve this.
- emoji : str
- Displays the name in the form :<name>: just taken from the raw JSON. I do not know if I will ever do able to code and decode from Unicode. There is a large block of Javascript in the Javascript that runs Spectrum that converts between str and an object, but I do not think I can convert between Unicode and str.
- offset : int
- The offset of where the emoji resides within the block.
- length : int
- The length of string that the emoji takes up from the offset in the raw block content.
Link¶
-
class
spectrum.
Link
(**kwargs)¶ Represents a Spectrum Link object
Supported Operations:
Operation Description str(x) Returns the link’s url. - mutability : str
- Displays the mutability of the link. I do not know what this means in context, or when they are ever mutable. I have an open prize of 3 free original tapirs to anyone who can solve this.
- url : str
- The url that the link object represents.
- offset : int
- The offset of where the link resides within the block.
- length : int
- The length of string that the link takes up from the offset in the raw block content.
Mention¶
-
class
spectrum.
Mention
(member=None, **kwargs)¶ Represents a Spectrum mention object
Supported Operations:
Operation Description str(x) Returns the mention’s user_id, or the member’s name - mutability : str
- Displays the mutability of the mention. I do not know what this means in context, or when they are ever mutable. I have an open prize of 3 free original tapirs to anyone who can solve this.
- user_id : int
- Displays the id of the user mentioned
- member :
Member
orNone
- This attribute represents the member that the mention mentions if they
are in the client’s cache. If not it defaults to
None
- offset : int
- The offset of where the mention resides within the block.
- length : int
- The length of string that the mention takes up from the offset in the raw block content.
Style_range¶
-
class
spectrum.
Style_range
(style=None, offset=None, length=None)¶ Represents a Spectrum inlineStyleRange object
Supported Operations:
Operation Description str(x) Returns the style_range’s style. - style : str
- The style that this style_range represents
- offset : int
- The offset of the style represented by the style_range from the beginning of the block
- length : int
- The length of the style represented by the style_range starting from the offset
Block¶
-
class
spectrum.
Block
(**kwargs)¶ Represents a Spectrum block object
Supported Operations:
Operation Description x == y Checks if two blocks are equal. x != y Checks if two blocks are not equal. str(x) Returns the block’s text. This object represents each individual line in a Spectrum message. For example if you press Shift+Enter to create a new line, this would be a new block in the message. Also each code block wrapper in ``` would be its own block.
- id : str
The ID of the block.
Warning
Most of the ID attributes for objects in Spectrum are an
int
, but this ID is astr
. I do not know why- text : str
- The raw text that makes up the block
- type : str
Represents the type of text in the whole block Can be one of the following:
- unstyled
- code-block
- ???
- depth : int
- I do not know what this is. But it is here
- style_ranges :
- A
list
ofStyle_range
that are in the block - entities :
- A
list
of eitherEmoji
,Mention
, orLink
that are in the block’s content.