mirror of
https://github.com/tiennm99/tiennm99bot.git
synced 2026-10-11 03:13:46 +00:00
/wordledaily sends a BotFather game card whose page plays one shared word per day, changing at 07:00 ICT. The server checks guesses, saves each player's board after every guess and keeps NYT-style stats. A win is reported with setGameScore, and in a group one live results message shows everyone's colour grids. /wordledaily_subscribe and /wordledaily_unsubscribe opt a chat or topic in to the 07:00 push: yesterday's recap, opening with the answer and the group's win streak, then today's card. The HTML5 game plumbing that noitu used is now shared in util/htmlgame, and the wordle word list and scoring live in wordle/wordlist.
30 lines
774 B
Go
30 lines
774 B
Go
package wordle
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/tiennm99/tiennm99bot/internal/modules/wordle/wordlist"
|
|
)
|
|
|
|
// renderGuess formats one guess as the NYT share-pattern: word on one line,
|
|
// emoji marker row below.
|
|
//
|
|
// CRANE
|
|
// 🟩🟨⬜🟩🟩
|
|
func renderGuess(word string, results []LetterScore) string {
|
|
return strings.ToUpper(word) + "\n" + wordlist.EmojiRow(results)
|
|
}
|
|
|
|
// renderBoard joins all prior guesses, blank-line separated. Used when a
|
|
// player asks for `/wordle` mid-round.
|
|
func renderBoard(guesses []GuessRecord) string {
|
|
if len(guesses) == 0 {
|
|
return "No guesses yet. Reply with `/wordle <word>`."
|
|
}
|
|
rows := make([]string, len(guesses))
|
|
for i, g := range guesses {
|
|
rows[i] = renderGuess(g.Word, g.Results)
|
|
}
|
|
return strings.Join(rows, "\n\n")
|
|
}
|