Leaderboard page: name the people who qualify but haven't linked their GitHub yet
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 76/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
- Área
- backend-api-design, frontend
Línea de trabajo
Read handleLeaderboardPage in src/index.ts, linkedMembers in src/links.ts, and the page and message helpers in src/page.ts and src/messages.ts; compare the existing linking tests in test/page.test.ts and route tests in test/index.test.ts. Follow the acceptance criteria for qualifying rows, program end, lookup failures, escaping, and phone width. Done means the line appears only for qualifying unlinked people, the page remains available after lookup errors, and the requested tests pass.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
We contact the winners by Discord DM, so we need to know which Discord account goes with each GitHub login, and we only know that once the person has run /link (src/links.ts). The leaderboard page has one general line about it near the bottom (src/page.ts, line 204), but it doesn't say who still has to do it. Two of the six people who qualify on the October board haven't linked yet.
The final results post in Discord already names the winners who haven't linked (leaderboardMessage in src/messages.ts, lines 161 to 165). The page should do the same while there's still time.
What to do
- In
handleLeaderboardPage(src/index.ts, line 105), when linking is on (linkingEnabled(env)), check who has linked withlinkedMembers(src/links.ts, line 46). Only pass the logins of the rows that qualify: it's one KV read per login, and there's no reason to read the whole board. - Pass the result to
leaderboardPageand add one line above the board that names the people who qualify but haven't linked, for example: "octocat and hubot qualify but haven't linked their GitHub yet. Join the Discord and run /link there, so we can reach you if you win." Link each name to the person's GitHub profile like the rows do, and "Join the Discord" tolinks.discord. - Once the program has ended, name only the winners (
row.winner), like the final results post does. - Add nothing when linking is off, when nobody qualifies yet, or when everyone who qualifies has linked.
- If the lookup fails, log it and show the page without the line. Right now any error in
handleLeaderboardPageturns the whole page into a 503 (line 139). - Chips are hidden on narrow screens (
src/page.ts, line 125), so don't make it a chip. It has to show on a phone. - Leave the JSON (
/leaderboard/{id}.json) as it is.
Where to look
src/index.ts:handleLeaderboardPage(line 105), and the final results post, which callslinkedMembers(line 412)src/links.ts:linkedMembers(line 46) gives a map from the lowercased login to the Discord id, for the logins that are linkedsrc/page.ts:leaderboardPage(line 140), the status line (line 197) and the Discord note (line 204)src/messages.ts:joinNames(line 86) and the sentence about unlinked winners (line 164)test/page.test.ts: the linking tests (line 90), andtest/index.test.tsfor the route (makeEnvintest/helpers.tscomes with an in-memory KV)
#4 changes the rows of the same page, so keep this to the new line and the lookup.
Acceptance criteria
- With linking on, the line names everyone who qualifies and hasn't linked, in board order, with links to their GitHub profiles, and nobody who has linked
- After the end, only winners who haven't linked are named
- No line when linking is off, when nobody qualifies, or when everyone who qualifies has linked
- Only qualifying rows are looked up, and a failed lookup still shows the page, without the line
- Logins are escaped, since they come from GitHub
- The line shows at phone width
- Tests for the cases above, for the page and for the route
- A screenshot of the page with the line, in the PR
-
npm run typecheckandnpm testpass
Want to work on this? Comment below and I'll assign it to you. Please take one issue at a time, branch off develop, and open your PR against develop with Closes #55 in the description.
- Lenguaje dominante
- TypeScript
- Estrellas
- 0
- Forks
- 1
- Merge medio
- 8 h 56 min
- PR fusionados (30 d)
- 53
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de codercops/discord-bot
-
The leaderboard page has no `og:type`Quizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abiertobug good first issue hacktoberfest
Dificultad 1/5 1-3 horas Aptitud para principiantes 85/100
codercops/discord-bot#97 ·
Los mantenedores suelen responder en 1 día
-
Every Card link on the leaderboard page is just "Card" to a screen readerPosiblemente ocupada @varun-pahuja la tomó hoy. Abiertobug good first issue hacktoberfest
codercops/discord-bot#95 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Merged PR shoutout misses the count when the program label is added after the mergePosiblemente ocupada @An16og la tomó hace 2 días. Abiertobug hacktoberfest help wanted
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
codercops/discord-bot#59 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Hacktoberfest 2026: start hereAbiertohacktoberfest
Dificultad 1/5 Menos de una hora Aptitud para principiantes 15/100
codercops/discord-bot#15 ·
Los mantenedores suelen responder en 1 día
Todos los issues de codercops/discord-bot
Issues similares
-
area: image-engine bug priority: low
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
snapotter-hq/SnapOtter#3885 ·
Los mantenedores suelen responder en 1 día
-
Mend: dependency security vulnerability
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 3 días
-
pending triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
bug P3 UI/UX
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster no-stale P3
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
openclaw/openclaw#182077 · 1 comentario · 1 reacción ·
Los mantenedores suelen responder en 1 día