С удовольствием пригласил бы вас в свой инстанс! Не знаю, логирует ли ваш плагин что-либо, но если это поможет, я могу отправить вам эти логи.
РЕДАКТИРОВАНИЕ: Какие разрешения вы предоставили боту при его авторизации?
С удовольствием пригласил бы вас в свой инстанс! Не знаю, логирует ли ваш плагин что-либо, но если это поможет, я могу отправить вам эти логи.
РЕДАКТИРОВАНИЕ: Какие разрешения вы предоставили боту при его авторизации?
Боту необходимы права администратора:
Необходимо предоставить разрешения через браузер, как описано здесь (и в исходном сообщении):
Что-то вроде: https://discord.com/api/oauth2/authorize?client_id=ВАШ_CLIENT_ID&scope=bot&permissions=8
Ваша проблема почти наверняка на стороне Discord, так как сервер бота Discourse, похоже, работает (вы это показали с помощью команды Ping!), поэтому логи Discourse не будут релевантны.
Я только что повторно протестировал этот плагин на последней версии Discourse, и всё работает (я обновил несколько gems до более современных версий, чтобы обеспечить совместимость с другими плагинами, но это не относится к вашей проблеме).
Да, я уже несколько раз приглашал его снова, но ничего не изменилось. Он является администратором, у него есть разрешение бота. Я тот, кто приглашает его в Discord, я владелец сервера Discord. Он просто не распознаёт меня и выдает сообщение: «У вас нет прав на выполнение команды discsync!»
К сожалению, я в полном недоумении!
Ура! Похоже, мне каким-то образом удалось исказить ID группы администраторов! Похоже, при копировании/вставке я пропустил одну цифру…
Так что в качестве дополнительного вопроса: теперь я пытаюсь назначать людям цвета в Discord в зависимости от их уровня доверия в Discourse. Чтобы уровни доверия копировались, я полагаю, что команда должна быть такой:
!discsync false, 0, true
Правильно ли это? Для меня она возвращает следующее:
РЕДАКТИРОВАНИЕ: То же самое возвращается, если запустить команду без запятых, то есть:
!discsync false 0 true
Повысьте уровень видимости. Стандартные автоматические группы по умолчанию имеют уровень видимости 1 («Зарегистрированные пользователи»), поэтому, если это значение равно нулю, вы исключаете стандартные автоматические группы:
Значение ноль включает только группы, видимые всем, включая анонимных пользователей.
Со мной всё в порядке. Большое спасибо — очень ценю.
Могу ли я чем-то отплатить, написав часть того, что узнал, в ваш гайд? Если нет, то без проблем; я просто хочу передать вашу поддержку дальше.
Это очень любезно. Буду рад, если вы отредактируете его. Вы, наверное, уже можете это сделать? Это вики.Вы также помогли мне освежить память ![]()
Мне не особо нужна синхронизация ролей, но было бы здорово иметь Discord-бота, который публикует сообщения в конкретных каналах сервера Discord, когда в форуме создаются новые темы. Есть ли какой-нибудь плагин, способный на это?
Да, этот плагин, скорее всего, не подходит для этой задачи. Бот работает на основе вашего Discourse и может получать доступ к данным Discourse (там, где это разрешено и инициировано командой), но выполняется в отдельном потоке, поэтому не реагирует на события Discourse.
Возможно, в будущем его можно будет расширить, например, для отслеживания новых тем в определённой категории. Это не самое оптимальное использование данной архитектуры, но мы приветствуем pull-запросы.
Похоже, вам стоит изучить:
Или
Да, я проверил оба этих варианта. Первый вариант, Zapier, не бесплатный. Можно создать до 5 бесплатных Zaps, и они поддерживают только одношаговые сценарии. Это точно то, что было сказано в той ветке, поэтому в качестве альтернативы предложили плагин discourse-chat-integration, который, по утверждению, является официальным. Мне кажется, это самый близкий способ реализовать то, что я хочу.
Последний вариант, похоже, это плагин для RSS-ленты:
Обновление: После того как я научился правильно настраивать правила и конфигурировать вебхуки, интеграция чата делает именно то, что я хотел! Спасибо.
Привет, @merefield,
ещё раз спасибо за то, что поделились этим плагином!
Я установил всё, как описано в документации. Использую команду !discsync, и всё выглядит отлично. ![]()
Однако для некоторых пользователей (но не для всех) я получаю эту ошибку для всех их групп:
Discourse Sync: [11/31] Добавление участника 'MaxMustermann' в группу 'Member'
Discourse Sync: Похоже, у меня нет прав для этого!
ОШИБКА на сервере XYZ (ID: 123123123123) для команды ^add_role: неопределённый метод add_role' для nil:NilClass
Другие пользователи успешно синхронизируются для той же группы ![]()
Это означает, что для этого пользователя в Discourse не установлен параметр provider_uid. Пожалуйста, проведите расследование.
Кстати, отличная работа по настройке! Это довольно сложно и не для слабонервных! :).
Я выполнил этот запрос в плагине Knowledge Explorer:
SELECT *
FROM user_associated_accounts u
WHERE u.provider_name = 'discord'
По причинам
я не могу опубликовать результат, но я проверил provider_uid для каждого пользователя, и у каждого он есть. Есть ли что-то ещё, что можно отладить?
Затем наиболее вероятная проблема заключается в том, что текущий сопоставленный UID Discord неверен.
То есть данные в Discourse не соответствуют действительному UID в Discord.
Вручную проверьте запись этого пользователя в Discord и убедитесь, что она верна.
Привет, я могу это подтвердить. У пользователя в Discourse другой UID, чем в Discord.
Как можно воспроизвести эту проблему?
Можете ли вы удалить связь и попросить пользователя создать её заново, снова привязав Discord? Если это произойдет снова, значит, в социальном входе есть ошибка?
Привет,
Хотел просто зайти с напоминанием. Я поговорил с людьми, у которых возникли эти проблемы. Нам удалось определить возможную причину.
Пользователь зарегистрировался со своим старым аккаунтом Discord, к которому он не присоединился на сервере. Поэтому Sync Bot, вероятно, не смог найти пользователя Discord и выдал ошибку.
Спасибо за уточнение. Можете подтвердить, как вы решили проблему? Вы удалили его ассоциацию, а затем попросили его ассоциироваться заново?
Именно так мы и поступили. ![]()