- Модуль: imbot
- Путь к файлу: ~/bitrix/modules/imbot/lib/bot/network.php
- Класс: BitrixImBotBotNetwork
- Вызов: Network::switchButtonsAvailability
static function switchButtonsAvailability(bool $availability, int $messageId, bool $sendPullNotify = true)
{
if (!MainLoader::includeModule('im'))
{
return false;
}
if ($messageId <= 0)
{
return false;
}
$messageRes = ImModelMessageTable::getList([
'select' => ['ID'],
'filter' => [
'=ID' => $messageId,
'=AUTHOR_ID' => static::getBotId(),
],
]);
if (!($message = $messageRes->fetch()))
{
return false;
}
$messageParamRes = ImModelMessageParamTable::getList([
'select' => [
'PARAM_NAME',
'PARAM_VALUE',
'PARAM_JSON',
],
'filter' => [
'=MESSAGE_ID' => $messageId,
'=PARAM_NAME' => self::MESSAGE_PARAM_KEYBOARD,
]
]);
$messageParamData = [];
while ($row = $messageParamRes->fetch())
{
$messageParamData[$row['PARAM_NAME']] = $row;
}
if (empty($messageParamData) || !isset($messageParamData[self::MESSAGE_PARAM_KEYBOARD]))
{
return false;
}
try
{
$buttons = MainWebJson::decode($messageParamData[self::MESSAGE_PARAM_KEYBOARD]['PARAM_JSON']);
}
catch (MainArgumentException $e)
{
}
if (empty($buttons) || !is_array($buttons))
{
return false;
}
$keyboard = new Keyboard(static::getBotId());
foreach ($buttons as $buttonData)
{
if ($availability)
{
$buttonData['BG_COLOR'] = static::BUTTON_DEFAULT_COLOR;
$buttonData['DISABLED'] = 'N';
}
else
{
$buttonData['BG_COLOR'] = static::BUTTON_DISABLED_COLOR;
$buttonData['DISABLED'] = 'Y';
}
$keyboard->addButton($buttonData);
}
CIMMessageParam::set($messageId, [self::MESSAGE_PARAM_KEYBOARD => $keyboard]);
if ($sendPullNotify)
{
CIMMessageParam::sendPull($messageId, [self::MESSAGE_PARAM_KEYBOARD]);
}
return true;
}