광고 게시를 위해 구독하세요

물론이죠, 하지만 있으면 좋겠습니다.
어쨌든 카테고리 ID와 그룹 이름을 하드코딩하는 한 이 방식은 역할을 수행할 것 같습니다.
이 코드를 확장하여 플러그인 설정 페이지에서 해당 변수를 설정할 수 있도록 해줄 수 있는 실제 개발자가 있을까요?

# name: discourse-auto-remove-group
# version: 0.1
# authors: tknospdr
# url: https://github.com/tknospdr/discourse-auto-remove-group

enabled_site_setting :auto_remove_group_enabled

# 플러그인 활성화/비활성화를 위한 사이트 설정
register_site_setting :auto_remove_group_enabled, type: :boolean, default: false
register_site_setting :auto_remove_group_category_id, type: :integer, default: 0
register_site_setting :auto_remove_group_name, type: :string, default: ""

after_initialize do
  # 게시글 생성 이벤트 리스닝
  DiscourseEvent.on(:post_created) do |post|
    next unless SiteSetting.auto_remove_group_enabled
    next unless post&.user # 게시글에 사용자가 있는지 확인
    next unless post&.topic&.category_id # 게시글이 카테고리에 있는지 확인

    target_category_id = SiteSetting.auto_remove_group_category_id
    group_name = SiteSetting.auto_remove_group_name

    # 게시글이 설정된 카테고리에 있는지 확인
    if post.topic.category_id == target_category_id
      begin
        group = Group.find_by(name: group_name)
        unless group
          Rails.logger.error("AutoRemoveGroup: Group '#{group_name}' not found")
          next
        end

        user = post.user
        if group.users.include?(user)
          group.remove(user)
          Rails.logger.info("AutoRemoveGroup: Removed user #{user.username} from group #{group_name} after posting in category #{target_category_id}")
        else
          Rails.logger.info("AutoRemoveGroup: User #{user.username} is not in group #{group_name}, no action taken")
        end
      rescue StandardError => e
        Rails.logger.error("AutoRemoveGroup: Error removing user from group: #{e.message}")
      end
    end
  end
end