Script para enviar mensagem de boas-vindas em segundo plano

ask.discourse.org gera um bom ponto de partida, como um script Rails:

MAX_MESSAGES = 1000 # Limite opcional para testes
SECONDS_BETWEEN_MESSAGES = 3 # Intervalo de 3 segundos

Rails.logger.info "Iniciando script de mensagens em massa..."

# Defina o conteúdo da sua mensagem
message_title = "Bem-vindo à Nossa Comunidade"
message_body = "Olá! Estamos muito felizes em tê-lo aqui. Avise-nos se tiver alguma dúvida!"

# Busque usuários ordenados pelo último visto
users = User.where(active: true)
            .where.not(staged: true) # Exclua usuários staged
            .order(last_seen_at: :desc)
            .limit(MAX_MESSAGES)

Rails.logger.info "Encontrados #{users.count} usuários ativos para enviar mensagens."

users.each_with_index do |user, index|
  begin
    Rails.logger.info "Enfileirando mensagem 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 "Mensagem enfileirada com sucesso para #{user.username}."

    # Aguarde o intervalo especificado antes de processar o próximo usuário
    sleep(SECONDS_BETWEEN_MESSAGES)
  rescue => e
    Rails.logger.error "Falha ao enviar mensagem para #{user.username}: #{e.message}"
  end
end

Rails.logger.info "Script de mensagens em massa concluído!"

Eu não fiz nenhuma modificação, e o usuário system enviou a MP para todos os meus usuários na minha instância de teste:


Quantos usuários você tem?