Estou levando minha filha para a escola no momento. Depois, tenho alguns compromissos esta manhã. Vou precisar de algum tempo para investigar.
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!
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)"'
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.
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.
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
Funciona

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

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 ![]()
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.
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
@ChallengeBotem 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 site —
daily_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.

