Создание системы перемещения тем на основе заданных критериев, таких как временная метка

Ссылка на интеграцию AI Bot: Discourse AI - AI bot - Documentation / Site Management - Discourse Meta

Дополнительное примечание/правка: Я использую самостоятельный хостинг

Краткая версия, если вы не хотите читать всю историю: я хочу использовать AI Bot для перемещения тем на основе «даты истечения срока», проверяя временные метки постов.

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

У нас есть несколько категорий, включая временные баны. Когда мы ведём журналы, это делается в виде поста, и модератор заполняет шаблон, вставляя соответствующие временные метки для предпринятого действия, например, семидневный бан: e.g. Duration: 2026-03-01T05:00:00Z2026-03-08T05:00:00Z (Здесь временная метка)

С точки зрения управления я добавил категорию «Архивированные баны» для случаев, когда бан истёк. Раньше… вы уже догадались, мы делали это вручную, проверяя баны раз в неделю.

Прошлой осенью я создал утилиту на Python [см. ниже], которая работает локально через API Discourse. Она открывает меню, где я выбираю раздел банов, которые нужно архивировать, и она обрабатывает их, проверяя каждый пост на наличие корректной временной метки и определяя, прошло ли указанное время. Это работает хорошо, но я хотел улучшить процесс ещё больше…

И вот мы здесь… Надеюсь, вы всё ещё читаете. Конечно, можно было бы всё это сильно сократить, но ведь Discourse — это же про общение, верно?

Я хочу предоставить моей команде модераторов, особенно самым опытным из них, возможность выполнять эту задачу без необходимости использовать VS или что-либо скачивать на свои компьютеры. Поэтому я попытался создать версию в виде плагина, признаю, что для этого использовал AI. Не совсем понятно, где именно всё пошло не так: я изучал документацию и даже давал инструкции следовать процессам, но ничего не получилось.

Моя проблема при интеграции через плагин заключалась в том, что я (или AI) не понимал, как добавить визуальный интерфейс (не такой красочный, как в версии на Python, но понятный и логичный), например, большую кнопку «Запустить процесс архивации», и использовать API модерации (?) для пометки записей с некорректными датами или ошибками.

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

  • Есть ли у AI Bot такая возможность?
  • Если нет, какое разумное решение мне стоит попробовать?
  • Что я сделал не так при работе с плагином, из-за чего всё просто не работало или вызывало трудности (как типичные ошибки, которые вы допускали, когда только начинали в этом сообществе)?

Очень ценю ваш совет. Спасибо.

1 лайк

Я не думаю, что вам нужно обращаться к ИИ для всего этого.

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

Кроме того… есть ли причина отходить от ядра Discourse? У нас уже есть журналы заблокированных пользователей. Почему бы просто не предоставить доверенным пользователям доступ к запросу Data Explorer для просмотра истории?

Discourse используется для ведения журнала блокировок… Это и есть вся его цель. На форуме нет игроков… Только модераторы игры и Discord. Я не думаю, что таймер темы сработает, поскольку сроки блокировок различаются. Я не отхожу от ядра Discourse, а скорее использую его для конкретной задачи. (См. изображение)

1 лайк

Интересный вариант использования!

Думаю, вам будет лучше с несколькими изменениями:

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

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

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

Добавьте пользовательские фильтры /filter

С пользовательским полем или шаблоном формы теперь легко добавлять новые фильтры /filter, такие как истёкшие баны, архивированные баны и т. д. Они станут основными рабочими списками для модераторов, и их можно будет добавить в боковую панель для удобства.

Автоматизировать баны целиком?

Последним шагом было бы заставить Discourse автоматически создавать баны в Roblox и Discord при создании темы, а также автоматически снимать баны по истечении их срока действия.

Это довольно просто сделать с помощью периодической задачи и доступа к API.


Если у вас есть настроенная локальная среда разработки Discourse, вы даже можете передать мой пост здесь как спецификацию для Claude Code, и он создаст всё за несколько минут.

3 лайка

Это действительно интересное мнение! Я обязательно посмотрю на это! Особенно на пользовательские поля и шаблоны. Спасибо за ваш взгляд!

Немного предыстории, так как, кажется, мой случай использования заинтересовал вас… А мне нравится делиться идеями, чтобы другие игровые сообщества могли найти их в будущем…

У меня действительно довольно уникальный случай использования. Мы годами использовали Trello, но из-за ограничений, которые они начали вводить, всё становилось слишком запутанным. Нам приходилось использовать 10 рабочих пространств, чтобы разместить всю нашу команду. (Не говоря уже о том, что они начали ограничивать уровни доступа, сделав это платной функцией)

Так что в условиях продолжающейся борьбы с изменениями бизнес-модели было гораздо проще перейти на самохостинговое решение. Я пробовал другое программное обеспечение в стиле канбан, но благодаря предыдущему опыту использования Discourse и тому факту, что оно с открытым исходным кодом и использует более современные практики для бэкенда, я просто не мог устоять перед использованием этой платформы. И я всегда поражаюсь достижениям и росту, который продолжает демонстрировать эта платформа в целом. В сентябре исполнится два года с момента нашего перехода, и мы создали более 6000 тем!

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

image

Я вернусь сюда, когда закончу изучение, и расскажу, как всё прошло и что именно я сделал, особенно ради других, кто ищет идеи для похожего случая использования!

2 лайка

После того как ваш плагин заработает, вы также сможете визуализировать данные, как и раньше, благодаря Kanban Board

2 лайка

Ну что ж, я снова здесь… с довольно заметным прогрессом. Я потратил на это около 6,5 часов.

Я начал с некоторых концепций, основанных на ваших предложениях, но столкнулся с несколькими недостатками, которые в итоге привели меня в другое русло, хотя, надеюсь, концептуально это всё ещё отличный вариант!

Изначально я планировал использовать шаблоны форм, но меня не устраивал отступ между каждым ответом в строке. Я искал формат, более похожий на мой текущий набор. Кроме того, меня отпугнуло необходимость вручную прописывать всё в коде.

Я перенёс свой Python-скрипт в плагин для Discourse (обратите внимание: большую часть переноса выполнил ИИ). Сначала у меня возникли некоторые трудности, и теперь, когда он работает, мне всё ещё нужно его доработать. Дизайн немного громоздкий, и, вероятно, есть ещё пара мелких недочётов. Я не очень хорошо владею Ruby, поэтому код там проверен по мере возможностей.

Итак, о самом плагине…

Концепция/цель: Возможность быстрее перемещать темы из одной категории в другую по определённым триггерам.

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

Также есть функция ведения логов для перемещаемых тем, и вы можете решить, как долго эти логи будут доступны.

На момент написания этого ответа я ещё не полностью протестировал триггеры закрытия, решения и архивации.
Как только я немного приведу всё в порядок и проведу дополнительное тестирование, чтобы убедиться, что всё работает корректно, я с радостью опубликую плагин в категории плагинов для общего доступа. Но пока что он будет доступен только на GitHub. Также мне, вероятно, нужно вернуться к проверке прав доступа, чтобы убедиться, что запускать его может не каждый, или добавить возможность явно включать/выключать эту настройку.

Не стесняйтесь делиться своими мыслями или сказать, если я просто абсолютно сошёл с ума, занимаясь этим.

Источник: https://github.com/jdc20181/DiscourseTopicMigrationTool