• Модуль: imbot
  • Путь к файлу: ~/bitrix/modules/imbot/lib/bot/network.php
  • Класс: BitrixImBotBotNetwork
  • Вызов: Network::getRecentDialogs
static function getRecentDialogs(int $hoursDepth = 168): iterable
{
	$botId = static::getBotId();
	$depth = $hoursDepth * 3600;
	$query = "
		SELECT
			RU.USER_ID,
			RU.CHAT_ID,
			RU.MESSAGE_TYPE, 
			IF(UNIX_TIMESTAMP(M.DATE_CREATE) > UNIX_TIMESTAMP() - {$depth}, 'Y', 'N') RECENTLY_TALK,
			M.ID AS MESSAGE_ID
		FROM
			b_im_relation RB
			INNER JOIN b_im_relation RU 
				ON RB.CHAT_ID = RU.CHAT_ID
			LEFT JOIN b_im_message M 
				ON RU.LAST_ID = M.ID
		WHERE
			RB.USER_ID = {$botId}
			and RU.USER_ID != {$botId}
			and RB.MESSAGE_TYPE IN('".IM_MESSAGE_PRIVATE."', '".IM_MESSAGE_CHAT."')
			and RU.MESSAGE_TYPE IN('".IM_MESSAGE_PRIVATE."', '".IM_MESSAGE_CHAT."')
	";
	if ($res = MainApplication::getInstance()->getConnection()->query($query))
	{
		while ($dialog = $res->fetch())
		{
			if ($dialog['USER_ID'] == $botId)
			{
				continue;
			}

			yield $dialog;
		}
	}
}