Без регистрации, отправки смс-сообщений и прав модератора.
В продолжение темы полезных скриптов и инструментов. Недавно мы рассмотрели пример кастомного решения, с помощью которого можно сменить владельца чата в коробочной версии Битрикс24. Сегодня мы реализуем скрипт, который позволит исключать пользователей из чата без получения прав модератора.
Механизм достаточно узконаправленный, но иногда в нем возникает необходимость. Например, модератор чата в данный момент недоступен, при этом есть острая необходимость исключить из чата одного или нескольких сотрудников. В этом нам поможет метод CIMChat::DeleteUser()
. С исходным кодом можно ознакомиться здесь.
Функция принимает 5 значений. Первые 3 — нам уже знакомы:
$chatId
— уникальный идентификатор чата
$userId
— идентификатор нового владельца чата
$checkPermission
— проверка прав. передаем false чтобы выполнять операцию мог не только модератор чата
$skipMessage
и $skipRecent
— отвечают за отключение отправки системного уведомления об исключении пользователя. Передаем true, напишем собственное уведомление
Создадим HTML-форму:
<form method="post" action="?exclude_user=YES"> <div class="form-control"> <div class="form-group"> <label>ID чата</label> <input type="text" class="form-control" id="chatId" name="chatId"> </div> <div class="form-group"> <label>ID исключаемого пользователя</label> <input type="text" class="form-control" id="userId" name="userId"> </div> </div> <button type="submit" id="send" name="send" class="btn btn-primary">Исключить пользователя</button> </form>
Идентификатор чата, как нам уже известно из предыдущей статьи, можно узнать с помощью служебной команды /getChatId.
Код обработчика:
if (CModule::IncludeModule('im')) { $chatId = $_POST['chatId']; $userId = $_POST['userId']; //получаем данные о пользователе $rsUser = CUser::GetByID($userId); $arUser = $rsUser->Fetch(); $CElement = new CIMChat; $change = $CElement->DeleteUser($chatId, $userId, false, true, true); if ($change == 1){ /*отправляем уведомление*/ $ar = Array( "TO_CHAT_ID" => $chatId, // ID чата "FROM_USER_ID" => 0, "SYSTEM" => Y, "MESSAGE" => "Администратор исключил ".$arUser['NAME']." ".$arUser['LAST_NAME']." из чата.", ); CIMChat::AddMessage($ar); echo 'Пользователь успешно исключен из чата!'; }else{ echo'В процессе выполнения скрипта возникла ошибка. '; } }
Оставить комментарий