أسئلة متنوعة حول تنظيف vbulletin مستورد

مرحباً،
لقد قمت باستيراد منتدى قديم يبلغ عمره 20 عاماً إلى Discourse.
يحتوي على العديد من الحسابات غير المستخدمة أو الحسابات المزيفة ورسائل غير مرغوب فيها.
أود إجراء عملية تنظيف.

لقد قمت بضبط جميع المستخدمين على مستوى الثقة 0.
حاولت معرفة عدد المستخدمين الذين لم ينشروا أي رسالة باستخدام استعلام مستكشف البيانات التالي:

SELECT COUNT (DISTINCT user_id) from posts

أظهرت النتيجة 28530.

ثم حاولت معرفة إجمالي عدد المستخدمين:

SELECT COUNT (DISTINCT id) FROM users

أظهرت النتيجة 180000 (تؤكد إحصائيات vBulletin أن لدينا بالفعل 180000 حساب).

لقد شغلت مهمة CleanUpInactiveUsers في Sidekiq.
تم إزالة بضع مئات فقط من المستخدمين. نظرت إلى أحد هذه الملفات الشخصية غير المستخدمة ولم أجد أي نشاط: لا منشورات، ولا مواضيع… ومع ذلك، أرسل Discobot رسالة إليهم بعد استيراد جميع المستخدمين من vBulletin. كان ذلك قبل 5 أيام.
لذلك، في إعدادات Discourse، قمت بتعيين تنظيف المستخدمين غير النشطين بعد عدد الأيام إلى 1.
ثم شغلت مهمة CleanUpInactiveUsers في Sidekiq مرة أخرى.
فقدت حوالي 1000 مستخدم.
لا يزال لدي 178000 مستخدم، وأنا أعرف أن معظمهم ملفات شخصية فارغة وغير مستخدمة بدون أي رسائل.

هل لديكم أي فكرة عن سبب عدم إزالة هؤلاء المستخدمين بواسطة CleanUpInactiveUsers؟

بالإضافة إلى ذلك، وبما أن هناك العديد من الحسابات المزيفة والرسائل غير المرغوب فيها، هل من الممكن تشغيل كشف الرسائل غير المرغوب فيها على المستخدمين والرسائل الموجودة، وتنظيف ذلك أيضاً؟

تتمتع المهمة بحد أقصى قدره 1000 مستخدم لكل تشغيل، لتجنب ازدحام طابور Sidekiq.

يمكنك تشغيلها من وحدة تحكم Rails كما يلي:

Jobs::CleanUpInactiveUsers.new.execute({})

ثم ضعها في حلقة تكرار مثل:

100.times do 
  Jobs::CleanUpInactiveUsers.new.execute({})
  puts "تم إكمال التكرار. إجمالي عدد المستخدمين #{User.count}"
end

ما نوع كشف البريد المزعج الذي تفكر فيه؟ أكismet؟

شكرًا للتوضيح!

بصراحة، لا أعرف. لا أعرف ما الذي يستخدمه ديسكورش لكشف ومنع الرسائل المزعجة.

كما أعتقد أن عددًا كبيرًا من مرسلّي الرسائل المزعجة لدي نشروا رسائل على ملفات المستخدمين العامة، وهي ميزة غير موجودة في ديسكورش.
تم استيراد هذه الرسائل في ديسكورش كـ “مواضيع عادية”، دون تصنيف ودون عنوان، مما يجعلها سهلة التحديد:


مثال على ملف مزعج:

لا أريد حذف جميع هذه الرسائل عديمة العنوان، فمعظمها غير ضار وقد يحتوي على معلومات يود بعض المستخدمين استعادتها.

ما أود فعله هو حذف المستخدمين الذين نشروا مواضيعًا عديمة العنوان فقط وحذف مواضيعهم أيضًا.
هل يمكن إنجاز ذلك بسهولة نسبيًا باستخدام أوامر رايلز؟

قد يتطلب الأمر بعض التجربة، لكن نعم. يمكن أن يعمل شيء مثل هذا كنقطة انطلاق:

User.find_each do |user|
  untitled_topic_count = user.topics.where(title: "").count
  titled_topic_count = user.topics.where.not(title: "").count
  if untitled_topic_count > 0 && titled_topic_count == 0
    # احذف المواضيع و/أو المستخدم
  end
end

للتسجيل، إليك شروطي:

في حالتي، يجب أن يكون لدى المُرسل للرسائل المزعجة:

  • أكثر من منشور واحد
  • موضوع واحد على الأقل بدون عنوان
  • لا يوجد موضوع بعنوان
  • نفس عدد المنشورات وعدد المواضيع (بما أن الموضوع هو منشور)

لذلك أضفت الشروط التالية:

User.find_each do |user|
  untitled_topic_count = user.topics.where(title: "").count
  titled_topic_count = user.topics.where.not(title: "").count
  topic_count = untitled_topic_count + titled_topic_count
  post_count = user.posts.count
  if post_count > 1 && untitled_topic_count > 0 && titled_topic_count == 0 && post_count == topic_count
    puts "SPAMMER ?"
  end
end

لنأمل ألا يستهدف مستخدمين شرعيين، لكن يبدو الأمر آمناً حتى الآن عند فحص بعض الأهداف عشوائياً. :wink: