تحديات يومية في Discourse

أقوم حاليًا بإصطحاب ابنتي إلى المدرسة. ثم لدي بعض المواعيد هذا الصباح. سيستغرق الأمر مني بعض الوقت للتحقيق.

إعجاب واحد (1)

يبدو أن بعض أعمدة قاعدة البيانات قد لا تكون قد انتقلت بشكل صحيح. أضاف هذا الإصدار عدة أعمدة جديدة إلى الجداول الموجودة. هل يمكنك محاولة تشغيل الأمر التالي:

cd /var/discourse && ./launcher rebuild app

لا يؤدي استخدام زر التحديث داخل اللوحة إلى تطبيق هجرات قاعدة البيانات — يلزم إعادة بناء كاملة عندما تضيف الإضافة أعمدة جديدة.

شكرًا لصبرك. سنقوم بحل المشكلة!

إعجاب واحد (1)

في الواقع، هل يمكنك تشغيل هذا أولاً ونشر المخرجات؟

./launcher enter app
su discourse -c 'cd /var/www/discourse && bundle exec rails runner "puts ActiveRecord::Base.connection.columns(\"daily_challenges\").map(&:name)"'
إعجاب واحد (1)
root@segredin-app:/var/www/discourse# su discourse -c 'cd /var/www/discourse &&                                                                                         bundle exec rails runner "puts ActiveRecord::Base.connection.columns(\"daily_cha                                                                                        llenges\").map(&:name)"'
id
topic_id
hashtag
start_date
end_date
check_ins_needed
description
created_at
updated_at
final_post_sent
weekly_post_enabled
weekly_post_day
weekly_post_hour
award_badge
badge_name
badge_id
check_in_interval
week_start
category_id

انظر إلى هذا

ActiveModel::UnknownAttributeError (خاصية غير معروفة 'challenge_timezone' لـ DailyChallenge.) app/controllers/application_controller.rb:447:in 'block in ApplicationController#with_resolved_locale'

يبدو أنك تفتقد عمود قاعدة البيانات challenge_timezone. هل يمكنك تشغيل الأمر التالي:

./launcher enter app
su discourse -c 'cd /var/www/discourse && bundle exec rails runner "ActiveRecord::Base.connection.add_column(:daily_challenges, :challenge_timezone, :string, default: \"UTC\") unless ActiveRecord::Base.connection.column_exists?(:daily_challenges, :challenge_timezone)"'

يجب أن يؤدي ذلك إلى إضافته. سأقوم بالتحقيق في سبب عدم إضافته وتحديث الملفات.

إعجاب واحد (1)

حسناً، لا يزال الأمر قائماً لكنني سأنتظر إصلاحه

ActiveModel::UnknownAttributeError (unknown attribute 'challenge_timezone' for DailyChallenge.)
app/controllers/application_controller.rb:447:in 'block in ApplicationController#with_resolved_locale'
app/controllers/application_controller.rb:447:in 'ApplicationController#with_resolved_locale'
app/controllers/application_controller.rb:1098:in 'ApplicationController#ensure_dont_cache_page'
lib/middleware/omniauth_bypass_middleware.rb:35:in 'Middleware::OmniauthBypassMiddleware#call'
lib/middleware/crawler_hooks.rb:11:in 'Middleware::CrawlerHooks#call'
lib/content_security_policy/middleware.rb:12:in 'ContentSecurityPolicy::Middleware#call'
lib/middleware/anonymous_cache.rb:420:in 'Middleware::AnonymousCache#call'
lib/middleware/csp_script_nonce_injector.rb:12:in 'Middleware::CspScriptNonceInjector#call'
config/initializers/008-rack-cors.rb:14:in 'Discourse::Cors#call'
lib/middleware/default_headers.rb:13:in 'Middleware::DefaultHeaders#call'
config/initializers/100-quiet_logger.rb:20:in 'DiscourseRackQuietAssetsLogger#call'
config/initializers/100-silence_logger.rb:29:in 'SilenceLogger#call'
lib/middleware/enforce_hostname.rb:23:in 'Middleware::EnforceHostname#call'
lib/middleware/request_tracker.rb:321:in 'Middleware::RequestTracker#call'
lib/middleware/overload_protections.rb:22:in 'Middleware::OverloadProtections#call'
lib/middleware/processing_request.rb:14:in 'Middleware::ProcessingRequest#call'

للتأكد من أنك في الدليل الصحيح، قم بتشغيل الأمر التالي أولاً:

cd /var/discourse && ./launcher enter app

ثم قم بتشغيل الأمر التالي:

