• Модуль: imbot
  • Путь к файлу: ~/bitrix/modules/imbot/lib/bot/support24.php
  • Класс: BitrixImBotBotSupport24
  • Вызов: Support24::onChatStart
static function onChatStart($dialogId, $joinFields)
{
	if (!MainLoader::includeModule('im'))
	{
		return false;
	}

	$messageFields = $joinFields;
	$messageFields['DIALOG_ID'] = $dialogId;

	if (!self::checkMembershipRestriction($messageFields))
	{
		$groupLimited = self::getMessage('GROUP_LIMITED');
		if ($groupLimited)
		{
			self::sendMessage([
				'DIALOG_ID' => $messageFields['DIALOG_ID'],
				'MESSAGE' => $groupLimited,
				'URL_PREVIEW' => 'N'
			]);
		}

		(new CIMChat(self::getBotId()))->deleteUser(mb_substr($dialogId, 4), self::getBotId());

		return true;
	}

	// specialized support chats
	if (
		$messageFields['MESSAGE_TYPE'] === IM_MESSAGE_CHAT
		&& $messageFields['CHAT_ENTITY_TYPE'] === self::CHAT_ENTITY_TYPE
		&& self::hasBotMenu()
	)
	{
		if ($joinFields['ACCESS_HISTORY'] ?? true) // suppress menu showing on calling restoreQuestionHistory()
		{
			self::showMenu(['DIALOG_ID' => $dialogId]);
		}
		return true;
	}

	// welcome message
	$message = '';
	if (
		self::isActivePartnerSupport()
		&& !self::isUserIntegrator($messageFields['USER_ID'])
	)
	{
		$message = self::getMessage('MESSAGE_PARTNER');
	}
	else if (self::getSupportLevel() == self::SUPPORT_LEVEL_FREE)
	{
		if (self::isUserIntegrator($messageFields['USER_ID']))
		{
			$message = self::getMessage('WELCOME_INTEGRATOR');
		}
		else if (self::isActiveFreeSupport())
		{
			if (self::isActiveFreeSupportForUser($messageFields['USER_ID']))
			{
				$message = self::getMessage('WELCOME');
			}
			else
			{
				$message = self::getMessage('WELCOME_LIMITED');
			}
		}
		else
		{
			$message = self::getMessage('WELCOME_END');
		}
	}
	else if (self::getSupportLevel() == self::SUPPORT_LEVEL_PAID)
	{
		if (self::isUserIntegrator($messageFields['USER_ID']))
		{
			$message = self::getMessage('WELCOME_INTEGRATOR');
		}
		else if (self::isActivePaidSupportForUser($messageFields['USER_ID']))
		{
			$message = self::getMessage('WELCOME');
		}
		else
		{
			$message = self::getMessage('WELCOME_LIMITED');
		}
	}
	if (!empty($message))
	{
		CUserOptions::setOption(
			self::MODULE_ID,
			self::OPTION_BOT_WELCOME_SHOWN,
			time(),
			false,
			$messageFields['USER_ID']
		);

		self::sendMessage([
			'DIALOG_ID' => $messageFields['USER_ID'],
			'MESSAGE' => $message,
			'URL_PREVIEW' => 'N'
		]);
	}

	if (
		self::getSupportLevel() == self::SUPPORT_LEVEL_FREE
		&& self::isActiveFreeSupport()
		&& self::isActiveFreeSupportForUser($messageFields['USER_ID'])
	)
	{
		self::scheduleAction($messageFields['USER_ID'], self::SCHEDULE_ACTION_INVOLVEMENT, '', 24*60);
	}

	return true;
}