Script para enviar mensaje de bienvenida en segundo plano

ask.discourse.org genera un buen punto de partida, como un script de Rails:

MAX_MESSAGES = 1000 # Límite opcional para pruebas
SECONDS_BETWEEN_MESSAGES = 3 # Intervalo de 3 segundos

Rails.logger.info "Iniciando script de mensajes masivos..."

# Define el contenido de tu mensaje
message_title = "Bienvenido a Nuestra Comunidad"
message_body = "¡Hola! Estamos muy contentos de tenerte aquí. ¡Déjanos saber si tienes alguna pregunta!"

# Obtiene usuarios ordenados por última vez visto
users = User.where(active: true)
            .where.not(staged: true) # Excluye usuarios staged
            .order(last_seen_at: :desc)
            .limit(MAX_MESSAGES)

Rails.logger.info "Se encontraron #{users.count} usuarios activos a los que enviar mensajes."

users.each_with_index do |user, index|
  begin
    Rails.logger.info "Encolando mensaje para #{user.username} (#{index + 1}/#{users.count})..."

    PostCreator.create!(
      Discourse.system_user,
      title: message_title,
      raw: message_body,
      archetype: Archetype.private_message,
      target_usernames: user.username,
      skip_validations: true
    )

    Rails.logger.info "Mensaje encolado exitosamente para #{user.username}."

    # Espera el intervalo especificado antes de procesar al siguiente usuario
    sleep(SECONDS_BETWEEN_MESSAGES)
  rescue => e
    Rails.logger.error "Fallo al enviar mensaje a #{user.username}: #{e.message}"
  end
end

Rails.logger.info "¡Script de mensajes masivos completado!"

No hice ninguna modificación, y el usuario system envió el MP a todos mis usuarios en mi instancia de prueba:


¿Cuántos usuarios tienes?