سيناريو لإرسال رسالة ترحيب في الخلفية

ask.discourse.org يخرج نقطة انطلاق جيدة، كبرنامج نصي لـ rails:

MAX_MESSAGES = 1000 # حد اختياري للاختبار
SECONDS_BETWEEN_MESSAGES = 3 # فاصل زمني 3 ثوانٍ

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!(
      Discourse.system_user,
      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 "اكتمل برنامج الرسائل المجمعة النصي!"

لم أقم بأي تعديل، وأرسل المستخدم system رسالة خاصة إلى جميع مستخدمي في نسختي التجريبية:


كم عدد المستخدمين لديك؟