После установки, перед включением плагина, пожалуйста, выполните следующие инструкции:
Перед включением этого плагина необходимо создать учётную запись, которая будет использоваться как «Бот помощник пользователя». Хотя этот плагин может автоматически создавать бота или использовать существующего @Discobot, я не рекомендую этого делать, так как бот-пользователи, созданные плагином, нельзя изменить в панели администратора. Вы можете предоставить ему любые права, поскольку соответствующий код специально написан так, чтобы бот всегда действовал как администратор, но я рекомендую предоставить ему права администратора или модератора. В процессе разработки иногда возникали неизвестные ошибки, которые я не мог стабильно воспроизвести, именно по этой причине.
Затем вам нужно создать тему (это может быть личное сообщение или публичная тема). Укажите её topic_id в настройке SiteSetting.topic_op_admin_logger_topic. Если включена опция topic_op_admin_enable_topic_log, указанный выше бот будет создавать более подробные записи журнала в этой теме.
После создания бота помощника пользователя запишите его user_id и укажите его в настройке SiteSetting.topic_op_admin_bot_user_id.
Открытие определённых настроек без правильного выполнения вышеуказанных шагов может привести к ошибкам или даже нарушить работу вашего сайта
Вы думали о том, чтобы привязать бота к группе модераторов категории? На мой взгляд, предоставление полного статуса Модератора/Администратора может быть рискованным.
Существует несколько плагинов, которые были помечены как экспериментальные в категории плагинов до тех пор, пока не считалось, что фаза разработки завершена, например, Who’s Online.
Возможно, @Canapin сможет изучить вопрос с категорией и обсудить его с вами.
Плагины — это код, который выполняется параллельно с Discourse. Для бота не имеет значения, какие права у него есть: от администратора до TL0, поскольку по сути это просто объект, выполняющий операции кода, и у него уже есть неограниченные права.
На самом деле я сейчас завершил разработку этой части плагина. Однако я бы воздержался от публикации этого плагина в #plugin, учитывая более катастрофические последствия, если что-то пойдет не так с плагином (в отличие от компонента темы).
Я выпущу его официально после запуска плагина на моем форуме и после периода проверки.
@Lhc_fl это выглядит супер полезно, но позволяет ли автор темы (OP) публиковать сообщения в своей же теме, пока она закрыта, как это могут сделать модератор или администратор? Для нас это кажется гораздо более удобным сценарием, чем разблокировка темы, публикация сообщения и последующая повторная блокировка.
Я планирую добавить эту функцию, но в последнее время я был занят и у меня не так много времени, чтобы заниматься своим плагином. Если кто-то заинтересован, можете отправить pull request.
Можно ли превратить его в компонент темы? Тогда им смогут пользоваться больше людей.
У нас нет прав на установку плагинов на инстанс, но мы можем установить компонент темы.
Можно ли добавить «Разделение и объединение тем» в список разрешений?
Извините, что этот плагин несовместим с новой версией Discourse из-за обновления Ember.js, но сейчас я слишком занят, чтобы исправить это. Если кто-то готов исправить это, пожалуйста, отправьте PR на GitHub.
chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:393
SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
at D.parse [as parseJSON] (<anonymous>)
at l (chunk.7b3110aa5b5be8…1d8cd9.js:393:63167)
at p (chunk.7b3110aa5b5be8…1d8cd9.js:393:63847)
at k (chunk.7b3110aa5b5be8…41d8cd9.js:308:3688)
at w (chunk.7b3110aa5b5be8…41d8cd9.js:308:3581)
at f (chunk.7b3110aa5b5be8…41d8cd9.js:308:3077)
at invoke (chunk.7b3110aa5b5be8…1d8cd9.js:121:10063)
at m.flush (chunk.7b3110aa5b5be8…41d8cd9.js:121:9140)
at g.flush (chunk.7b3110aa5b5be8…1d8cd9.js:121:11012)
at q._end (chunk.7b3110aa5b5be8…1d8cd9.js:121:16062)
at q.end (chunk.7b3110aa5b5be8…1d8cd9.js:121:13189)
at q._run (chunk.7b3110aa5b5be8…1d8cd9.js:121:16576)
at q.run (chunk.7b3110aa5b5be8…1d8cd9.js:121:13722)
at c (chunk.7b3110aa5b5be8…1d8cd9.js:161:53419)
at t.error (chunk.7b3110aa5b5be8…d8cd9.js:302:131483)
at l (chunk.7b3110aa5b5be8…1d8cd9.js:191:58317)
at Object.fireWith [as rejectWith] (chunk.7b3110aa5b5be8…1d8cd9.js:191:59062)
at C (chunk.7b3110aa5b5be8…41d8cd9.js:194:5783)
at XMLHttpRequest.<anonymous> (chunk.7b3110aa5b5be8…41d8cd9.js:194:8211)
l @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:393
p @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:393
k @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
w @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
f @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
invoke @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
flush @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
flush @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_end @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
end @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_run @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
run @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
c @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:161
t.error @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:302
l @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:191
fireWith @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:191
C @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:194
(匿名) @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:194
XMLHttpRequest.send
send @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:194
ajax @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:194
o @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:302
(匿名) @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
e @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:308
D @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:302
submit @ request-op-admin-form.js:106
(匿名) @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:421
invoke @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
flush @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
flush @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_end @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
end @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_runExpiredTimers @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
setTimeout
setTimeout @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_installTimerTimeout @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_reinstallTimerTimeout @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
_later @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
later @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:121
T @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:161
_triggerAction @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:421
click @ chunk.7b3110aa5b5be8…8f9.d41d8cd9.js:421