• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Message/Reaction/ReactionService.php
  • Класс: BitrixImV2MessageReactionReactionService
  • Вызов: ReactionService::addReaction
public function addReaction(string $reaction, bool $byEvent = false): Result
{
	$result = new Result();
	$reactionItem = new ReactionItem();
	$reactionItem
		->setMessageId($this->message->getMessageId())
		->setChatId($this->message->getChatId())
		->setUserId($this->getContext()->getUserId())
		->setContext($this->getContext())
		->setReaction($reaction)
	;

	$this->deleteAllReactions();

	try
	{
		$saveResult = $reactionItem->save();
		if (!$saveResult->isSuccess())
		{
			return $result->addErrors($saveResult->getErrors());
		}
	}
	catch (SystemException $exception)
	{
		return $result->addError(new ReactionError(ReactionError::ALREADY_SET));
	}

	if (!$byEvent && $this->isMessageLiveChat())
	{
		$this->processAddForLiveChat($reaction);
	}

	if ($this->withLegacy)
	{
		$this->addLegacy();
	}

	$this->sendNotification($reactionItem);

	(new PushService())->add($reactionItem);

	return $result;
}