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

	$messageRes = ImModelMessageTable::getByPrimary($messageId);
	if (!($message = $messageRes->fetch()))
	{
		return false;
	}

	if (isset($messageFields['ATTACH']) && (!$messageFields['ATTACH'] instanceof CIMMessageParamAttach))
	{
		$messageFields['ATTACH'] = CIMMessageParamAttach::getAttachByJson($messageFields['ATTACH']);
	}

	if (isset($messageFields['KEYBOARD']) && (!$messageFields['KEYBOARD'] instanceof Keyboard))
	{
		$keyboard = ['BOT_ID' => static::getBotId()];
		if (!isset($messageFields['KEYBOARD']['BUTTONS']))
		{
			$keyboard['BUTTONS'] = $messageFields['KEYBOARD'];
		}
		else
		{
			$keyboard = $messageFields['KEYBOARD'];
		}
		$messageFields['KEYBOARD'] = Keyboard::getKeyboardByJson($keyboard, [], ['ENABLE_FUNCTIONS' => 'Y']);
	}

	if (!empty($messageFields['FILES']) && is_array($messageFields['FILES']))
	{
		if (!$messageFields['ATTACH'])
		{
			$messageFields['ATTACH'] = new CIMMessageParamAttach(null, CIMMessageParamAttach::CHAT);
		}
		foreach ($messageFields['FILES'] as $value)
		{
			if ($value['type'] === 'image')
			{
				$messageFields['ATTACH']->addImages([[
					'NAME' => $value['name'],
					'LINK' => $value['link'],
					'WIDTH' => (int)$value['width'],
					'HEIGHT' => (int)$value['height'],
				]]);
			}
			else
			{
				$messageFields['ATTACH']->addFiles([[
					'NAME' => $value['name'],
					'LINK' => $value['link'],
					'SIZE' => $value['size'],
				]]);
			}
		}
	}

	$userId = 0;
	if (isset($messageFields['TO_USER_ID']))
	{
		$userId = (int)$messageFields['TO_USER_ID'];
	}
	elseif (isset($messageFields['DIALOG_ID']))
	{
		if (!ImCommon::isChatId($messageFields['DIALOG_ID']))
		{
			$userId = (int)$messageFields['DIALOG_ID'];
		}
	}

	$messageFields['MESSAGE'] = static::replacePlaceholders($messageFields['MESSAGE'], $userId);

	return ImBot::updateMessage(['BOT_ID' => static::getBotId()], [
		'MESSAGE_ID' => $messageId,
		'MESSAGE' => $messageFields['MESSAGE'],
		'KEYBOARD' => $messageFields['KEYBOARD'] ?? null,
		'ATTACH' => $messageFields['ATTACH'] ?? null,
		'URL_PREVIEW' => ($messageFields['URL_PREVIEW'] === 'Y' ? 'Y' : 'N'),
		'EDIT_FLAG' => ($messageFields['EDIT_FLAG'] === 'N' ? 'N' : 'Y'),
		'SKIP_CONNECTOR' => 'Y',
	]);
}