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.
27 lines
907 B
Go
27 lines
907 B
Go
package wordle
|
|
|
|
import "github.com/tiennm99/tiennm99bot/internal/modules/wordle/wordlist"
|
|
|
|
// normalizeWord lowercases input and strips anything outside a-z.
|
|
func normalizeWord(input string) string { return wordlist.Normalize(input) }
|
|
|
|
// rejectReason classifies why validateGuess returned not-ok. rejectMessage in
|
|
// handlers.go maps each reason to its user-facing reply.
|
|
type rejectReason = wordlist.Reason
|
|
|
|
const (
|
|
reasonEmpty = wordlist.ReasonEmpty
|
|
reasonLength = wordlist.ReasonLength
|
|
reasonUnknown = wordlist.ReasonUnknown
|
|
)
|
|
|
|
// guessResult is the validateGuess outcome; Word is always the normalized
|
|
// input.
|
|
type guessResult = wordlist.Result
|
|
|
|
// validateGuess normalizes input then checks length + dictionary membership.
|
|
// Reasons in priority order: empty > length > unknown.
|
|
func validateGuess(dict map[string]struct{}, input string) guessResult {
|
|
return wordlist.Validate(dict, input)
|
|
}
|