Desafios Diários do Discourse

Estou levando minha filha para a escola no momento. Depois, tenho alguns compromissos esta manhã. Vou precisar de algum tempo para investigar.

1 curtida

Parece que algumas colunas do banco de dados podem não ter migrado corretamente. Esta versão adicionou várias colunas novas às tabelas existentes. Você pode tentar executar:

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

Usar o botão Atualizar no painel não aplica as migrações do banco de dados — é necessária uma reconstrução completa quando o plugin adiciona novas colunas.

Obrigado pela paciência. Vamos resolver isso!

1 curtida

Na verdade, você pode executar isso primeiro e publicar a saída?

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

veja isso

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

Parece que você está sem a coluna do banco de dados challenge_timezone. Você pode executar o seguinte:

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

Isso deve adicioná-la. Vou investigar por que ela não foi adicionada e atualizar os arquivos.

1 curtida

Certo, resta apenas aguardar a correção dele

ActiveModel::UnknownAttributeError (atributo desconhecido '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 garantir que estamos no diretório correto, execute primeiro:

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

Em seguida, execute:

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

Após executá-lo, você pode digitar “exit” para sair do aplicativo.

Faça uma atualização forçada na página web (Ctrl-Shift-R) e tente novamente. Se isso não funcionar, enviarei uma correção em alguns instantes.

Estou em uma reunião. Atualizo em breve.

1 curtida

Acabei de enviar uma atualização. Você deverá poder atualizar através do painel de administração. Se isso não funcionar, talvez seja necessário executar

./launcher rebuild app
1 curtida

Funciona

Friends: Chandler Bing (Matthew Perry) Dançando

1 curtida

WOOOO!!! Obrigado por ficar comigo e me ajudar a resolver isso!!

Funny Man Dancing in Tutu

1 curtida

Então, o próximo passo terá algumas novas funções? Gostaria de compartilhar algumas ideias com você:

Sequências com moedas e emblemas, além de uma área/seção para acompanhar suas próprias estatísticas.

De qualquer forma, adoro e estou aguardando mais :smiley:

1 curtida

Estou trabalhando atualmente nesta parte. Será basicamente um “bot” que você cria (na verdade, apenas uma conta de usuário). O plugin monitorará menções ao bot. Quando ele as detectar, executará a ação. Por exemplo:

Nome do Bot: ChallengeBot

Alguém digita:

@ChallengeBot status

O bot enviará uma mensagem direta (DM) com o status atual da pessoa no desafio.

O bot também terá algumas outras opções.

1 curtida

Como obter essas informações para exibi-las em outro local? Ou fazê-las aparecer no cartão do usuário? Se houver algum caminho para fazer isso, seria ótimo.

v1.4.0 já está disponível!

Esta versão adiciona o ChallengeBot — uma conta de bot opcional que traz recursos de engajamento baseados em DM para seus desafios.

Novidades nesta versão:

  • Confirmação de check-in por DM — os membros recebem uma DM do ChallengeBot após cada check-in bem-sucedido, mostrando sua sequência atual e um link para o tópico do desafio.
  • Lembretes por DM — participantes que não fizeram check-in por 2 ou mais dias consecutivos (desafios diários) ou que não fizeram check-in até o último dia da semana (desafios semanais) recebem um lembrete suave do ChallengeBot. Inclui a contagem atual de check-ins e a meta. Pode ser ativado/desativado por desafio, com padrão ativado.
  • Comandos com @mention — os membros podem mencionar @ChallengeBot em qualquer tópico de desafio ativo para obter estatísticas pessoais via DM. O bot nunca responde no próprio tópico. Comandos disponíveis: status, leaderboard, streak, checkins, progress, help. Limitado a 10 comandos por usuário por hora.
  • Postagens de leaderboard e resultados finais — se o ChallengeBot estiver configurado, as postagens semanais de leaderboard e os resultados finais são agora enviados pela conta do bot em vez da conta do sistema.
  • Nova configuração do sitedaily_challenge_bot_username
  • Novo campo de desafio — alternador para lembretes por DM (padrão ativado)

A configuração do ChallengeBot é opcional — todos os recursos existentes continuam funcionando sem ele. Consulte o post principal para obter instruções completas de configuração.

Observação: Esta versão inclui uma migração de banco de dados. O botão Atualizar no painel aplicará automaticamente.