Script pour envoyer un message de bienvenue en arrière-plan

Voici le script mis à jour avec le nom d’utilisateur de l’expéditeur :

MAX_MESSAGES = 1000 # Limite optionnelle pour les tests
SECONDS_BETWEEN_MESSAGES = 3 # Intervalle de 3 secondes
SENDER_USERNAME = "coco"

message_sender = User.find_by(username: SENDER_USERNAME)

if message_sender.nil?
  Rails.logger.error "Utilisateur expéditeur '#{message_sender_username}' introuvable !"
  exit
end

Rails.logger.info "Démarrage du script de messagerie en masse..."

# Définir le contenu de votre message
message_title = "Bienvenue dans notre communauté"
message_body = "Bonjour ! Nous sommes ravis de vous accueillir. N'hésitez pas à nous faire savoir si vous avez des questions !"

# Récupérer les utilisateurs triés par dernière connexion
users = User.where(active: true)
            .where.not(staged: true) # Exclure les utilisateurs staged
            .order(last_seen_at: :desc)
            .limit(MAX_MESSAGES)

Rails.logger.info "Trouvé #{users.count} utilisateurs actifs à qui envoyer un message."

users.each_with_index do |user, index|
  begin
    Rails.logger.info "Mise en file d'attente du message pour #{user.username} (#{index + 1}/#{users.count})..."

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

    Rails.logger.info "Message mis en file d'attente avec succès pour #{user.username}."

    # Attendre l'intervalle spécifié avant de traiter l'utilisateur suivant
    sleep(SECONDS_BETWEEN_MESSAGES)
  rescue => e
    Rails.logger.error "Échec de l'envoi du message à #{user.username} : #{e.message}"
  end
end

Rails.logger.info "Script de messagerie en masse terminé !"