Иконка ресурса

Chat 2 by Siropu 2.2.11

Нет прав для скачивания
Как права настроены, там с одной из версий логика изменилась, но вот как нужно будет пересмотреть.
 
Как сделать ссылку на сообщение в чате сайт/chat/message/номер/link доступной только пользователям?

Как права настроены, там с одной из версий логика изменилась, но вот как нужно будет пересмотреть.
Если мы говорим о настройке в части /admin.php?permissions/user-groups/ - то там, например, для админа везде "да".
Там в настройках особо ничего и не влияет на участие в комнатах...

В настройках чатах триггерит на "Включить комнаты - Если включено, пользователи смогут общаться в комнатах" - достаточно отключить функцию, и чат пропадает со всех мест отображения.
 
Последнее редактирование модератором:
При создании чата ввели комнаты, сейчас решили отказаться от них. Оставили одну комнату (ее удалить и нельзя). Если в функционале убрать "Использовать комнаты", то чат воообще выключается. Как вернуться к чату без комнат, чтобы все работало?
в настройках чата Подключаться к комнатам, сделайте к 1-ой (см. вложение), при этом галочка "Использовать комнаты" в настройках остается.
 

Вложения

  • чат.jpg
    чат.jpg
    24.2 KB · Просмотры: 21
Есть обработчик Siropu\Chat\Command\Roll:
PHP:
<?php

namespace Siropu\Chat\Command;

class Roll
{
     protected static $defaultOptions = [
          'default_dice_count' => 1,
          'default_dice_sides' => 6,
          'max_dice_count'     => 1,
          'max_dice_sides'     => 6,
          'dice_sum'           => 0
     ];

     public static function run(\XF\Mvc\Controller $controller, \Siropu\Chat\Entity\Command $command, $messageEntity, $input)
     {
          if ($controller->isRoomChannel() && $controller->getChatSettings()['hide_bot'])
          {
               return $controller->message(\XF::phrase('siropu_chat_bot_hidden_error'));
          }

          $inputClean = str_replace(['+', '-'], [' +', ' -'], $input);
          $roll       = $input ? array_map('trim', preg_split('/[\s,]/', $inputClean, null, PREG_SPLIT_NO_EMPTY)) : [];

          $diceCount = isset($command->command_options['default_dice_count'])
               ? $command->command_options['default_dice_count']
               : self::$defaultOptions['default_dice_count'];

          $diceSides = isset($command->command_options['default_dice_sides'])
               ? $command->command_options['default_dice_sides']
               : self::$defaultOptions['default_dice_sides'];

          $diceMaxCount = isset($command->command_options['max_dice_count'])
               ? $command->command_options['max_dice_count']
               : self::$defaultOptions['max_dice_count'];

          $diceMaxSides = isset($command->command_options['max_dice_sides'])
               ? $command->command_options['max_dice_sides']
               : self::$defaultOptions['max_dice_sides'];

          $diceSum = isset($command->command_options['dice_sum'])
               ? $command->command_options['dice_sum']
               : self::$defaultOptions['dice_sum'];

          $dice   = $diceCount . 'd' . $diceSides;
          $result = [];

          if (isset($roll[0]) && preg_match('/([0-9]+)d([0-9]+)/i', $roll[0], $match))
          {
               $dice      = $match[0];
               $diceCount = (int) $match[1];
               $diceSides = (int) $match[2];

               if ($diceCount > $diceMaxCount || $diceSides > $diceMaxSides)
               {
                    return $controller->error(\XF::phrase('siropu_chat_roll_command_limit_error',
                         ['dice' => "{$diceMaxCount}d{$diceMaxSides}"]));
               }

               if ($diceCount < 1 || $diceSides < 1)
               {
                    return $controller->error(\XF::phrase('siropu_chat_roll_command_minimum_error'));
               }
          }

          for ($i = 0; $i < $diceCount; $i++)
          {
               $result[] = rand(1, $diceSides);
          }

          $diceTotalSum = array_sum($result);

          if (count($roll) >= 1)
          {
               $modPlus  = 0;
               $modMinus = 0;

               foreach ($roll as $modifier)
               {
                    if (strpos($modifier, '+') !== false)
                    {
                         $modPlus = (int) $modifier;
                    }
                    if (strpos($modifier, '-') !== false)
                    {
                         $modMinus = (int) $modifier;
                    }
               }

               $diceTotalSum += $modPlus - $modMinus;
          }

          if (!empty($modPlus))
          {
               $dice .= ' +' . $modPlus;
          }

          if (!empty($modMinus))
          {
               $dice .= ' -' . $modMinus;
          }

          $userId   = $messageEntity->message_user_id;
          $username = $messageEntity->message_username;

          if ($userId)
          {
               $user = '[USER=' . $userId . ']' . $username . '[/USER]';
          }
          else
          {
               $user = '(' . \XF::phrase('guest') . ') [B]' . $username . '[/B]';
          }

          $messageEntity->message_type = 'bot';
          $messageEntity->message_text = \XF::phrase('siropu_chat_roll_command_result', [
               'user'   => new \XF\PreEscaped($user),
               'dice'   => $dice,
               'result' => $diceSum ? $diceTotalSum : (implode(',', $result))
          ]);
     }
}
=
Он выводит результат броска кубика (если кол-во сторон default_dice_sides есть число 6).
Если же использовать число 3, то результатом будут случайные числа 1,2,3. Есть возможность в этом коде заменить генерируемые числа на буквы?

Найденное решение:

$result[] = rand(1, $diceSides);

заменить на:

$permitted_chars = 'ABC';
substr(str_shuffle($permitted_chars), 0, 1);
 
Последнее редактирование:
Подскажите пожалуйста, поставил чат, но на сайте его нигде нет, в админке все включено при этом
 
А не подскажете, как добавляется своя собственная команда?
Допустим я в чат хочу добавить команды, которые позволят взаимодействовать друг с другом участникам.
Ну вот написал человек пнуть и указал пользователя, бот выводит сообщение nick пнул unnamed.
Как такие команды создавать?
 
У кого установлен чат в связке с php 8.2+, посмотрите пожалуйста. Когда ссылку вставляешь и отправляешь (голую, без названия) - текст из кирилицы нормально вставляется? (Title из ссылки, если включено автоматическое форматирование)

У меня нет, задумался, откуда такое может тянуться…
 
TestingPage, скорее всего оттуда что движок и плагин не имеют полной поддержки php 8.2
 
addon.json

PHP:
 {
    "legacy_addon_id": "",
    "title": "Chat",
    "description": "Feature-rich, mobile-friendly chat application.",
    "version_id": 2020770,
    "version_string": "2.2.7",
    "dev": "Siropu",
    "dev_url": "",
    "faq_url": "",
    "support_url": "",
    "extra_urls": {     
    },
    "require": {
        "XF": [
            2020070,
            "XenForo 2.2.0+"
        ]
    },
    "icon": "fas fa-comments"
}

I don't find the error at all, I have no idea... I added the URL and it still doesn't work...

However, it works with no problems.
 
Последнее редактирование:
Namr355, а смысл отправлять пустое сообщение?

А если нажать на иконку фотографии?
1673943177963.png
 
Namr355, на 1673944034948.png нажать не пробовал (именно эта кнопка нажата в моём прошлом посте)? Сообщения отправляются по Enter по умолчанию.
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу