• Модуль: imbot
  • Путь к файлу: ~/bitrix/modules/imbot/lib/bot/marta.php
  • Класс: BitrixImBotBotMarta
  • Вызов: Marta::register
static function register(array $params = Array())
{
	if (!BitrixMainLoader::includeModule('im'))
		return false;

	$language = null;
	if (isset($params['LANG']))
	{
		$language = $params['LANG'];
		Loc::loadLanguageFile(__FILE__, $language);
	}
	$language = in_array($language, Array('ru', 'en'))? $language: 'ru';

	$agentMode = isset($params['AGENT']) && $params['AGENT'] == 'Y';

	if (self::getBotId())
		return $agentMode? "": self::getBotId();

	$birthday = new BitrixMainTypeDateTime(Loc::getMessage('IMBOT_BOT_BIRTHDAY', null, $language).' 19:45:00', 'Y-m-d H:i:s');
	$birthday = $birthday->format(BitrixMainTypeDate::convertFormatToPhp(CSite::GetDateFormat('SHORT')));

	$botId = BitrixImBot::register(Array(
		'CODE' => self::BOT_CODE,
		'TYPE' => BitrixImBot::TYPE_HUMAN,
		'MODULE_ID' => self::MODULE_ID,
		'CLASS' => __CLASS__,
		'LANG' => $language,
		'OPENLINE' => 'Y',
		'INSTALL_TYPE' => BitrixImBot::INSTALL_TYPE_SILENT,
		'METHOD_MESSAGE_ADD' => 'onMessageAdd',
		'METHOD_WELCOME_MESSAGE' => 'onChatStart',
		'METHOD_BOT_DELETE' => 'onBotDelete',
		'PROPERTIES' => Array(
			'NAME' => Loc::getMessage('IMBOT_BOT_NAME', null, $language),
			'COLOR' => Loc::getMessage('IMBOT_BOT_COLOR', null, $language),
			//'EMAIL' => Loc::getMessage('IMBOT_BOT_EMAIL', null, $language),
			'PERSONAL_BIRTHDAY' => $birthday,
			'WORK_POSITION' => Loc::getMessage('IMBOT_BOT_WORK_POSITION', null, $language),
			'PERSONAL_WWW' => Loc::getMessage('IMBOT_BOT_SITE', null, $language),
			'PERSONAL_GENDER' => Loc::getMessage('IMBOT_BOT_GENDER', null, $language),
			'PERSONAL_PHOTO' => self::uploadAvatar($language),
		)
	));
	if ($botId)
	{
		self::setBotId($botId);

		$eventManager = BitrixMainEventManager::getInstance();
		$eventManager->registerEventHandlerCompatible("timeman", "OnAfterTMDayStart", self::MODULE_ID, __CLASS__,  "onAfterTmDayStart");

		BitrixImCommand::register(Array(
			'MODULE_ID' => self::MODULE_ID,
			'BOT_ID' => $botId,
			'COMMAND' => 'tictactoe',
			'CLASS' => __CLASS__,
			'HIDDEN' => 'Y',
			'METHOD_COMMAND_ADD' => 'onCommandAdd'
		));

		BitrixImCommand::register(Array(
			'MODULE_ID' => self::MODULE_ID,
			'BOT_ID' => $botId,
			'COMMAND' => 'lang',
			'HIDDEN' => 'Y',
			'CLASS' => __CLASS__,
			'METHOD_COMMAND_ADD' => 'onLocalCommandAdd'
		));

		BitrixImCommand::register(Array(
			'MODULE_ID' => self::MODULE_ID,
			'BOT_ID' => $botId,
			'COMMAND' => 'disable',
			'HIDDEN' => 'Y',
			'CLASS' => __CLASS__,
			'METHOD_COMMAND_ADD' => 'onSettingsCommandAdd'
		));

		BitrixImCommand::register(Array(
			'MODULE_ID' => self::MODULE_ID,
			'BOT_ID' => $botId,
			'COMMAND' => 'enable',
			'HIDDEN' => 'Y',
			'CLASS' => __CLASS__,
			'METHOD_COMMAND_ADD' => 'onSettingsCommandAdd'
		));

		if (BitrixMainLoader::includeModule('bitrix24'))
		{
			BitrixImCommand::register(Array(
				'MODULE_ID' => "bitrix24",
				'BOT_ID' => $botId,
				'HIDDEN' => 'Y',
				'COMMAND' => 'supportAccess',
				'CLASS' => "CBitrix24EventHandlers",
				'METHOD_COMMAND_ADD' => 'OnSupportAccess'
			));

			if (!CBitrix24::isDomainChanged())
			{
				RegisterModuleDependences("bitrix24", "OnDomainChange", self::MODULE_ID, __CLASS__, "onRenamePortalDomainChange");
				CAgent::AddAgent('\Bitrix\ImBot\Bot\Marta::addRenameMessageAgent();', "imbot", "N", 86400, "", "Y", ConvertTimeStamp(time()+CTimeZone::GetOffset()+86400, "FULL"));
			}
		}

		BitrixImApp::register(Array(
			'MODULE_ID' => 'imbot',
			'BOT_ID' => $botId,
			'CODE' => 'play',
			'ICON_ID' => self::uploadIcon('play'),
			'CLASS' => __CLASS__,
			'METHOD_LANG_GET' => 'onAppLang',
			'JS' => 'BXIM.sendMessage("/play")',
			'CONTEXT' => 'bot',
		));
	}

	return $agentMode? "": $botId;
}