مؤخرًا في 2.9.0beta2 يمكن للمستخدمين الذين لديهم حساب بالفعل النقر على روابط الدعوة. ولكن عندما أنشأت روابط دعوة ونقرت عليها، ظهر لي أنني دعوت نفسي، وبما أنني في المستوى TL2+ ونقرت على 5 روابط دعوة مختلفة، فقد حصلت على شارة Champion. يمكنك رؤية لقطة شاشة لذلك أدناه. هذه في منتديات Replit EDU ويمكنك عرض ملفي الشخصي هنا.
الوصول إلى المستوى TL2+ (بشكل افتراضي)، وإنشاء روابط دعوة ثم النقر عليها. سيظهر أنك دعوت نفسك في ملفك الشخصي وأنك قبلت دعوتك كما هو موضح أعلاه. وإذا كان لديك ما يكفي من روابط الدعوة، فستحصل على شارات Campaigner و Champion.
تم إصلاح هذه المشكلة الآن. شكرًا مرة أخرى @not-ethan للإبلاغ عنها! إذا لاحظت أي شيء خاطئ على الإطلاق في نظام الدعوات، فيرجى إخبارنا بذلك. نحن نعمل عليه بنشاط.
يا جماعة،
هناك خطأ يمكنك من خلاله إنشاء رمز دعوة واسترداده بنفسك، وبهذه الطريقة يمكنك الحصول على شارات الدعوة، وهو أمر مزعج. ذكر هذا @not-ethan وتم تقديم طلب سحب، لكن الخطأ لا يزال نشطًا. كانت فكرتي هي أنه إذا استخدم شخص ما رمز دعوة للويب، ولكن هذا الشخص مسجل دخوله، فاجعل الرمز يفشل!
شكراً لإثارة هذا الموضوع مرة أخرى يا أورياس. نحن نسعى لعدم المساس بنظام الدعوات كثيراً في الوقت الحالي، لأنه معقد وإجراء تغييرات عليه قد يكون له عواقب غير مقصودة وغير مخطط لها.
هل هناك أي طريقة يمكننا من خلالها تجاوز هذه المشكلة عن طريق تغيير كيفية منح الشارة؟ على سبيل المثال، إذا كان الشخص الذي يسترد الدعوة عضواً بالفعل، فلا تمنح شارة الحملة للشخص الذي أنشأ الدعوة؟
يبدو لي أن هذه مشكلة قد تكون موجودة منذ فترة طويلة دون أن يلاحظها أحد. قد يكون هناك حل آخر وهو التعامل مع هذا على أنه “لا تفعل شيئاً، يعمل حسب التصميم” وترك الأمر لمشرفي المجتمع لمعالجته إذا كانوا قلقين بشأن قيام الأشخاص بإساءة استخدام هذه الطريقة للحصول على المزيد من الشارات.
ربما يحتاج استعلام SQL الخاص بي إلى التحقق ، لكنني أعتقد أنه يمكنك إضافة هذا السطر إلى استعلام الشارة لمنع منحه للأشخاص الذين دعوا أنفسهم - AND i.invited_by_id <> u2.id
لذا شيء مثل هذا:
SELECT u.id user_id, current_timestamp granted_at
FROM users u
WHERE u.id IN (
SELECT invited_by_id
FROM invites i
JOIN invited_users iu ON iu.invite_id = i.id
JOIN users u2 ON u2.id = iu.user_id
WHERE i.deleted_at IS NULL
AND i.invited_by_id <> u2.id
AND u2.active
AND u2.trust_level >= 0
AND u2.silenced_till IS NULL
GROUP BY invited_by_id
HAVING COUNT(*) >= 1
) AND u.active AND u.silenced_till IS NULL AND u.id > 0 AND
(:backfill OR u.id IN (:user_ids) )
رائع! لم ألعب بنظام الشارات منذ فترة، ولكن عند النظر الآن لا أرى الشارات المتعلقة بالدعوات في واجهة المستخدم الخاصة بالشارات في لوحة التحكم. ربما تكون هذه شارات نظام يجب تعديلها في جوهر Discourse؟