From c6ea73a58120998ce8dc1b9fa024aaa661916cd1 Mon Sep 17 00:00:00 2001 From: Simon Junod Date: Sun, 16 Oct 2022 00:34:39 +0200 Subject: [PATCH] Added the possibility for N players to collectively choose to reset the game or start a new one --- cambot/settings_example.py | 1 + cambot/wordle.py | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/cambot/settings_example.py b/cambot/settings_example.py index f4234ed..edd14ed 100644 --- a/cambot/settings_example.py +++ b/cambot/settings_example.py @@ -18,6 +18,7 @@ WORDLE_MINLENGTH = 8 WORDLE_MAXLENGTH = 10 WORDLE_FORCE_ALTERNATION = True WORDLE_ALTERNATION_TIMEOUT = 300 +WORDLE_RESETTERS_NEEDED = 3 HEARTBEAT = 60 EPHEMERIS = 0 diff --git a/cambot/wordle.py b/cambot/wordle.py index 06ab6de..b7263dc 100644 --- a/cambot/wordle.py +++ b/cambot/wordle.py @@ -47,6 +47,7 @@ class Game: self.scores = None self.tried = None self.last_datetime = None + self.resetters = set() async def reset(self): output = "" @@ -59,6 +60,7 @@ class Game: self.scores = defaultdict(int) self.tried = set() self.last_datetime = None + self.resetters = set() await self.channel.edit(slowmode_delay=WORDLE_SLOWMODE) output += f"Il y a un nouveau mot à deviner ! Il fait {len(self.target)} lettres." await self.channel.send(output) @@ -66,6 +68,16 @@ class Game: async def parse(self, message): guess = unidecode(message.content.strip()).upper() + # if it's the special keyword 'reset', consider resetting + if guess == "RESET" and WORDLE_RESETTERS_NEEDED != 0: + if message.author in self.resetters: + return + self.resetters.add(message.author) + await self.channel.send(f"Réinitialisation : {len(self.resetters)}/{WORDLE_RESETTERS_NEEDED}") + if len(self.resetters) >= WORDLE_RESETTERS_NEEDED: + await self.reset() + return + # if somebody has already won, return silently if self.winner: return