Аддон для Xenforo 2.x.x Xenforo + Discord Integration + БОТ [2.8.5]

Black_Dragon
  • Black_Dragon
  • Хранитель порядка
  • 22 866
RED_DRAGON обновил ресурс Xenforo + Discord Integration + БОТ новой записью:

2.6.0

  • Исправление проблемы, при которой синхронизация с пользователями в платной роли Discord не работала.
  • Добавлена поддержка дополнения Tickets.
  • Добавлена возможность отключить отправку оповещений пользователям Discord DMs.
  • Добавлена возможность отключить отправку уведомлений о разговорах в Discord DM.
  • Добавить возможность для администраторов применять регистрационные настройки по умолчанию для уведомлений о тревогах и разговорах в Discord...

Посмотреть подробности об этом обновлении...
 
TeaZ
  • Перейдите к пункту «Проверка интеграции Discord», расположенному в панели управления XenForo. Оно будет изначально красным и не будет работать. Пригласите бота на свой сервер с этой страницы, а также нажмите «Открыть WebSocket», чтобы бот мог отправлять сообщения.
  • Перезапустите тест, и всё должно быть в порядке.
    Screenshot 1219не понял последние 2 пункта, «Проверка интеграции Discord» это означает "протестировать"? и как открытить WebSocket?
 
bobobo
Если у кого-то как у нас начнут банить бота за спам.

Вырубите оповещения в лс дискорд пользователям.

Если много пользователей уже подписаны, то в админке нельзя выключить всем через пакетное обновление.

Вот SQL запросы по отключению:​

Предварительно сделайте резервные копии базы данных!!!

Отключить когда кто-то пишет в лс пользователю
SQL:
UPDATE `xf_user_option`
 SET `nf_discord_dm_on_conversation` = replace(nf_discord_dm_on_conversation, '1', '0')

Отключить всем пользователям о оповещении на сайте:
SQL:
  UPDATE `xf_user_option`
 SET `nf_discord_dm_on_alert` = replace(nf_discord_dm_on_alert, '1', '0')
 
Hak3334444
Упс! Мы столкнулись с некоторыми проблемами.
NF\Discord\NotFoundException : не найдено в src/addons/NF/Discord/Api.php в строке 1019
  1. NF\Discord\Api->request() в src/addons/NF/Discord/Api.php в строке 1060
  2. NF\Discord\Api->get() в src/addons/NF/Discord/Api.php в строке 154
  3. NF\Discord\Api->getGuild() в src/addons/NF/Discord/ApiMessage/ResyncServerInfo.php в строке 86
  4. NF\Discord\ApiMessage\ResyncServerInfo->dispatch() в src/addons/NF/Discord/ApiMessage/RecacheAllServersInfo.php в строке 42
  5. NF\Discord\ApiMessage\RecacheAllServersInfo->dispatch() в src/addons/NF/Discord/Repository/Server.php в строке 113
  6. NF\Discord\Repository\Server->resyncServers() в src/addons/NF/Discord/Admin/Controller/Server.php в строке 153
  7. NF\Discord\Admin\Controller\Server->actionSyncServer() в src/addons/NF/Discord/Admin/Controller/Server.php в строке 170
  8. NF\Discord\Admin\Controller\Server->actionSync() в src/XF/Mvc/Dispatcher.php в строке 352
  9. XF\Mvc\Dispatcher->dispatchClass() в src/XF/Mvc/Dispatcher.php в строке 259
  10. XF\Mvc\Dispatcher->dispatchFromMatch() в src/XF/Mvc/Dispatcher.php в строке 115
  11. XF\Mvc\Dispatcher->dispatchLoop() в src/XF/Mvc/Dispatcher.php в строке 57
  12. XF\Mvc\Dispatcher->run() в src/XF/App.php в строке 2483
  13. XF\App->run() в src/XF.php в строке 524
  14. XF::runApp() в admin.php в строке 13
 
S
@bobobo, у меня этот файл есть, но все равно выдает ошибку. Что делать?
NF\Discord\NotFoundException: Not found in src/addons/NF/Discord/Api.php at line 1019
  1. NF\Discord\Api->request() in src/addons/NF/Discord/Api.php at line 1060
  2. NF\Discord\Api->get() in src/addons/NF/Discord/Api.php at line 248
  3. NF\Discord\Api->getChannels() in src/addons/NF/Discord/Admin/Controller/Channel.php at line 23
  4. NF\Discord\Admin\Controller\Channel->actionIndex() in src/XF/Mvc/Dispatcher.php at line 352
  5. XF\Mvc\Dispatcher->dispatchClass() in src/XF/Mvc/Dispatcher.php at line 259
  6. XF\Mvc\Dispatcher->dispatchFromMatch() in src/XF/Mvc/Dispatcher.php at line 115
  7. XF\Mvc\Dispatcher->dispatchLoop() in src/XF/Mvc/Dispatcher.php at line 57
  8. XF\Mvc\Dispatcher->run() in src/XF/App.php at line 2352
  9. XF\App->run() in src/XF.php at line 524
  10. XF::runApp() in admin.php at line 13
 
bobobo
@scrlxddd, скачай заново и переустанови плагин. Написано ж файл не найден.
Так же может быть не правильные права, или ты его от рута залил
 
Hvk
Я понял как оно работает, но мне нужна помощь с установкой..
Смогу помочь материально, отпишитесь)
мозги утекут прост)

черканите в ДС - HVK#9976
 
Последнее редактирование:
bobobo

Убираем Дескриптор, который Дискорд отключил.


