Участники
Обзор
Когда игрок вступает в гильдию, групповой чат или лобби, он становится участником канала. Игровой процесс может быть построен таким образом, что игроку потребуется самостоятельно инициировать или отменить запрос на вступление в канал. Участника канала можно исключить, замьютить и так далее.
Взаимодействие участника с каналом - это, например, механизм подачи заявки на вступление в клан
Ниже представлен полный список методов, реализованных для управления участниками канала:
gp.channels.join
- запрос на вступление +1 Requestgp.channels.cancelJoin
- отмена запроса на вступление +1 Requestgp.channels.leave
- выход участника из канала +1 Requestgp.channels.kick
- исключение участника из канала +1 Requestgp.channels.mute
- мьют игрока в канале +1 Requestgp.channels.unmute
- отменить мьют игрока +1 Request
Вступление в канал
Чтобы вступить в канал, следует создать запрос на вступление. В этом случае может быть два сценария развития:
- Канал публичный. В него могут вступить все желающие. Тогда игрок автоматически становится участником.
- Канал приватный. Создается запрос на вступление, который должен принять владелец канала, либо любой участник, если есть права.
Запрос на вступление
+1 RequestДля создания запроса на вступление в канал с идентификатором channelId: 123
используется метод gp.channels.join
:
- JavaScript
- Unity
gp.channels.join({ channelId: 123 });
GP_Channels.Join(channel_ID: 123);
Если в канале установлен пароль, то его следует передать вместе с идентификатором:
- JavaScript
- Unity
gp.channels.join({ channelId: 123, password: "qwerty" });
GP_Channels.Join(channel_ID: 123, password: "12345");
Узнать наличие пароля канала можно с помощью метода gp.channels.fetchChannel({ channelId: 123 })
и посмотреть поле channel.hasPassword.
После вызова метода игрок автоматически вступает в канал, если канал был публичный. Если канал приватный, то отправляется запрос на вступление и его должны принять. Чтобы узнать приватный канал или нет, можно посмотреть поле channel.private.
Чтобы получить результат вызова метода, можно подписаться на события:
- JavaScript
- Unity
gp.channels.on('join', () => {
// успешно вступил или подал заявку на вступление
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnJoinSuccess += OnJoinSuccess;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnJoinSuccess -= OnJoinSuccess;
}
// успешно вступил или подал заявку на вступление
private void OnJoinSuccess() => Debug.Log("JOIN: SUCCESS");
Выполнение с ошибкой
- JavaScript
- Unity
gp.channels.on('error:join', (err) => {
// завершен с ошибкой
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnJoinError += OnJoinError;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnJoinError -= OnJoinError;
}
// завершен с ошибкой
private void OnJoinError() => Debug.Log("JOIN: ERROR");
Возможные ошибки приведены в таблице ниже:
базовые ошибки | сценарные ошибки |
---|---|
player_not_found | empty_channel_id |
project_not_found | channel_not_found |
origin_not_allowed | already_in_channel |
player_banned | already_requested 💡 |
internal_error | channel_capacity_reached |
invalid_password 💡 | |
already_in_channel |
already_requested 💡 - уже подал заявку на вступление.
invalid_password 💡 - ошибка возникает если на публичный канал установлен пароль и пароль неверный. Если канал приватный, то пароль игнорируется, так как используется механизм подтверждения заявки владельцем.
Сделав запрос на вступление в публичный канал, игрок автоматически становится его участником и всем игрокам в канале приходит уведомление о вступлении:
- JavaScript
- Unity
gp.channels.on('event:join', (member) => {
// ID канала
member.channelId;
// ID вступившего игрока
member.id;
// Поля игрока (аватар, имя, кастомные поля)
member.state;
// Информация о мьюте игрока
member.mute;
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnJoinEvent += OnJoinEvent;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnJoinEvent -= OnJoinEvent;
}
private void OnJoinEvent(GP_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);
}
Запрос на вступление в приватный канал
Всем игрокам в канале (если они могут принимать запросы на вступление) приходит уведомление о том, что новый игрок пытается вступить в канал:
- JavaScript
- Unity
gp.channels.on('event:joinRequest', (joinRequest) => {
// ID канала
joinRequest.channelId;
// ID игрока кто подал запрос на вступление
joinRequest.playerId;
// Поля игрока (аватар, имя, кастомные поля)
joinRequest.player;
// Дата запроса на вступление в ISO 8601 UTC "2022-12-01T04:52:26+0000"
joinRequest.date;
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnJoinRequest += OnJoinRequest;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnJoinRequest -= OnJoinRequest;
}
private void OnJoinRequest(GP_Data data)
{
var joinRequestData = data.Get<JoinRequestData>();
Debug.Log("JOIN REQUEST EVENT: CHANNEL ID: " + joinRequestData.channelId);
Debug.Log("JOIN REQUEST EVENT: ID: " + joinRequestData.playerId);
Debug.Log("JOIN REQUEST EVENT: DATE: " + joinRequestData.date);
Debug.Log("JOIN REQUEST EVENT: PLAYER STATE: AVATAR: " + joinRequestData.player.avatar);
Debug.Log("JOIN REQUEST EVENT: PLAYER STATE: CREDITIALS: " + joinRequestData.player.credentials);
Debug.Log("JOIN REQUEST EVENT: PLAYER STATE: ID: " + joinRequestData.player.id);
Debug.Log("JOIN REQUEST EVENT: PLAYER STATE: NAME: " + joinRequestData.player.name);
Debug.Log("JOIN REQUEST EVENT: PLAYER STATE: PLATFORM TYPE: " + joinRequestData.player.platformType);
Debug.Log("JOIN REQUEST EVENT: PLAYER STATE: PROJECT ID: " + joinRequestData.player.projectId);
Debug.Log("JOIN REQUEST EVENT: PLAYER STATE: SCORE: " + joinRequestData.player.score);
}
Игроки могут принять запрос, используя метод acceptJoinRequest
или отклонить через rejectJoinRequest
(подробнее см. в разделе Запросы).
Отмена запроса на вступление
+1 RequestДля отмены запроса на вступление в канал с идентификатором channelId: 123
используется метод gp.channels.cancelJoin
:
- JavaScript
- Unity
gp.channels.cancelJoin({ channelId: 123 });
GP_Channels.CancelJoin(channel_ID: 123);
Чтобы получить результат вызова метода, можно подписаться на события:
- JavaScript
- Unity
gp.channels.on('cancelJoin', () => {
// успешно отменил заявку на вступление
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnCancelJoinSuccess += OnCancelJoinSuccess;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnCancelJoinSuccess -= OnCancelJoinSuccess;
}
// успешно отменил заявку на вступление
private void OnCancelJoinSuccess() => Debug.Log("CANCEL JOIN: SUCCESS");
Выполнение с ошибкой:
- JavaScript
- Unity
gp.channels.on('error:cancelJoin', (err) => {
// завершен с ошибкой
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnCancelJoinError += OnCancelJoinError;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnCancelJoinError -= OnCancelJoinError;
}
private void OnCancelJoinError() => Debug.Log("CANCEL JOIN: ERROR");
Возможные ошибки приведены в таблице ниже:
базовые ошибки | сценарные ошибки |
---|---|
player_not_found | empty_channel_id |
project_not_found | channel_not_found |
origin_not_allowed | join_request_not_found 💡 |
player_banned | |
internal_error |
join_request_not_found 💡 - игрок не подавал заявку на вступление или отменил ее
Если игрок отменяет запрос на вступление в канал, то всем игрокам в канале (если они могут принимать запросы на вступление) приходит уведомление о том, что запрос на вступление был отменен:
- JavaScript
- Unity
gp.channels.on('event:cancelJoin', (joinRequest) => {
// ID канала
joinRequest.channelId;
// ID игрок, который подал запрос на вступление
joinRequest.playerId;
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnCancelJoinEvent += OnCancelJoinEvent;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnCancelJoinEvent -= OnCancelJoinEvent;
}
private void OnCancelJoinEvent(CancelJoinData data)
{
Debug.Log("CANCEL JOIN EVENT: CHANNEL ID: " + data.channelId);
Debug.Log("CANCEL JOIN EVENT: PLAYER ID: " + data.playerId);
}
Выход из канала
+1 RequestДля выхода из канала с идентификатором channelId: 123
:
- JavaScript
- Unity
gp.channels.leave({ channelId: 123 });
GP_Channels.Leave(channel_ID: 123);
Чтобы получить результат вызова метода, можно подписаться на события:
- JavaScript
- Unity
gp.channels.on('leave', () => {
// успешно покинул канал
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnLeaveSuccess += OnLeaveSuccess;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnLeaveSuccess -= OnLeaveSuccess;
}
// успешно покинул канал
private void OnLeaveSuccess() => Debug.Log("ON LEAVE CHANNEL: SUCCESS");
Выполнение с ошибкой:
- JavaScript
- Unity
gp.channels.on('error:leave', (err) => {
// завершен с ошибкой
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnLeaveError += OnLeaveError;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnLeaveError -= OnLeaveError;
}
// завершен с ошибкой
private void OnLeaveError() => Debug.Log("ON LEAVE CHANNEL: ERROR");
Возможные ошибки приведены в таблице ниже:
базовые ошибки | сценарные ошибки |
---|---|
player_not_found | empty_channel_id |
project_not_found | channel_not_found |
origin_not_allowed | player_not_in_channel |
player_banned | |
internal_error |
Игрок выходит из канала, и всем игрокам в канале приходит уведомление об этом событии event:leave
:
- JavaScript
- Unity
gp.channels.on('event:leave', (memberLeave) => {
// ID канала
memberLeave.channelId;
// ID вышедшего игрока
memberLeave.playerId;
// Причина выхода "leave"
memberLeave.reason;
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnLeaveEvent += OnLeaveEvent;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnLeaveEvent -= OnLeaveEvent;
}
private void OnLeaveEvent(MemberLeaveData data)
{
Debug.Log("ON LEAVE CHANNEL: CHANNEL ID: " + data.channelId);
Debug.Log("ON LEAVE CHANNEL: PLAYER ID: " + data.playerId);
Debug.Log("ON LEAVE CHANNEL: REASON: " + data.reason);
}
Исключение участника из канала
+1 RequestВладельца канала нельзя исключить из него
Для исключения участника playerId: 123456
из канала channelId: 123
:
- JavaScript
- Unity
gp.channels.kick({ channelId: 123, playerId: 123456 });
GP_Channels.Kick(channel_ID: 123, player_ID: 123456);
Чтобы получить результат вызова метода, можно подписаться на события:
- JavaScript
- Unity
gp.channels.on('kick', () => {
// успешно исключен
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnKick += OnKick;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnKick -= OnKick;
}
// успешно исключен
private void OnKick() => Debug.Log("KICK: SUCCESS");
Выполнение с ошибкой:
- JavaScript
- Unity
gp.channels.on('error:kick', (err) => {
// завершен с ошибкой
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnKickError += OnKickError;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnKickError -= OnKickError;
}
// завершен с ошибкой
private void OnKickError() => Debug.Log("KICK: ERROR");
Возможные ошибки приведены в таблице ниже:
базовые ошибки | сценарные ошибки |
---|---|
player_not_found | empty_channel_id |
project_not_found | channel_not_found |
origin_not_allowed | access_denied |
player_banned | player_not_in_channel |
internal_error |
Игрок выходит из канала и всем игрокам в канале приходит уведомление об этом событии event:leave
:
- JavaScript
- Unity
gp.channels.on('event:leave', (memberLeave) => {
// ID канала
memberLeave.channelId;
// ID вышедшего игрока
memberLeave.playerId;
// Причина выхода "kick"
memberLeave.reason;
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnLeaveEvent += OnLeaveEvent;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnLeaveEvent -= OnLeaveEvent;
}
private void OnLeaveEvent(MemberLeaveData data)
{
Debug.Log("ON LEAVE CHANNEL: CHANNEL ID: " + data.channelId);
Debug.Log("ON LEAVE CHANNEL: PLAYER ID: " + data.playerId);
Debug.Log("ON LEAVE CHANNEL: REASON: " + data.reason);
}
Получить участников
+1 RequestМожно посмотреть всех игроков (участников) в нужном канале и получить все их публичные данные. Присоединившись к чату, игрок будет видеть всех его участников:
- JavaScript
- Unity
const response = await gp.channels.fetchMembers({
channelId: 10,
// необязательные
// поиск по ID или имени или ID на площадке
search: '',
// искать только тех, кто в сети
onlyOnline: true,
// сколько запросить за раз, макс. 100
limit: 100,
// сколько записей пропустить, макс. 10000, используется для постраничной навигации или "подгрузить еще"
offset: 0
});
public void FetchMembers()
{
var filter = new FetchMembersFilter(Channel_ID: 10);
// поиск по ID или имени или ID на площадке
filter.search = "friend";
// искать только тех, кто в сети
filter.onlyOnline = true;
// сколько запросить за раз, макс. 100
filter.limit = 50;
// сколько записей пропустить, макс. 10000, используется для постраничной навигации или "подгрузить еще"
filter.offset = 0;
GP_Channels.FetchMembers(filter);
}
Чтобы получить результат вызова метода, можно подписаться на события:
- JavaScript
- Unity
gp.channels.on('fetchMembers', (result) => {
result.items - массив списка участников
result.canLoadMore - можно ли подгрузить еще участников
result.items.forEach((member) => {
// все поля участника
// id игрока
member.id
// сейчас в сети
member.isOnline
// публичные поля игрока
member.state
// Например имя, аватар и очки
member.state.name
member.state.avatar
member.state.score
// информация о мьюте игрока
member.mute
// замьючен или нет
member.mute.isMuted
// время снятия мьюта - дата в ISO 8601, если пустая строка - вечный мьют
member.mute.unmuteAt
});
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnFetchMembers += OnFetchMembers;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnFetchMembers -= OnFetchMembers;
}
private void OnFetchMembers(GP_Data data, bool canLoadMore)
{
var membersData = data.GetList<FetchMembersData>();
Debug.Log("FETCH MEMBERS: CAN LOAD MORE: " + canLoadMore);
for (int i = 0; i < membersData.Count; i++)
{
Debug.Log("FETCH MEMBERS: MEMBER: ID: " + membersData[i].id);
Debug.Log("FETCH MEMBERS: MEMBER: IS ONLINE: " + membersData[i].isOnline);
Debug.Log("FETCH MEMBERS: MEMBER: IS MUTED: " + membersData[i].mute.isMuted);
// время снятия мьюта - дата в ISO 8601, если пустая строка - вечный мьют
Debug.Log("FETCH MEMBERS: MEMBER: UNMUTE AT: " + membersData[i].mute.unmuteAt);
Debug.Log("FETCH MEMBERS: MEMBER: AVATAR: " + membersData[i].state.avatar);
Debug.Log("FETCH MEMBERS: MEMBER: CREDITIALS: " + membersData[i].state.credentials);
Debug.Log("FETCH MEMBERS: MEMBER: ID: " + membersData[i].state.id);
Debug.Log("FETCH MEMBERS: MEMBER: NAME: " + membersData[i].state.name);
Debug.Log("FETCH MEMBERS: MEMBER: PLATFORM TYPE: " + membersData[i].state.platformType);
Debug.Log("FETCH MEMBERS: MEMBER: PROJECT ID: " + membersData[i].state.projectId);
Debug.Log("FETCH MEMBERS: MEMBER: SCORE: " + membersData[i].state.score);
}
}
Выполнение с ошибкой:
- JavaScript
- Unity
gp.channels.on('error:fetchMembers', (err) => {
// завершен с ошибкой
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnFetchMembersError += OnFetchMembersError;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnFetchMembersError -= OnFetchMembersError;
}
// завершен с ошибкой
private void OnFetchMembersError() => Debug.Log("FETCH MEMBERS: ERROR");
Возможные ошибки приведены в таблице ниже:
базовые ошибки | сценарные ошибки |
---|---|
player_not_found | empty_channel_id |
project_not_found | channel_not_found |
origin_not_allowed | |
player_banned | |
internal_error |
Чтобы дополнительно подгрузить участников по такому же запросу, существует удобный метод:
- JavaScript
- Unity
const response = await gp.channels.fetchMoreMembers({
channelId: 10,
// необязательные
// поиск по ID или имени или ID на площадке
search: '',
// искать только тех, кто в сети
onlyOnline: true,
// сколько запросить за раз, макс. 100
limit: 100,
});
public void FetchMoreMembers()
{
var filter = new FetchMoreMembersFilter(Channel_ID: 10);
// поиск по ID или имени или ID на площадке
filter.search = "friend";
// искать только тех, кто в сети
filter.onlyOnline = true;
// сколько запросить за раз, макс. 100
filter.limit = 50;
GP_Channels.FetchMoreMembers(filter);
}
Чтобы получить результат вызова метода, можно подписаться на события:
- JavaScript
- Unity
gp.channels.on('fetchMoreMembers', (result) => {
result.items - массив списка участников
result.canLoadMore - можно ли подгрузить еще участников
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnFetchMoreMembers += OnFetchMoreMembers;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnFetchMoreMembers -= OnFetchMoreMembers;
}
private void OnFetchMoreMembers(GP_Data data, bool canLoadMore)
{
var membersData = data.GetList<FetchMembersData>();
Debug.Log("FETCH MORE MEMBERS: CAN LOAD MORE: " + canLoadMore);
for (int i = 0; i < membersData.Count; i++)
{
Debug.Log("FETCH MORE MEMBERS: MEMBER: ID: " + membersData[i].id);
Debug.Log("FETCH MORE MEMBERS: MEMBER: IS ONLINE: " + membersData[i].isOnline);
Debug.Log("FETCH MORE MEMBERS: MEMBER: IS MUTED: " + membersData[i].mute.isMuted);
Debug.Log("FETCH MORE MEMBERS: MEMBER: UNMUTE AT: " + membersData[i].mute.unmuteAt);
Debug.Log("FETCH MORE MEMBERS: MEMBER: AVATAR: " + membersData[i].state.avatar);
Debug.Log("FETCH MORE MEMBERS: MEMBER: CREDITIALS: " + membersData[i].state.credentials);
Debug.Log("FETCH MORE MEMBERS: MEMBER: ID: " + membersData[i].state.id);
Debug.Log("FETCH MORE MEMBERS: MEMBER: NAME: " + membersData[i].state.name);
Debug.Log("FETCH MORE MEMBERS: MEMBER: PLATFORM TYPE: " + membersData[i].state.platformType);
Debug.Log("FETCH MORE MEMBERS: MEMBER: PROJECT ID: " + membersData[i].state.projectId);
Debug.Log("FETCH MORE MEMBERS: MEMBER: SCORE: " + membersData[i].state.score);
}
}
Выполнение с ошибкой:
- JavaScript
- Unity
gp.channels.on('error:fetchMoreMembers', (err) => {
// завершен с ошибкой
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnFetchMoreMembersError += OnFetchMoreMembersError;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnFetchMoreMembersError -= OnFetchMoreMembersError;
}
// завершен с ошибкой
private void OnFetchMoreMembersError() => Debug.Log("FETCH MORE MEMBERS: ERROR");
Возможные ошибки приведены в таблице ниже:
базовые ошибки | сценарные ошибки |
---|---|
player_not_found | empty_channel_id |
project_not_found | channel_not_found |
origin_not_allowed | |
player_banned | |
internal_error |
Мьют игрока 🔇
+1 Request/mute. Владельца канала нельзя замьютить
Чтобы замьютить игрока playerId: 123456
в канале channelId: 123
используется метод gp.channels.mute
.
- JavaScript
- Unity
gp.channels.mute({
channelId: 123,
playerId: 123456,
unmuteAt: '2022-12-01T04:52:26+0000' });
GP_Channels.Mute(channel_ID: 123, player_ID: 123456, unmuteAt: "2022-12-01T04:52:26+0000");
Альтернативный вариант с возможностью задать количество секунд, на которые требуется замьютить игрока:
- JavaScript
- Unity
// замьютить на 5 минут
gp.channels.mute({ channelId: 123, playerId: 123456, seconds: 5 * 60 });
// замьютить на 5 минут
GP_Channels.Mute(channel_ID: 123, player_ID: 123456, seconds: 5 * 60);
Разработчик самостоятельно устанавливает время, на которое следует замьютить игрока, с помощью unmuteAt
. Если значение unmuteAt
не передано, то игрок глушится на неограниченное время.
Чтобы получить результат вызова метода, можно подписаться на события:
- JavaScript
- Unity
gp.channels.on('mute', () => {
// успешно замьючен
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnMuteSuccess += OnMuteSuccess;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnMuteSuccess -= OnMuteSuccess;
}
// успешно замьючен
private void OnMuteSuccess() => Debug.Log("MUTE: SUCCESS");
Выполнение с ошибкой:
- JavaScript
- Unity
gp.channels.on('error:mute', (err) => {
// завершен с ошибкой
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnMuteError += OnMuteError;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnMuteError -= OnMuteError;
}
// завершен с ошибкой
private void OnMuteError() => Debug.Log("MUTE: ERROR");
Возможные ошибки приведены в таблице ниже:
базовые ошибки | сценарные ошибки |
---|---|
player_not_found | empty_channel_id |
project_not_found | channel_not_found |
origin_not_allowed | access_denied |
player_banned | wrong_time_format 💡 |
internal_error |
wrong_time_format 💡 - передан неверный формат даты снятия блокировки
При заглушении игрока всем участникам в канале приходит уведомление:
- JavaScript
- Unity
gp.channels.on('event:mute', (mute) => {
// ID канала
mute.channelId;
// ID замьюченного игрока
mute.playerId;
// Дата размьюта
mute.unmuteAt;
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnMuteEvent += OnMuteEvent;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnMuteEvent -= OnMuteEvent;
}
private void OnMuteEvent(MuteData data)
{
Debug.Log("MUTE EVENT: CHANNEL ID: " + data.channelId);
Debug.Log("MUTE EVENT: PLAYER ID: " + data.playerId);
Debug.Log("MUTE EVENT: UNMUTE AT: " + data.unmuteAt);
}
Размьютить игрока 🔉
+1 Request/unmute
Вновь разрешить игроку playerId: 123456
писать сообщение в канале channelId: 123
можно с помощью метода gp.channels.unmute
:
- JavaScript
- Unity
gp.channels.unmute({ channelId: 123, playerId: 123456 });
GP_Channels.UnMute(channel_ID: 123, player_ID: 123456);
Чтобы получить результат вызова метода, можно подписаться на события:
- JavaScript
- Unity
gp.channels.on('unmute', () => {
// успешно размьючен
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnUnmuteSuccess += OnUnmuteSuccess;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnUnmuteSuccess -= OnUnmuteSuccess;
}
// успешно размьючен
private void OnUnmuteSuccess() => Debug.Log("UNMUTE: SUCCESS");
Выполнение с ошибкой:
- JavaScript
- Unity
gp.channels.on('error:unmute', (err) => {
// завершен с ошибкой
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnUnmuteError += OnUnmuteError;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnUnmuteError -= OnUnmuteError;
}
// завершен с ошибкой
private void OnUnmuteError() => Debug.Log("UNMUTE: ERROR");
Возможные ошибки приведены в таблице ниже:
базовые ошибки | сценарные ошибки |
---|---|
player_not_found | empty_channel_id |
project_not_found | channel_not_found |
origin_not_allowed | access_denied |
player_banned | not_muted |
internal_error |
При этом всем участникам в канале приходит уведомление:
- JavaScript
- Unity
gp.channels.on('event:unmute', (mute) => {
// ID канала
mute.channelId;
// ID размьюченного игрока
mute.playerId;
});
// подписка на событие
private void OnEnable()
{
GP_Channels.OnUnmuteEvent += OnUnmuteEvent;
}
// отписка от события
private void OnDisable()
{
GP_Channels.OnUnmuteEvent -= OnUnmuteEvent;
}
private void OnUnmuteEvent(UnmuteData data)
{
Debug.Log("UNMUTE EVENT: CHANNEL ID: " + data.channelId);
Debug.Log("UNMUTE EVENT: PLAYER ID: " + data.playerId);
}
Оставайтесь на связи
С другими разделами документации вы можете ознакомиться здесь. Для начала работы вы можете ознакомиться с нашими туториалами.
Сообщество GamePush в Telegram
: @gs_community.
Для ваших обращений e-mail
: [email protected]
Желаем вам успехов!