Aquí tienes el script actualizado con el nombre de usuario del remitente:
MAX_MESSAGES = 1000 # Límite opcional para pruebas
SECONDS_BETWEEN_MESSAGES = 3 # Intervalo de 3 segundos
SENDER_USERNAME = "coco"
message_sender = User.find_by(username: SENDER_USERNAME)
if message_sender.nil?
Rails.logger.error "¡Usuario remitente '#{message_sender_username}' no encontrado!"
exit
end
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 la última vez que se vieron
users = User.where(active: true)
.where.not(staged: true) # Excluye usuarios en etapa de preparación
.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 "Poniendo en cola el mensaje para #{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 "Mensaje puesto en cola con éxito para #{user.username}."
# Espera el intervalo especificado antes de procesar al siguiente usuario
sleep(SECONDS_BETWEEN_MESSAGES)
rescue => e
Rails.logger.error "Error al enviar mensaje a #{user.username}: #{e.message}"
end
end
Rails.logger.info "¡Script de mensajes masivos completado!"