В общем друзья.
Ввиду того, что дискорд убрал дескриптор: (решётки и цифры у ника) даю вам способ, исправить эту проблему, и чтобы отображался у вас только ник.

Как только поставите плагин к себе на свой супер сайт:
Дальнейшие действия выполняете через SFTP (FTP не важно)
  1. Переходите по адресу: ваш сайт\src\addons\NF\Discord\_data\templates.xml
  2. Открываете этот файл: templates.xml в текстовом редакторе или как вам удобно.
  3. Переходите к 823 строке, и заменяете строчку целиком на этот код:
    YAML:
    <div>{{ $providerData.username }}</div>]]></template>
    Таким образом как вы можете заметить, мы стираем как решётку, так и дескриптор.
  4. Сохраняем файл, и загружаем обратно на свой супер сайт.
Это ещё не всё
Переходим в список ваших плагинов из админки на сайте вашем: ваш сайт/admin.php?add-ons/
находим плагин этот, и делаем перестроение плагина. 1688065732015
Естественно вам покажет, что один из файлов изменён. Если вы не хотите, чтобы такое окошко выходило, то открываете файл
Ваш сайт\src\addons\NF\Discord\hashes.json
Находите строчку с содержимым: "src/addons/NF/Discord/_data/templates.xml", и полностью стираете всю строку, вместе с переносом строки. Это варварский способ, но самый быстрый.
Сохраняете файл, загружаете на свой супер-сайт, и уже предупреждения что файл изменён у вас не будет.
 
bobobo

Исправляем баг с публикацией обновлений ресурсов в Discord.

Был найден баг, при котором если вы обновляете ресурс на сайте, то на ваш сервер Discord не идут сообщения о обновлении ресурса.

  1. Для исправления бага, вам необходимо перейти через SFTP (FTP не важно): ВаСайт/src/addons/NF/Discord/XFRM/Service/ResourceUpdate/Create.php
  2. Открыть файл Create.php в текстовом редакторе
    и на 19 строке поставить знак не равенства.
  3. В общем: if ($resource->isVisible())
    заменить на if (!$resource->isVisible())

    Вот полный код файла:
    src/addons/NF/Discord/XFRM/Service/ResourceUpdate/Create.php:
    <?php
    
    namespace NF\Discord\XFRM\Service\ResourceUpdate;
    
    use NF\Discord\ApiMessage\MessageToChannel;
    
    /**
    * Extends \XFRM\Service\ResourceUpdate\Create
    */
    class Create extends XFCP_Create
    {
        public function sendNotifications()
        {
            parent::sendNotifications();
    
            $resource = $this->resource;
            $update = $this->update;
            $category = $this->resource->Category;
            if (!$resource->isVisible())
            {
                return;
            }
    
            /** @var \NF\Discord\Repository\Server $serverRepo */
            $serverRepo = $this->repository('NF\Discord:Server');
            [$api, $channelId] = $serverRepo->getServerApiForStoredChannel($category->nf_discord_channel_id ?? null);
            if (!$api)
            {
                return;
            }
    
            $router = \XF::app()->router('public');
            $url = $router->buildLink('full:resources', $resource);
            $phrase = \XF::phrase('nfDiscord_notice.xfrm_resource_update_new', [
                'username' => $resource->username,
                'title' => $resource->title,
            ]);
    
            $snippet = $this->app->stringFormatter()->stripBbCode($update->message, [
                'stripQuote' => false,
            ]);
            $snippet = $this->app->stringFormatter()->wholeWordTrim($snippet, 500);
    
            $user = $resource->User;
            if ($user === null)
            {
                /** @var \XF\Repository\User $userRepo */
                $userRepo = $this->repository('XF:User');
                $user = $userRepo->getGuestUser($resource->username);
            }
    
            MessageToChannel::create($api)
                            ->setup($channelId, $phrase, $this->enrichDiscordEmbed([
                                'author' => [
                                    'name' => $user->username,
                                    'url' => $router->buildLink('full:members', $user),
                                    'icon_url' => $user->getAvatarUrl('s', null, true),
                                ],
                                'footer' => [
                                    'text' => $category->title,
                                ],
                                'title' => MessageToChannel::discordTitle($resource->title),
                                'url' => $url,
                                'description' => $snippet,
                                'timestamp' => date('c', $update->post_date),
                            ]))->queue();
        }
    
        protected function enrichDiscordEmbed(array $embed): array
        {
            return $embed;
        }
    }
  4. Сохраняем всё это дело, радуемся жизни, и говорим спасибо bobobo, что я такой щедрый.

Так же после выполнения действий, можете открыть файл: Ваш сайт\src\addons\NF\Discord\hashes.json
Найти строку "src/addons/NF/Discord/XFRM/Service/ResourceUpdate/Create.php": "4393ec4efa4f6eaca0457becbbaffdf8e5dbe2f57f1d17ce044986add67014f1", и полностью стереть её, чтобы в ПУ не мозолило глаза, что файл изменён.
Сохраняем файл, и загружаем на сайт.


Вот так, из-за одного восклицательного знака, не поставленного разработчиком, не работает функция.

offtop
 
Последнее редактирование:
bobobo
@arnolh, это не починить. Точнее это не сломано чтобы чинить. в дискорд это передаётся обычным текстом.
 
Black Shadow
  • Black Shadow
  • Типо лакализатор🚭
  • 1 462
@bobobo метод хороший, но на последней версии плагина фаил templates.xml изменён очень даже конкретно и уже не близко даже изменять нужно на 823 строчке
 
ВерхНиз