Набор для создания ботов Discord 🤖

Извините, это старая школьная терминология форумов: «Threads» — это темы в Discourse, а не потоки в Discord.

Я готов оплатить кастомный функционал, но, кажется, нашёл обходной путь — просто перемещать тему после её создания :thinking: Мне кажется, это слишком просто.

Потоки в Discord появились лет два назад? Чёрт, я старею :joy: Время летит незаметно.

Но в общем, интересно, будет ли легко добавить поддержку изображений и упоминаний :thinking:?

Дайте мне цену :wink:

image


1 лайк

Да, пожалуйста, продолжим этот разговор здесь, в Discourse!

Я тоже внедряю этот плагин для синхронизации с сервером Discord!

Это означает, что роли на Discord копируются в Discourse? Или наоборот? В конечном итоге было бы лучше предоставить обе опции в любом случае

1 лайк

Ждём ваш PR

1 лайк

Как мой? PR? Какой PR?

@merefield Привет! Отличная работа. Как и многие, я уверен, я наткнулся на этот пост, пытаясь найти плагины или ботов, которые так или иначе связывают Discourse и Discord.

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

В одном из сообществ Discord, где я помогаю в модерации, есть несколько библиотек от разных авторов, чьи аудитории пересекаются, поэтому они используют этот Discord и соответствующие каналы для технической поддержки по данным библиотекам.

Идеальное решение с точки зрения SEO, построения базы знаний и удобства заключалось бы в том, чтобы все использовали форум Discourse, но при прочих равных людям просто проще задавать вопросы в Discord, а отвечающая сторона вынуждена искать ручные решения для дублирования этих обсуждений в Discourse.

Чтобы бороться с этой неэффективностью, не навязывая пользователям плохой опыт (например: «Добро пожаловать в Discord, теперь перейдите в Discourse и задайте тот же вопрос заново»), я хотел бы реализовать возможность автоматического создания новой темы на форуме Discourse для каждого основного сообщения в канале библиотеки. Это быстро привело бы к спаму, поэтому я хочу, чтобы это срабатывало только при соблюдении следующих условий:

  1. Сообщение превращается в тред (что подразумевает, что это был вопрос, на который действительно ответили)

  2. На него был дан ответ с выбранным эмодзи авторизованным лицом (техническая поддержка, модератор, администратор и т. д.)

Далее любые последующие комментарии в этом треде Discord должны автоматически отслеживаться и публиковаться как ответы в той же родительской теме на Discourse. (Примечание: наличие учётных записей пользователей не обязательно — отправка от имени «system» или специального бота допустима, главное, чтобы в теле сообщения указывалось имя пользователя, от которого оно исходило).

Исходя из этих требований, у меня есть несколько вопросов:

  1. Готов ли бот, о котором идёт речь в этой теме, к такой реализации?

  2. Если нет, какие части ещё не готовы или не запланированы? (Я вижу, что работа над тредами ведётся, но если дело в финансовых приоритетах, я могу предложить щедрое вознаграждение, чтобы воплотить это в жизнь).

  3. Если потребуется разместить такое вознаграждение для разработки, какой метод заказа является правильным? Каковы требования и ожидания (стоимость, сроки и т. д.)?

Ценю проделанную вами (и всеми остальными!) работу и с нетерпением жду вашего своевременного ответа.

~carrot

Привет @carrotcypher,

Этот бесплатный плагин поддерживаю я сам (в рамках проекта Pavilion) по мере возможностей.

Дорожной карты нет, и работа над новыми функциями ведется только при наличии внешнего спонсора.

Ваш кейс звучит интересно.

Этот «бот» зависит от этого Ruby-гама, который является критически важным компонентом.

Официальные релизы пока не поддерживают потоки (Threading), однако, похоже, что некоторая поддержка уже добавлена в основную ветку (main branch). Насколько она полная — пока неясно. Чтобы это выяснить, потребуется приложить усилия, а возможно, и обсудить с разработчиками, планируют ли они когда-нибудь релиз. Их документация обновляется только при каждом релизе. Недостаточно просто иметь поддержку в основной ветке; в идеале им нужно обновить сам гем.

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

Перейдите по ссылке ниже, нажмите «Contact» и следуйте инструкциям: https://pavilion.tech/solutions/

1 лайк

@merefield Привет! Я установил плагин, но бот не реагирует на команды на моём сервере. Сообщение «The Discourse admin bot has started his shift!» отображается корректно, но после этого бот ничего не делает.

