Requests
Overview
This section discusses methods for handling requests to join a channel (guild, chat, clan, and etc). As a rule, requests to join the channel owner come from other players. For example, players can send a request to join a clan or to participate in an in-game event. The channel owner can accept the membership request or reject it.
The service allows you to create the following types of requests:
ss.channels.acceptJoinRequest
- ccepting a request to join +1 Requestss.channels.rejectJoinRequest
- rejection of a request to join +1 Requestss.channels.fetchJoinRequests
- get a list of incoming join requests in the selected channel +1 Requestss.channels.fetchMoreJoinRequests
- additionally load the list of incoming requests to join in the selected channel +1 Requestss.channels.fetchSentJoinRequests
- get a list of requests sent by a player to join channels +1 Requestss.channels.fetchMoreSentJoinRequests
- additionally load the list of requests sent by the player to join the channels +1 Request
Accepting a Request to Join
+1 RequestThe player playerId: 123456
receives a request to join the channel channelId: 123
. To do this, use the ss.channels.acceptJoinRequest
method:
- JavaScript
- Unity
ss.channels.acceptJoinRequest({ channelId: 123, playerId: 123456 })
SS_Channels.AcceptJoinRequest(channel_ID: 123, player_ID: 123456);
To get the result of a method call, you can subscribe to events:
- JavaScript
- Unity
ss.channels.on('acceptJoinRequest', () => {
// request received successfully
})
// subscribe to event
private void OnEnable()
{
SS_Channels.OnAcceptJoinRequest += OnAcceptJoinRequest;
}
// unsubscribe from event
private void OnDisable()
{
SS_Channels.OnAcceptJoinRequest -= OnAcceptJoinRequest;
}
// request received successfully
private void OnAcceptJoinRequest() => Debug.Log("ACCEPT JOIN REQUEST: SUCCESS");
Execution with error:
- JavaScript
- Unity
ss.channels.on('error:acceptJoinRequest', (err) => {
// completed with an error
})
// subscribe to event
private void OnEnable()
{
SS_Channels.OnAcceptJoinRequestError += OnAcceptJoinRequestError;
}
// unsubscribe from event
private void OnDisable()
{
SS_Channels.OnAcceptJoinRequestError -= OnAcceptJoinRequestError;
}
private void OnAcceptJoinRequestError() => Debug.Log("ACCEPT JOIN REQUEST: ERROR");
Possible errors are shown in the table below:
Basic Errors | Script Errors |
---|---|
player_not_found | empty_channel_id |
project_not_found | channel_not_found |
origin_not_allowed | access_denied |
player_banned | already_in_channel |
internal_error | channel_capacity_reached |
After sending the request, the player joins the channel and all players in the channel receive a notification about his entry:
- JavaScript
- Unity
ss.channels.on('event:join', (member) => {
// Channel ID
member.channelId
// Joined Player ID
member.id
// Player fields (avatar, name, custom fields)
member.state
// Player Mute Information
member.mute
})
// subscribe to event
private void OnEnable()
{
SS_Channels.OnJoinEvent += OnJoinEvent;
}
// unsubscribe from event
private void OnDisable()
{
SS_Channels.OnJoinEvent -= OnJoinEvent;
}
private void OnJoinEvent(SS_Data data)
{
var joinData = data.Get<JoinData>();
Debug.Log("JOIN EVENT: CHANNEL ID: " + joinData.channelId);
Debug.Log("JOIN EVENT: ID: " + joinData.id);
Debug.Log("JOIN EVENT: MUTE: IS MUTED: " + joinData.mute.isMuted);
Debug.Log("JOIN EVENT: MUTE: UNMUTE AT: " + joinData.mute.unmuteAt);
Debug.Log("JOIN EVENT: PLAYER STATE: AVATAR: " + joinData.state.avatar);
Debug.Log("JOIN EVENT: PLAYER STATE: CREDITIALS: " + joinData.state.credentials);
Debug.Log("JOIN EVENT: PLAYER STATE: ID: " + joinData.state.id);
Debug.Log("JOIN EVENT: PLAYER STATE: NAME: " + joinData.state.name);
Debug.Log("JOIN EVENT: PLAYER STATE: PLATFORM TYPE: " + joinData.state.platformType);
Debug.Log("JOIN EVENT: PLAYER STATE: PROJECT ID: " + joinData.state.projectId);
Debug.Log("JOIN EVENT: PLAYER STATE: SCORE: " + joinData.state.score);
}
Rejecting a Request to Join
+1 RequestPlayer playerId: 123456
rejects request to join channel channelId: 123
. To do this, use the ss.channels.rejectJoinRequest
method:
- JavaScript
- Unity
ss.channels.rejectJoinRequest({ channelId: 123, playerId: 123456 })
SS_Channels.RejectJoinRequest(channel_ID: 123, player_ID: 123456);
If the player - the owner of the channel rejects the request to join the channel, then a notification that someone rejected the request comes:
- to all players in the channel (if they can accept join requests)
- the player who sent the request
To get the result of a method call, you can subscribe to events:
- JavaScript
- Unity
ss.channels.on('rejectJoinRequest', () => {
// request successfully denied
})
// subscribe to event
private void OnEnable()
{
SS_Channels.OnRejectJoinRequestSuccess += OnRejectJoinRequestSuccess;
}
// unsubscribe from event
private void OnDisable()
{
SS_Channels.OnRejectJoinRequestSuccess -= OnRejectJoinRequestSuccess;
}
// request successfully denied
private void OnRejectJoinRequestSuccess() => Debug.Log("REJECT JOIN REQUESTS: SUCCESS");
Execution with error:
- JavaScript
- Unity
ss.channels.on('error:rejectJoinRequest', (err) => {
// completed with an error
})
// subscribe to event
private void OnEnable()
{
SS_Channels.OnRejectJoinRequestError += OnRejectJoinRequestError;
}
// unsubscribe from event
private void OnDisable()
{
SS_Channels.OnRejectJoinRequestError -= OnRejectJoinRequestError;
}
// completed with an error
private void OnRejectJoinRequestError() => Debug.Log("REJECT JOIN REQUESTS: ERROR");
Possible errors are shown in the table below:
Basic Errors | Script Errors |
---|---|
player_not_found | empty_channel_id |
project_not_found | channel_not_found |
origin_not_allowed | access_denied |
player_banned | join_request_not_found |
internal_error |
- JavaScript
- Unity
ss.channels.on('event:rejectJoinRequest', (joinRequest) => {
// Channel ID
joinRequest.channelId
// ID of the player who requested to join
joinRequest.playerId
})
// subscribe to event
private void OnEnable()
{
SS_Channels.OnRejectJoinRequestEvent += OnRejectJoinRequestEvent;
}
// unsubscribe from event
private void OnDisable()
{
SS_Channels.OnRejectJoinRequestEvent -= OnRejectJoinRequestEvent;
}
private void OnRejectJoinRequestEvent(RejectJoinRequestData data)
{
Debug.Log("REJECT JOIN REQUEST EVENT: CHANNEL ID: " + data.channelId);
Debug.Log("REJECT JOIN REQUEST EVENT: PLAYER ID: " + data.playerId);
}
Requests can be declined by the player who owns the channel and other players in the channel (if they are allowed to accept join requests).
Get a List of Incoming Join Requests in the Selected Channel
+1 RequestTo get a list of incoming join requests in the selected channel, use the method ss.channels.fetchJoinRequests
:
- JavaScript
- Unity
const response = await ss.channels.fetchJoinRequests({
// Channel ID
channelId: 123,
// how much to request at a time, max. 100
limit: 100,
// how many entries to skip, max. 10000, used for page navigation or "load more"
offset: 0
})
SS_Channels.FetchJoinRequests(
// Channel ID
channel_ID: 123,
// how much to request at a time, max. 100
limit: 100,
// how many entries to skip, max. 10000, used for page navigation or "load more"
offset: 0
);
Mandatory access rights allowed to accept join requests
To get the result of a method call, you can subscribe to events:
- JavaScript
- Unity
ss.channels.on('fetchJoinRequests', (result) => {
result.items // array of membership requests list
result.canLoadMore // is it possible to load more requests
result.items.forEach((joinRequest) => {
// all request fields
// public fields of the player who submitted the request
joinRequest.player
joinRequest.player.id
joinRequest.player.name
joinRequest.player.avatar
// and other public fields
// date the request was sent, ISO 8601
invite.date
})
})
// subscribe to event
private void OnEnable()
{
SS_Channels.OnFetchJoinRequests += OnFetchJoinRequests;
}
// unsubscribe from event
private void OnDisable()
{
SS_Channels.OnFetchJoinRequests -= OnFetchJoinRequests;
}
private void OnFetchJoinRequests(SS_Data data, bool canLoadMore)
{
var fetchJoinRequestsData = data.GetList<FetchJoinRequestsData>();
Debug.Log("FETCH JOIN REQUESTS: CAN LOAD MORE: " + canLoadMore);
for (int i = 0; i < fetchJoinRequestsData.Count; i++)
{
Debug.Log("FETCH JOIN REQUESTS: DATE: " + fetchJoinRequestsData[i].date);
Debug.Log("FETCH JOIN REQUESTS: PLAYER AVATAR: " + fetchJoinRequestsData[i].player.avatar);
Debug.Log("FETCH JOIN REQUESTS: PLAYER CREDITIALS: " + fetchJoinRequestsData[i].player.credentials);
Debug.Log("FETCH JOIN REQUESTS: PLAYER ID: " + fetchJoinRequestsData[i].player.id);
Debug.Log("FETCH JOIN REQUESTS: PLAYER NAME: " + fetchJoinRequestsData[i].player.name);
Debug.Log("FETCH JOIN REQUESTS: PLAYER PLATFORM TYPE: " + fetchJoinRequestsData[i].player.platformType);
Debug.Log("FETCH JOIN REQUESTS: PLAYER PROJECT ID: " + fetchJoinRequestsData[i].player.projectId);
Debug.Log("FETCH JOIN REQUESTS: PLAYER SCORE: " + fetchJoinRequestsData[i].player.score);
}
}
Execution with error:
- JavaScript
- Unity
ss.channels.on('error:fetchJoinRequests', (err) => {
// completed with an error
})
// subscribe to event
private void OnEnable()
{
SS_Channels.OnFetchJoinRequestsError += OnFetchJoinRequestsError;
}
// unsubscribe from event
private void OnDisable()
{
SS_Channels.OnFetchJoinRequestsError -= OnFetchJoinRequestsError;
}
// completed with an error
private void OnFetchJoinRequestsError() => Debug.Log("FETCH JOIN REQUESTS: ERROR");
Possible errors are shown in the table below:
Basic Errors | Script Errors |
---|---|
player_not_found | empty_channel_id |
project_not_found | channel_not_found |
origin_not_allowed | access_denied |
player_banned | |
internal_error |
To additionally upload membership requests, use the convenient method ss.channels.fetchMoreJoinRequests
:
- JavaScript
- Unity
const response = await ss.channels.fetchMoreJoinRequests({
channelId: 123,
// how much to request at a time, max. 100
limit: 100
})
SS_Channels.FetchMoreJoinRequests(
// Channel ID
channel_ID: 123,
// how much to request at a time, max. 100
limit: 100
);
To get the result of a method call, you can subscribe to events:
- JavaScript
- Unity
ss.channels.on('fetchMoreJoinRequests', (result) => {
result.items // query list array
result.canLoadMore // is it possible to load more requests
})
// subscribe to event
private void OnEnable()
{
SS_Channels.OnFetchMoreJoinRequests += OnFetchMoreJoinRequests;
}
// unsubscribe from event
private void OnDisable()
{
SS_Channels.OnFetchMoreJoinRequests -= OnFetchMoreJoinRequests;
}
private void OnFetchMoreJoinRequests(SS_Data data, bool canLoadMore)
{
var fetchJoinRequestsData = data.GetList<FetchJoinRequestsData>();
Debug.Log("FETCH MORE JOIN REQUESTS: CAN LOAD MORE: " + canLoadMore);
for (int i = 0; i < fetchJoinRequestsData.Count; i++)
{
Debug.Log("FETCH MORE JOIN REQUESTS: DATE: " + fetchJoinRequestsData[i].date);
Debug.Log("FETCH MORE JOIN REQUESTS: PLAYER AVATAR: " + fetchJoinRequestsData[i].player.avatar);
Debug.Log("FETCH MORE JOIN REQUESTS: PLAYER CREDITIALS: " + fetchJoinRequestsData[i].player.credentials);
Debug.Log("FETCH MORE JOIN REQUESTS: PLAYER ID: " + fetchJoinRequestsData[i].player.id);
Debug.Log("FETCH MORE JOIN REQUESTS: PLAYER NAME: " + fetchJoinRequestsData[i].player.name);
Debug.Log("FETCH MORE JOIN REQUESTS: PLAYER PLATFORM TYPE: " + fetchJoinRequestsData[i].player.platformType);
Debug.Log("FETCH MORE JOIN REQUESTS: PLAYER PROJECT ID: " + fetchJoinRequestsData[i].player.projectId);
Debug.Log("FETCH MORE JOIN REQUESTS: PLAYER SCORE: " + fetchJoinRequestsData[i].player.score);
}
}
Execution with error:
- JavaScript
- Unity
ss.channels.on('error:fetchMoreJoinRequests', (err) => {
// completed with an error
})
// subscribe to event
private void OnEnable()
{
SS_Channels.OnFetchMoreJoinRequestsError += OnFetchMoreJoinRequestsError;
}
// unsubscribe from event
private void OnDisable()
{
SS_Channels.OnFetchMoreJoinRequestsError -= OnFetchMoreJoinRequestsError;
}
// completed with an error
private void OnFetchMoreJoinRequestsError() => Debug.Log("FETCH MORE JOIN REQUESTS: ERROR");
Possible errors are shown in the table below:
Basic Errors | Script Errors |
---|---|
player_not_found | empty_channel_id |
project_not_found | channel_not_found |
origin_not_allowed | access_denied |
player_banned | |
internal_error |
Get a List of Requests Sent by a Player to Join
+1 RequestGet a list of requests sent by the player to join the various channels:
- JavaScript
- Unity
const response = await ss.channels.fetchSentJoinRequests({
// how much to request at a time, max. 100
limit: 100,
// how many entries to skip, max. 10000, used for page navigation or "load more"
offset: 0
})
SS_Channels.FetchSentJoinRequests(
// how much to request at a time, max. 100
limit: 100,
// how many entries to skip, max. 10000, used for page navigation or "load more"
offset: 0
);
To get the result of a method call, you can subscribe to events:
- JavaScript
- Unity
ss.channels.on('fetchSentJoinRequests', (result) => {
result.items // array of membership requests list
result.canLoadMore // is it possible to load more requests
result.items.forEach((joinRequest) => {
// all fields of the invite
// fields of the channel to which the other player is invited
joinRequest.channel
joinRequest.channel.id
joinRequest.channel.tags
joinRequest.channel.projectId
joinRequest.channel.capacity
joinRequest.channel.ownerId
joinRequest.channel.name
joinRequest.channel.description
joinRequest.channel.private
joinRequest.channel.visible
joinRequest.channel.hasPassword
joinRequest.channel.membersCount
// date the invitation was sent, ISO 8601
joinRequest.date
})
})
// subscribe to event
private void OnEnable()
{
SS_Channels.OnFetchSentJoinRequests += OnFetchSentJoinRequests;
}
// unsubscribe from event
private void OnDisable()
{
SS_Channels.OnFetchSentJoinRequests -= OnFetchSentJoinRequests;
}
private void OnFetchSentJoinRequests(List<JoinRequestsData> data, bool canLoadMore)
{
Debug.Log("FETCH SENT JOIN REQUESTS: CAN LOAD MORE: " + canLoadMore);
for (int i = 0; i < data.Count; i++)
{
Debug.Log("FETCH SENT JOIN REQUESTS: DATE: " + data[i].date);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: ID: " + data[i].channel.id);
for (int x = 0; x < data[i].channel.tags.Length; x++)
{
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: TAGS: " + data[i].channel.tags[x]);
}
for (int a = 0; a < data[i].channel.messageTags.Length; a++)
{
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: MESSAGE TAGS: " + data[i].channel.messageTags[a]);
}
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: TEMPLATE ID: " + data[i].channel.templateId);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: PROJECT ID: " + data[i].channel.projectId);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: CAPACITY: " + data[i].channel.capacity);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: OWNER ID: " + data[i].channel.ownerId);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: NAME: " + data[i].channel.name);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: DESCRIPTION: " + data[i].channel.description);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: PRIVATE: " + data[i].channel.ch_private);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: VISIBLE: " + data[i].channel.visible);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: PERMANENT: " + data[i].channel.permanent);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: HAS PASSWORD: " + data[i].channel.hasPassword);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: PASSWORD: " + data[i].channel.password);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: IS JOINED: " + data[i].channel.isJoined);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: IS INVITED: " + data[i].channel.isInvited);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: IS MUTED: " + data[i].channel.isMuted);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: IS REQUEST SENT: " + data[i].channel.isRequestSent);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: MEMBERS: COUNT: " + data[i].channel.membersCount);
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: OWNER ACL: " + JsonUtility.ToJson(data[i].channel.ownerAcl));
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: MEMBER ACL: " + JsonUtility.ToJson(data[i].channel.memberAcl));
Debug.Log("FETCH SENT JOIN REQUESTS: CHANNEL: GUEST ACL: " + JsonUtility.ToJson(data[i].channel.guestAcl));
}
}
Execution with error:
- JavaScript
- Unity
ss.channels.on('error:fetchSentJoinRequests', (err) => {
// completed with an error
})
// subscribe to event
private void OnEnable()
{
SS_Channels.OnFetchSentJoinRequestsError += OnFetchSentJoinRequestsError;
}
// unsubscribe from event
private void OnDisable()
{
SS_Channels.OnFetchSentJoinRequestsError -= OnFetchSentJoinRequestsError;
}
private void OnFetchSentJoinRequestsError() => Debug.Log("FETCH SENT JOIN REQUESTS: ERROR");
Possible errors are shown in the table below:
Basic Errors |
---|
player_not_found |
project_not_found |
origin_not_allowed |
player_banned |
internal_error |
To additionally upload membership requests, use the convenient method ss.channels.fetchMoreSentJoinRequests
:
- JavaScript
- Unity
const response = await ss.channels.fetchMoreSentJoinRequests({
// how much to request at a time, max. 100
limit: 100
})
SS_Channels.FetchMoreSentJoinRequests(
// how much to request at a time, max. 100
limit: 100
);
To get the result of a method call, you can subscribe to events:
- JavaScript
- Unity
ss.channels.on('fetchMoreSentJoinRequests', (result) => {
result.items // array of membership requests list
result.canLoadMore // is it possible to load more requests
})
// subscribe to event
private void OnEnable()
{
SS_Channels.OnFetchMoreSentJoinRequests += OnFetchMoreSentJoinRequests;
}
// unsubscribe from event
private void OnDisable()
{
SS_Channels.OnFetchMoreSentJoinRequests -= OnFetchMoreSentJoinRequests;
}
private void OnFetchMoreSentJoinRequests(List<JoinRequestsData> data, bool canLoadMore)
{
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CAN LOAD MORE " + canLoadMore);
for (int i = 0; i < data.Count; i++)
{
Debug.Log("FETCH MORE SENT JOIN REQUESTS: DATE: " + data[i].date);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: ID: " + data[i].channel.id);
for (int x = 0; x < data[i].channel.tags.Length; x++)
{
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: TAGS: " + data[i].channel.tags[x]);
}
for (int a = 0; a < data[i].channel.messageTags.Length; a++)
{
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: MESSAGE TAGS: " + data[i].channel.messageTags[a]);
}
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: TEMPLATE ID: " + data[i].channel.templateId);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: PROJECT ID: " + data[i].channel.projectId);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: CAPACITY: " + data[i].channel.capacity);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: OWNER ID: " + data[i].channel.ownerId);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: NAME: " + data[i].channel.name);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: DESCRIPTION: " + data[i].channel.description);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: PRIVATE: " + data[i].channel.ch_private);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: VISIBLE: " + data[i].channel.visible);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: PERMANENT: " + data[i].channel.permanent);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: HAS PASSWORD: " + data[i].channel.hasPassword);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: PASSWORD: " + data[i].channel.password);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: IS JOINED: " + data[i].channel.isJoined);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: IS INVITED: " + data[i].channel.isInvited);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: IS MUTED: " + data[i].channel.isMuted);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: IS REQUEST SENT: " + data[i].channel.isRequestSent);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: MEMBERS: COUNT: " + data[i].channel.membersCount);
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: OWNER ACL: " + JsonUtility.ToJson(data[i].channel.ownerAcl));
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: MEMBER ACL: " + JsonUtility.ToJson(data[i].channel.memberAcl));
Debug.Log("FETCH MORE SENT JOIN REQUESTS: CHANNEL: GUEST ACL: " + JsonUtility.ToJson(data[i].channel.guestAcl));
}
}
Execution with error:
- JavaScript
- Unity
ss.channels.on('error:fetchMoreSentJoinRequests', (err) => {
// completed with an error
})
// subscribe to event
private void OnEnable()
{
SS_Channels.OnFetchMoreSentJoinRequestsError += OnFetchMoreSentJoinRequestsError;
}
// unsubscribe from event
private void OnDisable()
{
SS_Channels.OnFetchMoreSentJoinRequestsError -= OnFetchMoreSentJoinRequestsError;
}
// completed with an error
private void OnFetchMoreSentJoinRequestsError() => Debug.Log("FETCH MORE SENT JOIN REQUESTS: ERROR");
Possible errors are shown in the table below:
Basic Errors |
---|
player_not_found |
project_not_found |
origin_not_allowed |
player_banned |
internal_error |
Stay in Touch
Other documents of this chapter available Here. To get started, welcome to the Tutorials chapter.
SpellSync Community Telegram
: @spellsync.
For your suggestions e-mail
: [email protected]
We Wish you Success!