Added the possibility for N players to collectively choose to reset the game or start a new one

This commit is contained in:
2022-10-16 00:34:39 +02:00
parent 42594d75b0
commit c6ea73a581
2 changed files with 13 additions and 0 deletions

View File

@@ -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

View File

@@ -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