- Модуль: 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;
}
}
}