Desafíos diarios de Discourse

Actualmente estoy llevando a mi hija a la escuela. Luego tengo algunas citas esta mañana. Me tomará algún tiempo investigar.

1 me gusta

Parece que algunas columnas de la base de datos no se migraron correctamente. Esta versión agregó varias columnas nuevas a las tablas existentes. ¿Puedes intentar ejecutar:

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

Usar el botón de Actualizar en el panel no aplica las migraciones de la base de datos; se requiere una reconstrucción completa cuando el plugin agrega nuevas columnas.

Gracias por tu paciencia. ¡Lo resolveremos!

1 me gusta

En realidad, ¿puedes ejecutar esto primero y publicar la salida?

./launcher enter app
su discourse -c 'cd /var/www/discourse && bundle exec rails runner "puts ActiveRecord::Base.connection.columns(\"daily_challenges\").map(&:name)"'
1 me gusta
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

mira esto

ActiveModel::UnknownAttributeError (atributo desconocido 'challenge_timezone' para DailyChallenge.) app/controllers/application_controller.rb:447:in 'block in ApplicationController#with_resolved_locale'

Parece que te falta la columna challenge_timezone en la base de datos. ¿Puedes ejecutar esto:

./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)"'

Eso debería agregarla. Investigaré por qué no se agregó y actualizaré los archivos.

1 me gusta

Bien, queda pero esperaré a que él lo solucione

ActiveModel::UnknownAttributeError (atributo desconocido 'challenge_timezone' para 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'

Para asegurarnos de que estamos en el directorio correcto, ejecuta esto primero:

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

Luego ejecuta esto:

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)"'

Después de ejecutarlo, puedes escribir “exit” para salir de la aplicación.

Realiza una actualización forzada en la página web (Ctrl+Shift+R) e inténtalo de nuevo. Si eso no funciona, estaré enviando una corrección en unos momentos.

Estoy en una reunión. Actualizaré pronto.

1 me gusta

Acabo de publicar una actualización. Deberías poder actualizarla desde el panel de administración. Si eso no funciona, es posible que tengas que ejecutar

./launcher rebuild app
1 me gusta

Funciona

Friends: Chandler Bing (Matthew Perry) bailando

1 me gusta

¡WOOOO!!! ¡Gracias por acompañarme y ayudarme a resolverlo!

Funny Man Dancing in Tutu

1 me gusta

¿Así que el siguiente paso incluye algunas nuevas funciones? Me gustaría darte algunas ideas.

Rachas con monedas y insignias, y una sección para seguir tus propias estadísticas.

De todos modos, me encanta y estoy esperando más :smiley:

1 me gusta

Actualmente estoy trabajando en esta parte. Básicamente será un “bot” que tú creas (realmente solo una cuenta de usuario). El plugin vigilará las menciones al bot. Cuando las detecte, ejecutará la acción. Por ejemplo:

Nombre del bot: ChallengeBot

Alguien escribe:

@ChallengeBot estado

El bot le enviará un mensaje privado (DM) con su estado actual en el desafío.

El bot también tendrá algunas otras opciones.

1 me gusta

¿Cómo puedo obtener esta información para mostrarla en otro lugar? ¿O hacer que aparezca en la tarjeta de usuario? Si hay alguna forma de hacerlo, sería genial.

¡v1.4.0 ya está disponible!

Esta versión añade ChallengeBot, una cuenta de bot opcional que incorpora funciones de participación impulsadas por mensajes directos (DM) a tus desafíos.

Novedades en esta versión:

  • Confirmaciones de registro por DM — los miembros reciben un DM de ChallengeBot después de cada registro exitoso, mostrando su racha actual y un enlace al tema del desafío.
  • Recordatorios por DM — los participantes que no se han registrado durante 2 o más días consecutivos (desafíos diarios) o que no se han registrado antes del último día de la semana (desafíos semanales) reciben un recordatorio amable de ChallengeBot. Incluye su conteo actual de registros y la meta. Se puede activar o desactivar por desafío; está habilitado por defecto.
  • Comandos con @mención — los miembros pueden mencionar @ChallengeBot en cualquier tema de desafío activo para obtener estadísticas personales por DM. El bot nunca responde en el tema mismo. Comandos disponibles: status, leaderboard, streak, checkins, progress, help. Limitado a 10 comandos por usuario por hora.
  • Publicaciones del tablero de clasificación y resultados finales — si ChallengeBot está configurado, las publicaciones semanales del tablero de clasificación y las de resultados finales ahora se envían desde la cuenta del bot en lugar de la cuenta del sistema.
  • Nueva configuración del sitiodaily_challenge_bot_username
  • Nuevo campo del desafío — interruptor para recordatorios por DM (habilitado por defecto)

Configurar ChallengeBot es opcional; todas las funciones existentes continúan funcionando sin él. Consulta la publicación principal para obtener las instrucciones completas de configuración.

Nota: Esta versión incluye una migración de base de datos. El botón de Actualización en el panel la aplicará automáticamente.