52 lines
No EOL
1.8 KiB
Python
52 lines
No EOL
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) |