إليك البرنامج النصي المحدث باسم المستخدم المرسل:
MAX_MESSAGES = 1000 # حد اختياري للاختبار
SECONDS_BETWEEN_MESSAGES = 3 # فاصل زمني 3 ثوانٍ
SENDER_USERNAME = "coco"
message_sender = User.find_by(username: SENDER_USERNAME)
if message_sender.nil?
Rails.logger.error "لم يتم العثور على المستخدم المرسل '#{message_sender_username}'!"
exit
end
Rails.logger.info "بدء البرنامج النصي للرسائل المجمعة..."
# تحديد محتوى رسالتك
message_title = "مرحبًا بك في مجتمعنا"
message_body = "مرحبًا! يسعدنا جدًا انضمامك إلينا. أخبرنا إذا كانت لديك أي أسئلة!"
# جلب المستخدمين مرتبين حسب آخر ظهور
users = User.where(active: true)
.where.not(staged: true) # استبعاد المستخدمين المرحليين
.order(last_seen_at: :desc)
.limit(MAX_MESSAGES)
Rails.logger.info "تم العثور على #{users.count} مستخدم نشط لإرسال رسالة إليهم."
users.each_with_index do |user, index|
begin
Rails.logger.info "إضافة رسالة إلى قائمة الانتظار لـ #{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 "تمت إضافة الرسالة بنجاح إلى قائمة الانتظار لـ #{user.username}."
# الانتظار للمدة المحددة قبل معالجة المستخدم التالي
sleep(SECONDS_BETWEEN_MESSAGES)
rescue => e
Rails.logger.error "فشل إرسال الرسالة إلى #{user.username}: #{e.message}"
end
end
Rails.logger.info "اكتمل البرنامج النصي للرسائل المجمعة!"