Desafios Diários do Discourse

:information_source: Resumo Execute desafios de check-in diários com tempo limitado, tabelas de classificação, publicações automatizadas e prêmios de emblema.
:hammer_and_wrench: Link do Repositório GitHub - R23DPrinting/discourse-daily-challenge · GitHub
:open_book: Guia de Instalação Como instalar plugins no Discourse

A História

Eu administro uma comunidade de saúde e bem-estar que recentemente migrou do Discord para o Discourse. No Discord, eu havia criado um bot personalizado para realizar desafios de fitness mensais — os membros postavam seus treinos diários, o bot rastreava os check-ins, publicava tabelas de classificação semanais e anunciava os vencedores no final de cada mês. Era um dos nossos recursos mais populares.

Após a migração para o Discourse, os membros começaram a pedir os desafios de volta. Procurei por um plugin existente e não encontrei nada. Então, eu construí um.

O que começou como uma solução rápida se transformou em um sistema de desafios completo que, honestamente, funciona melhor do que o bot original do Discord. Como pode ser útil para outras comunidades, estou compartilhando-o aqui.

Recursos

  • Check-ins por hashtag ou foto — os membros fazem check-in postando a hashtag do desafio (ex: #AbrilFitness) ou carregando uma imagem no tópico do desafio. Ambos acionam um check-in válido.
  • Um check-in por dia — aplicado nos níveis de aplicação e banco de dados. A janela diária de cada usuário é baseada no fuso horário do seu perfil.
  • Fuso horário por desafio — defina o fuso horário do desafio independentemente do fuso horário do seu servidor para que nenhum membro seja prejudicado à meia-noite UTC.
  • Painel de administração em tempo real — mostra todos os desafios ativos simultaneamente com contagem de participantes, média de check-ins, rastreamento de sequência (streak), porcentagem de conclusão e uma tabela de classificação ranqueada.
  • Múltiplos desafios simultâneos — execute vários desafios ao mesmo tempo, cada um com seu próprio tópico, hashtag, cronograma e emblema.
  • Desafios arquivados — desafios concluídos preservados em um arquivo expansível mostrando estatísticas finais, vencedores e taxas de conclusão.
  • Publicações automatizadas de tabela de classificação semanal — publicadas no tópico do desafio em um dia e hora configuráveis no fuso horário do próprio desafio.
  • Publicação de resultados finais — postada automaticamente no dia seguinte ao término do desafio, listando todos que atingiram a meta de check-ins.
  • Prêmios de emblema personalizados — cria automaticamente um emblema do Discourse para cada desafio e o concede aos participantes elegíveis quando o desafio termina.
  • Gerenciamento de check-ins pelo administrador — adicione ou remova check-ins para qualquer usuário diretamente no painel de administração.
  • Gatilho manual da tabela de classificação — publique a tabela de classificação a qualquer momento na página de detalhes do desafio.
  • Data final inclusiva — se você definir a data final para 31 de março, os check-ins em 31 de março contam.

Configuração

Criando um Desafio

Vá para Admin → Plugins → Desafio Diário (Daily Challenge) → Desafios (Challenges) → Novo Desafio (New Challenge)

Insira um ID de Tópico para vincular o desafio a um tópico existente. O plugin exibirá o título do tópico como confirmação. Preencha o gatilho de hashtag, as datas de início e fim e o número de check-ins necessários para completar o desafio.

Defina o Fuso Horário do Desafio (Challenge timezone) para o fuso horário principal da sua comunidade para garantir que os limites de data sejam avaliados corretamente para seus membros.

Se você deseja publicações automáticas de tabela de classificação semanal, ative a chave seletora (toggle) e defina o dia e a hora. Se desejar um emblema de conclusão, ative a chave seletora e insira um nome de emblema (ex: “Campeão de Fitness de Abril”).

Clique em Salvar desafio (Save challenge) — se a concessão de emblemas estiver ativada, o emblema é criado automaticamente.

Executando um Desafio

Uma vez criado, o desafio está imediatamente ativo. Os membros postam no tópico vinculado com a hashtag ou uma imagem para fazer o check-in. O painel de administração (Admin → Plugins → Desafio Diário (Daily Challenge) → Painel (Dashboard)) exibe estatísticas em tempo real para todos os desafios ativos.

Dicas

  • Peça aos membros para definirem seu fuso horário em Perfil → Preferências → Interface → Fuso Horário (Timezone) para janelas de check-in diárias precisas.
  • Use o botão Publicar Tabela de Classificação Agora (Post Leaderboard Now) na página de detalhes do desafio para acionar uma publicação da tabela de classificação a qualquer momento.
  • Use a seção Check-ins na página de detalhes do desafio para adicionar ou remover manualmente check-ins para qualquer usuário.

Configurações

Nome Descrição
daily_challenge_enabled Chave mestre de ligar/desligar para o plugin
Topic ID O tópico onde os participantes postam os check-ins
Hashtag trigger A hashtag a ser monitorada, sem o #
Start date Primeiro dia em que os check-ins são aceitos
End date Último dia em que os check-ins são aceitos (inclusivo)
Check-ins needed Número de check-ins necessários para completar o desafio e se qualificar para o emblema
Description Nota interna opcional sobre o desafio (não mostrada aos participantes)
Challenge timezone Fuso horário usado para limites de data e cronograma de publicação semanal
Enable weekly leaderboard post Ativa/desativa publicações semanais automáticas
Post day of week Dia em que a publicação semanal é publicada
Post hour (0-23) Hora em que a publicação semanal é publicada no fuso horário do desafio
Award completion badge Ativa/desativa a criação e concessão automática de emblemas
Badge name Nome do emblema criado para este desafio

Próximos Passos

Planejamento para a v2:

  • Confirmação por DM após cada check-in com estatísticas atuais
  • DMs de lembrete diário para participantes que ainda não fizeram check-in
  • Comandos de @menção para verificar estatísticas pessoais

Suporte e Solicitações de Recursos

Se você encontrar algum problema ou tiver ideias para novos recursos, abra uma issue no GitHub ou responda a este tópico.

4 curtidas