mirror of
https://github.com/pragma-/pbot.git
synced 2024-11-05 19:49:32 +01:00
Plugin/Wordle: removed unidecode normalization; added Finnish
This commit is contained in:
parent
51fb92bc39
commit
5c185486e8
60303
data/wordle/finnish
Normal file
60303
data/wordle/finnish
Normal file
File diff suppressed because it is too large
Load Diff
@ -11,8 +11,6 @@ use parent 'PBot::Plugin::Base';
|
||||
|
||||
use PBot::Imports;
|
||||
|
||||
use Text::Unidecode;
|
||||
|
||||
sub initialize($self, %conf) {
|
||||
$self->{pbot}->{commands}->add(
|
||||
name => 'wordle',
|
||||
@ -46,11 +44,21 @@ my %wordlists = (
|
||||
insane => '/wordle/american-insane',
|
||||
british => '/wordle/british',
|
||||
canadian => '/wordle/canadian',
|
||||
finnish => '/wordle/finnish',
|
||||
french => '/wordle/french',
|
||||
german => '/wordle/german',
|
||||
italian => '/wordle/italian',
|
||||
spanish => '/wordle/spanish',
|
||||
polish => '/wordle/polish',
|
||||
spanish => '/wordle/spanish',
|
||||
);
|
||||
|
||||
my %accents = (
|
||||
finnish => 'åäöšž',
|
||||
french => 'éàèùçâêîôûëïü',
|
||||
german => 'äöüß',
|
||||
italian => 'èéìòù',
|
||||
polish => 'ćńóśźżąęł',
|
||||
spanish => 'áéíóúüñ',
|
||||
);
|
||||
|
||||
my %color = (
|
||||
@ -129,7 +137,7 @@ sub wordle($self, $context) {
|
||||
return "Usage: wordle custom <word> <channel> [wordlist]";
|
||||
}
|
||||
|
||||
my $custom_word = unidecode $args[0];
|
||||
my $custom_word = $args[0];
|
||||
my $custom_channel = $args[1];
|
||||
my $custom_wordlist = $args[2];
|
||||
my $length = length $custom_word;
|
||||
@ -152,6 +160,7 @@ sub wordle($self, $context) {
|
||||
return 'Invalid wordlist; options are: ' . (join ', ', sort keys %wordlists);
|
||||
}
|
||||
|
||||
$custom_word =~ s/ß/ẞ/g; # avoid uppercasing to SS in German
|
||||
my $result = $self->make_wordle($custom_channel, $length, uc $custom_word, $wordlist);
|
||||
|
||||
if ($result !~ /Guess/) {
|
||||
@ -223,8 +232,8 @@ sub load_words($self, $length, $wordlist = 'default') {
|
||||
|
||||
while (my $line = <$fh>) {
|
||||
chomp $line;
|
||||
$line = unidecode $line;
|
||||
if (length $line == $length) {
|
||||
$line =~ s/ß/ẞ/g; # avoid uppercasing to SS in German
|
||||
$words{uc $line} = 1;
|
||||
}
|
||||
}
|
||||
@ -264,6 +273,14 @@ sub make_wordle($self, $channel, $length, $word = undef, $wordlist = 'default')
|
||||
$self->{$channel}->{letters}->{$letter} = 0;
|
||||
}
|
||||
|
||||
if (exists $accents{$wordlist}) {
|
||||
foreach my $letter (split //, $accents{$wordlist}) {
|
||||
$letter =~ s/ß/ẞ/g; # avoid uppercasing to SS in German
|
||||
$letter = uc $letter;
|
||||
$self->{$channel}->{letters}->{$letter} = 0;
|
||||
}
|
||||
}
|
||||
|
||||
$self->{$channel}->{guess} = $color{invalid};
|
||||
$self->{$channel}->{guess} .= ' ? ' x $self->{$channel}->{wordle}->@*;
|
||||
$self->{$channel}->{guess} .= $color{reset};
|
||||
@ -302,13 +319,15 @@ sub show_wordle($self, $channel, $with_letters = 0) {
|
||||
}
|
||||
|
||||
sub guess_wordle($self, $channel, $guess) {
|
||||
if (length $guess != $self->{$channel}->{wordle}->@*) {
|
||||
return "The length of your guess does not match length of current Wordle. Try again.";
|
||||
}
|
||||
|
||||
$guess = unidecode $guess;
|
||||
$guess =~ s/ß/ẞ/g; # avoid uppercasing to SS in German
|
||||
$guess = uc $guess;
|
||||
|
||||
if (length $guess != $self->{$channel}->{wordle}->@*) {
|
||||
my $guess_length = length $guess;
|
||||
my $wordle_length = $self->{$channel}->{wordle}->@*;
|
||||
return "Guess length ($guess_length) unequal to Wordle length ($wordle_length). Try again.";
|
||||
}
|
||||
|
||||
if (not exists $self->{$channel}->{words}->{$guess}) {
|
||||
return "I don't know that word. Try again."
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ use PBot::Imports;
|
||||
# These are set by the /misc/update_version script
|
||||
use constant {
|
||||
BUILD_NAME => "PBot",
|
||||
BUILD_REVISION => 4723,
|
||||
BUILD_REVISION => 4724,
|
||||
BUILD_DATE => "2024-03-17",
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user