Странно, но он работает, когда я отправляю ему прямое сообщение в Discord. Я проверил права доступа на сервере, и они, похоже, настроены правильно (я предоставил боту права администратора).

Странно, я проверил на самой последней версии Discourse, и всё работает.

Что происходит, когда вы вводите Ping! в Discord (важны заглавные буквы)?

Проверьте логи, есть ли сообщения об ошибках?

Не реагирует на Ping! (но работает в личных сообщениях)

логи

Похоже, у него возникли проблемы с токеном в ваших настройках.

Вы случайно вставили в него какие-то спецсимволы или вообще не ввели его?

image

Я сдался. В любом случае, я не думаю, что это был подходящий инструмент для моей задачи.
Не знаю, почему это не сработало. Я всё делал внимательно, несколько раз.
Может, Discord ведёт себя странно?
В любом случае, спасибо за попытку помочь.

1 лайк

Что вы пытались сделать с функциональной точки зрения?

Да, хорошее решение, и нужная команда выглядит так:

::DiscordBot::Bot.discord_bot.stop

Это остановит дополнительного бота в сессии консоли Rails, оставив запущенным основной серверный бот.

@satonotdead, тебе может понравиться это решение.

Я добавил эту информацию в первое сообщение темы.

2 лайка

Извините, я только что просмотрел сообщения здесь и заметил, что дал вам неверный совет. С тех пор я внедрил хуки, которые реагируют на события Discourse и могут выполнять действия в Discord. Некоторые из них могут быть уже полезны для вас, и этот метод можно расширить на другие события:

1 лайк

С благодарностью моему спонсору и за дополнительную помощь от @RGJ, представляю вам важные обновления:

  • ФУНКЦИЯ: Добавлена возможность легко копировать отдельные потоки Discord в Discourse, путём расширения и улучшения существующей команды !disccopy.
  • УЛУЧШЕНИЕ: Плагин приведён в соответствие с последним кодом discordrb (версия 3.5.0).
  • ФУНКЦИЯ: Добавлена поддержка нескольких сайтов (спасибо @RGJ !!).
  • ФУНКЦИЯ: Поток бота перезапускается при изменении токена или его включении (так что вам не нужно перезапускать хост-сервер) (ещё раз спасибо @RGJ !!).

@klausagnoletti, @Fma965, с этим обновлением API мы наконец получили возможность взаимодействовать с потоками Discord через API, которые по сути являются дополнительными «каналами».

2 лайка

Ах, наконец-то!

Рабочая проверка, предотвращающая запуск бота в неподходящие моменты процесса*!

Вы больше не будете запускать нового бота:

  • при миграции изменений в базе данных
  • при открытии консоли Rails (теперь нет необходимости его останавливать).

В результате количество сообщений бота при перестроении сократилось как минимум на 50%, поэтому теперь он объявляет о себе только дважды :sweat_smile:

Сообщите, если у вас возникнут проблемы с этим последним изменением.

Благодарность @RGJ за предложение! :pray:

*в основном! :slight_smile:

1 лайк

Просто хочу сообщить, что недавно:

  • ИСПРАВЛЕНО: автоматическая синхронизация сообщений из Discord в Discourse, которая, как выяснилось, не работала после последнего обновления!!
  • ФУНКЦИЯ: добавлена поддержка автоматической синхронизации Embed-сообщений из Discord.

Приятного использования!

Привет, отличная работа со скриптом! Спасибо, что его создали. У меня есть несколько вопросов… Как часто бот синхронизирует участников в ролях? Я только что настроил Discourse, и это был один из первых плагинов, которые я установил. Я создал группу на www, добавил себя, и если я вручную введу !discsync, то тег Discord появится в моём имени без проблем. Однако, если я удалю себя из группы на www или добавлю кого-то другого… ничего не происходит, пока я вручную не введу !discsync в Discord. Это работает как задумано, или синхронизация должна происходить каждые несколько минут, например, раз в 10 минут?

Это вручную.

Вы можете посмотреть этот форк: Discord Sync: sync a Discourse forum with a Discord server, но, насколько я знаю, он не поддерживается и не работает (я просил того человека создать pull-запрос, но что поделать!).

Не стесняйтесь создать pull-запрос с более автоматизированным решением, нанять меня для работы над этим или обратиться в Marketplace.

В конце концов, это же «конструктор» :slight_smile: