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

Ой, я удалил не ту ссылку из первого сообщения. (Было два плагина: следовало удалить OAuth-плагин, но вместо этого я удалил ссылку на бота!)

Как можно скорее удалите этот плагин, так как Core теперь поддерживает Discord OAuth из коробки.

Плагин для бота — это вот этот:

Я исправил первое сообщение, извините за путаницу!!

3 лайка

Мы знаем, какой может быть статус автоматического обновления пользователей этим плагином при вступлении в группу, вместо ручной синхронизации? Также возможно ли указать, какие группы/роли синхронизировать вместе, вместо того чтобы плагин сам создавал или заменял роли?

2 лайка

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

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

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

Это неплохая идея, но, из любопытства, почему вы хотите, чтобы они были разными?

Это более практично.

PR принят. К сожалению, у меня очень мало времени для работы над значимыми функциями без финансирования.

3 лайка

Похоже, что в текущей версии роли формируются на основе поля “name”, а не “title”. Из-за этого роли в Discord получаются без пробелов и, например, с припиской “dashing”. Возможно, стоит сделать так, чтобы роли создавались не по имени, а по полному имени или по умолчанию по заголовку.

Кроме того, в Discourse могут быть группы, которые вообще не нужно синхронизировать с Discord.

Спасибо за ответы :slight_smile:

2 лайка

Это сделано намеренно, чтобы не ориентироваться на поле описания, которое может:

a) содержать пробелы
b) не быть уникальным

(и в информатике это обычно ужасная идея)

Однако, если существует безопасный способ улучшить это, я готов выслушать предложения. Признаю, что это выглядит не очень красиво :slight_smile:

Плагин определённо можно расширить, добавив возможность отключать синхронизацию для конкретных групп по усмотрению администратора. PR принимаются.

4 лайка

Можно ли в это время настроить автоматическую синхронизацию бота по расписанию, пока исследуется метод API? Например, проверять раз в час или раз в сутки и т. д.?

1 лайк

Я считаю, что можно без проблем добавить функциональность «повторить это через x часов».\n\nПроблема в том, что это будет сбрасываться каждый раз, когда бот останавливается (например, при перезагрузке).\n\nСамый оптимальный подход — это либо:\n\na) добавить отдельный вызов API, связанный с задачей Sidekiq, в этот плагин, либо\nb) написать новый плагин, использующий обычные вызовы API вместо бота (и включить в него пакетную синхронизацию).\n\nЛюбой из этих вариантов потребует спонсорской поддержки или pull-запроса (PR).

1 лайк

Справедливо. Спасибо за помощь.

2 лайка

Привет.

Я сейчас использую ваш плагин, и у меня всё работает на приемлемом уровне. Выглядит действительно хорошо, отличная работа!

Однако у меня есть несколько вопросов: теперь, когда всё запущено, мне нужно, чтобы пользователи входили через Discord OAuth. При этом создаётся новая учётная запись.

Как лучше всего мне это организовать? Нужно ли мне объединять новую и старую учётные записи? Я попробовал сделать это со своей учётной записью администратора, но получил ошибку «У вас нет прав на выполнение команды discsync!» при попытке вручную ввести !discsync.

Кроме того, роли из моего Discourse ещё не были скопированы ни одна.

Для сведения: в моих настройках моя учётная запись Discord отображается как связанная.

Заранее спасибо за помощь!

2 лайка

Спасибо за ваш интерес к плагину!

Это не функция плагина, это основная функция. Поддержка Discord OAuth входит в состав Discourse по умолчанию:

Указанные выше настройки отображаются независимо от того, добавили ли вы этот плагин в свой Discourse.

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

Речь об учётной записи администратора на сервере Discord? Также авторизовали ли вы бота?

Каков результат команды Ping!?

4 лайка

Согласен. В худшем случае я могу просто объединить учётные записи с несовпадающими электронными адресами.

Да, всё верно. Я являюсь владельцем серверов Discord и экземпляра Discourse. Результат команды “Ping!” — “Pong!”. Роли не были перенесены из Discourse в Discord.

Бот находится на моём сервере Discord и имеет права администратора. Не могли бы вы уточнить, что вы имеете в виду под авторизацией?

3 лайка

Вы выполнили этот шаг? (просто проверяем все предварительные требования, вы наверняка это сделали).

2 лайка

Да, у меня есть :slight_smile:

1 лайк

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

1 лайк

Принято! Я быстро проверил со своей стороны, так что для вашего сведения: я числюсь владельцем сервера и имею права администратора.

РЕДАКТИРОВАНИЕ: Можем ли мы уточнить, какие права требуются боту? В данный момент он числится администратором (хотя это было предоставлено ему через роль, а не через OAuth-приглашение).

1 лайк

У моего бота есть следующее:

1 лайк

Вот мои (извините, как новый пользователь здесь

мне нужно сделать 3 сообщения…)

1 лайк

Не могли бы вы проверить разрешения канала? Разрешения канала в Discord имеют приоритет над разрешениями сервера.

1 лайк

Да, в канале всё в порядке. Там нет никаких ограничений прав, которые могли бы помешать отправке или получению сообщений.

Бот может отправлять Pong!, но он сообщает, что у меня нет необходимых прав для запуска команды !discsync.

1 лайк

Хорошо, я пытаюсь воспроизвести ситуацию, но пока обе команды работают у меня.

1 лайк