Skript zum Senden einer Willkommensnachricht im Hintergrund

ask.discourse.org gibt einen guten Ausgangspunkt aus, als Rails-Skript:

MAX_MESSAGES = 1000 # Optionale Grenze für Tests
SECONDS_BETWEEN_MESSAGES = 3 # 3 Sekunden Intervall

Rails.logger.info "Starte Bulk-Nachrichten-Skript..."

# Definiere den Inhalt deiner Nachricht
message_title = "Willkommen in unserer Community"
message_body = "Hallo! Wir freuen uns sehr, dich hier zu haben. Lass uns wissen, wenn du Fragen hast!"

# Rufe Benutzer ab, sortiert nach zuletzt gesehen
users = User.where(active: true)
            .where.not(staged: true) # Schließe staged Benutzer aus
            .order(last_seen_at: :desc)
            .limit(MAX_MESSAGES)

Rails.logger.info "Habe #{users.count} aktive Benutzer gefunden, denen Nachrichten gesendet werden sollen."

users.each_with_index do |user, index|
  begin
    Rails.logger.info "Warte auf Nachricht für #{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 "Nachricht erfolgreich für #{user.username} in die Warteschlange gestellt."

    # Warte für das angegebene Intervall, bevor der nächste Benutzer verarbeitet wird
    sleep(SECONDS_BETWEEN_MESSAGES)
  rescue => e
    Rails.logger.error "Fehler beim Senden der Nachricht an #{user.username}: #{e.message}"
  end
end

Rails.logger.info "Bulk-Nachrichten-Skript abgeschlossen!"

Ich habe keine Änderungen vorgenommen, und der Benutzer system hat die PM an alle meine Benutzer auf meiner Testinstanz gesendet:


Wie viele Benutzer hast du?