• Модуль: imbot
  • Путь к файлу: ~/bitrix/modules/imbot/lib/bot/network.php
  • Класс: BitrixImBotBotNetwork
  • Вызов: Network::onCommandAdd
static function onCommandAdd($messageId, $messageFields)
{
	$command = static::getCommandByMessage($messageFields);
	if (!$command)
	{
		return false;
	}

	if ($messageFields['COMMAND'] === self::COMMAND_NETWORK_SESSION)
	{
		if (empty($messageFields['CONNECTOR_MID']))
		{
			$messageParams = CIMMessageParam::get($messageId, self::MESSAGE_PARAM_CONNECTOR_MID);
			$messageFields['CONNECTOR_MID'] = $messageParams[0];
		}

		self::disableMessageButtons((int)$messageId);

		self::clientCommandSend([
			'BOT_ID' => static::getBotId(),
			'USER_ID' => $messageFields['FROM_USER_ID'],
			'DIALOG_ID' => $messageFields['DIALOG_ID'],
			'MESSAGE_ID' => $messageFields['CONNECTOR_MID'],
			'CONNECTOR_MID' => $messageId,
			'COMMAND' => $messageFields['COMMAND'],
			'COMMAND_ID' => $messageFields['COMMAND_ID'],
			'COMMAND_PARAMS' => $messageFields['COMMAND_PARAMS'],
			'COMMAND_CONTEXT' => $messageFields['COMMAND_CONTEXT'],
		]);

		return true;
	}

	elseif ($messageFields['COMMAND'] === self::COMMAND_UNREGISTER)
	{
		$grantAccess = MainModuleManager::isModuleInstalled('bitrix24')
			? self::getCurrentUser()->canDoOperation('bitrix24_config')
			: self::getCurrentUser()->isAdmin();

		if ($grantAccess)
		{
			$botData = ImBot::getCache($messageFields['TO_USER_ID']);
			if ($botData['CLASS'] === __CLASS__)
			{
				return self::unRegister($botData['APP_ID']);
			}
		}
	}

	return false;
}