• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/bot.php
  • Класс: BitrixImBot
  • Вызов: Bot::updateMessage
static function updateMessage(array $bot, array $messageFields)
{
	$botId = $bot['BOT_ID'];
	$moduleId = isset($bot['MODULE_ID'])? $bot['MODULE_ID']: '';
	$appId = isset($bot['APP_ID'])? $bot['APP_ID']: '';

	if (intval($botId) <= 0)
		return false;

	if (!BitrixImUser::getInstance($botId)->isExists() || !BitrixImUser::getInstance($botId)->isBot())
		return false;

	$bots = self::getListCache();
	if (!isset($bots[$botId]))
		return false;

	if ($moduleId <> '' && $bots[$botId]['MODULE_ID'] != $moduleId)
		return false;

	if ($appId <> '' && $bots[$botId]['APP_ID'] != $appId)
		return false;

	$messageId = intval($messageFields['MESSAGE_ID']);
	if ($messageId <= 0)
		return false;

	$message = CIMMessenger::CheckPossibilityUpdateMessage(IM_CHECK_UPDATE, $messageId, $botId);
	if (!$message)
		return false;

	if (isset($messageFields['ATTACH']))
	{
		if (empty($messageFields['ATTACH']) || $messageFields['ATTACH'] == 'N')
		{
			CIMMessageParam::Set($messageId, Array('ATTACH' => Array()));
		}
		else if ($messageFields['ATTACH'] instanceof CIMMessageParamAttach)
		{
			if ($messageFields['ATTACH']->IsAllowSize())
			{
				CIMMessageParam::Set($messageId, Array('ATTACH' => $messageFields['ATTACH']));
			}
		}
	}

	if (isset($messageFields['KEYBOARD']))
	{
		if (empty($messageFields['KEYBOARD']) || $messageFields['KEYBOARD'] == 'N')
		{
			CIMMessageParam::Set($messageId, Array('KEYBOARD' => 'N'));
		}
		else if ($messageFields['KEYBOARD'] instanceof BitrixImBotKeyboard)
		{
			if ($messageFields['KEYBOARD']->isAllowSize())
			{
				CIMMessageParam::Set($messageId, Array('KEYBOARD' => $messageFields['KEYBOARD']));
			}
		}
	}

	if (isset($messageFields['MENU']))
	{
		if (empty($messageFields['MENU']) || $messageFields['MENU'] == 'N')
		{
			CIMMessageParam::Set($messageId, Array('MENU' => 'N'));
		}
		else if ($messageFields['MENU'] instanceof BitrixImBotContextMenu)
		{
			if ($messageFields['MENU']->isAllowSize())
			{
				CIMMessageParam::Set($messageId, Array('MENU' => $messageFields['MENU']));
			}
		}
	}

	if (isset($messageFields['MESSAGE']))
	{
		$urlPreview = isset($messageFields['URL_PREVIEW']) && $messageFields['URL_PREVIEW'] == "N"? false: true;
		$skipConnector = isset($messageFields['SKIP_CONNECTOR']) && $messageFields['SKIP_CONNECTOR'] == "Y"? true: false;
		$editFlag = isset($messageFields['EDIT_FLAG']) && $messageFields['EDIT_FLAG'] == "Y"? true: false;

		$res = CIMMessenger::Update($messageId, $messageFields['MESSAGE'], $urlPreview, $editFlag, $botId, $skipConnector);
		if (!$res)
		{
			return false;
		}
	}
	CIMMessageParam::SendPull($messageId, Array('KEYBOARD', 'ATTACH', 'MENU'));

	return true;
}