su discourse -c 'cd /var/www/discourse && bundle exec rails runner "ActiveRecord::Base.connection.add_column(:daily_challenges, :challenge_timezone, :string, default: \"UTC\") unless ActiveRecord::Base.connection.column_exists?(:daily_challenges, :challenge_timezone)"'

بعد تشغيل ذلك، يمكنك كتابة “exit” للخروج من التطبيق.

قم بعمل تحديث قوي لصفحة الويب (ctrl-shift-R) وحاول مرة أخرى. إذا لم ينجح ذلك، فسأقوم بدفع إصلاح خلال بضع دقائق.

أنا في اجتماع. سأقوم بالتحديث قريبًا.

إعجاب واحد (1)

لقد دفعت تحديثًا للتو. يجب أن تتمكن من التحديث عبر لوحة الإدارة. إذا لم ينجح ذلك، فقد تحتاج إلى تنفيذ الأمر التالي:

./launcher rebuild app
إعجاب واحد (1)

يعمل

أصدقاء: تشاندلر بينغ (ماتثيو بيري) يرقص

إعجاب واحد (1)

واوواو!!! شكرًا لك على الصبر ومساعدتي في تجاوز ذلك!!

رجل مضحك يرقص بتيو تيو

إعجاب واحد (1)

إذن، هل هناك وظائف جديدة قادمة في الخطوة التالية؟ أود أن أقدم لك بعض الأفكار

سلاسل متتالية مع عملات وشارات، ومكان/قسم لمتابعة إحصائياتك الخاصة

على أي حال، أنا أحب هذا وأنتظر المزيد :smiley:

إعجاب واحد (1)

أعمل حاليًا على هذا الجزء. سيكون في الأساس “بوت” تنشئه (في الواقع مجرد حساب مستخدم). سيقوم الإضافة بمراقبة ذكر البوت. عند رؤيته له، سيقوم بتنفيذ الإجراء. على سبيل المثال:

اسم البوت: ChallengeBot

يكتب شخص ما:

@ChallengeBot status

سيقوم البوت بإرسال رسالة خاصة (DM) إليه تحتوي على حالته الحالية في التحدي.

سيكون للبوت أيضًا بعض الخيارات الأخرى.

إعجاب واحد (1)

كيف يمكنني الحصول على هذه المعلومات لعرضها في مكان آخر؟ أو جعلها تظهر في بطاقة المستخدم؟ إذا كان هناك مسار للقيام بذلك، فسيكون ذلك رائعًا.

متاح الآن الإصدار v1.4.0!

يضيف هذا الإصدار ChallengeBot — حساب روبوت اختياري يجلب ميزات التفاعل المدعومة بالرسائل المباشرة إلى تحدياتك.

ما هو الجديد في هذا الإصدار:

  • رسائل تأكيد تسجيل الدخول — يتلقى الأعضاء رسالة مباشرة من ChallengeBot بعد كل تسجيل دخول ناجح، تُظهر سلسلة تسجيل الدخول الحالية ورابط موضوع التحدي.
  • رسائل تذكير — يتلقى المشاركون الذين لم يسجلوا دخولهم لمدة يومين متتاليين أو أكثر (التحديات اليومية) أو لم يسجلوا دخولهم بحلول اليوم الأخير من الأسبوع (التحديات الأسبوعية) تذكيرًا لطيفًا من ChallengeBot. تتضمن الرسالة عدد تسجيلات الدخول الحالي والهدف. يمكن تفعيلها أو إيقافها لكل تحدي، وتكون مفعلة افتراضيًا.
  • أوامر @mention — يمكن للأعضاء ذكر @ChallengeBot في أي موضوع تحدي نشط للحصول على إحصائياتهم الشخصية عبر الرسائل المباشرة. لا يرد الروبوت أبدًا داخل الموضوع نفسه. الأوامر المتاحة: status، leaderboard، streak، checkins، progress، help. محدودة بمعدل 10 أوامر لكل مستخدم في الساعة.
  • منشورات لوحة الصدارة والنتائج النهائية — إذا تم تكوين ChallengeBot، فإن منشورات لوحة الصدارة الأسبوعية ومنشورات النتائج النهائية تُرسل الآن من حساب الروبوت بدلاً من حساب النظام.
  • إعداد موقع جديدdaily_challenge_bot_username
  • حقل تحدي جديد — مفتاح تبديل رسائل التذكير (مفعّل افتراضيًا)

إعداد ChallengeBot اختياري — فجميع الميزات الحالية تستمر في العمل بدونه. راجع المنشور الرئيسي للحصول على إرشادات الإعداد الكاملة.

ملاحظة: يتضمن هذا الإصدار هجرة قاعدة بيانات. سيتم تطبيق زر التحديث في اللوحة تلقائيًا.