Ecco lo script aggiornato con il nome utente del mittente:
MAX_MESSAGES = 1000 # Limite opzionale per i test
SECONDS_BETWEEN_MESSAGES = 3 # Intervallo di 3 secondi
SENDER_USERNAME = "coco"
message_sender = User.find_by(username: SENDER_USERNAME)
if message_sender.nil?
Rails.logger.error "Utente mittente '#{message_sender_username}' non trovato!"
exit
end
Rails.logger.info "Avvio dello script di messaggistica di massa..."
# Definisci il contenuto del tuo messaggio
message_title = "Benvenuto nella nostra community"
message_body = "Ciao! Siamo entusiasti di averti qui. Facci sapere se hai domande!"
# Recupera gli utenti ordinati per ultimo accesso
users = User.where(active: true)
.where.not(staged: true) # Escludi gli utenti staged
.order(last_seen_at: :desc)
.limit(MAX_MESSAGES)
Rails.logger.info "Trovati #{users.count} utenti attivi a cui inviare messaggi."
users.each_with_index do |user, index|
begin
Rails.logger.info "In coda messaggio per #{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 "Messaggio accodato con successo per #{user.username}."
# Attendi l'intervallo specificato prima di elaborare il prossimo utente
sleep(SECONDS_BETWEEN_MESSAGES)
rescue => e
Rails.logger.error "Impossibile inviare messaggio a #{user.username}: #{e.message}"
end
end
Rails.logger.info "Script di messaggistica di massa completato!"