forked from rDrama/rDrama
1
0
Fork 0
rDrama/files/classes/wordle.py

52 lines
1.8 KiB
Python

import random
from os import environ
def format_guesses(guesses):
return " -> ".join(guesses)
def format_all(guesses, status, answer):
formatted_guesses = format_guesses(guesses)
return f'{formatted_guesses}_{status}_{answer}'
class Wordle:
def __init__(self, g):
self.word_list = environ.get('WORDLE').split(' ')
self.command_word = "!wordle"
self.db = g.db
def check_for_wordle_commands(self, in_text, from_user, from_comment):
word_list = self.word_list
command_word = self.command_word
if command_word in in_text:
answer = random.choice(word_list) # choose a random word from word list
guesses = []
status = 'active'
from_comment.wordle_result = format_all(guesses, status, answer)
def check_guess(self,from_comment, guess):
guesses, status, answer = from_comment.wordle_result.split("_")
guesses = guesses.split(" -> ")
if (guesses[0] == ""):
guesses = []
count = len(guesses)
if (guess != None and len(guess) == 5 and status == "active"):
result = ["🟥"]*5
pos = 0 # letter position
guess = guess.lower()
for i in guess:
result[pos] = i.upper()
if i == answer[pos]:
result[pos] = result[pos] + "🟩" # green
elif i in answer:
result[pos] = result[pos] + "🟨" # yellow
else:
result[pos] = result[pos] + "🟥" # red
pos += 1 # add 1 to the letter position
guesses.append("/".join(result))
if (guess.lower() == answer): status = "won"
elif (count == 5): status = "lost"
from_comment.wordle_result = format_all(guesses, status, answer)