Merge pull request #115 from Olaroll/weather-pattern-fix
Fix weather pattern matching regression
This commit is contained in:
@@ -105,90 +105,48 @@ function getCurrentTime() {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Patterns for specific weather conditions (order matters - combined effects first)
|
||||
// Grouped by languages for easy editing
|
||||
const WEATHER_PATTERNS_BY_LANGUAGE = {
|
||||
en: [
|
||||
{ id: "blizzard", patterns: [ "blizzard" ] }, // Snow + Wind
|
||||
{ id: "storm", patterns: [ "storm", "thunder", "lightning" ] }, // Rain + Lightning
|
||||
{ id: "wind", patterns: [ "wind", "breeze", "gust", "gale" ] },
|
||||
{ id: "snow", patterns: [ "snow", "flurries" ] },
|
||||
{ id: "rain", patterns: [ "rain", "drizzle", "shower" ] },
|
||||
{ id: "mist", patterns: [ "mist", "fog", "haze" ] },
|
||||
{ id: "sunny", patterns: [ "sunny", "clear", "bright" ] },
|
||||
{ id: "none", patterns: [ "cloud", "overcast", "indoor", "inside" ] },
|
||||
],
|
||||
ru: [
|
||||
{ id: "blizzard", patterns: [ "метель" ] },
|
||||
{ id: "storm", patterns: [ "гроза", "буря", "шторм" ] },
|
||||
{ id: "wind", patterns: [ "ветер", "ветрено", "ветерок", "бриз", "легкий бриз", "слегка ветрено", "легкий ветер", "шквал,буря" ] },
|
||||
{ id: "snow", patterns: [ "снег", "снегопад" ] },
|
||||
{ id: "rain", patterns: [ "дождь", "морось", "ливень" ] },
|
||||
{ id: "mist", patterns: [ "мгла", "туман", "туманно" ] },
|
||||
{ id: "sunny", patterns: [ "солнечно", "ясно", "ярко", "ясное утро", "ясный день" ] },
|
||||
{ id: "none", patterns: [ "облачно", "пасмурно", "в помещении", "внутри" ] },
|
||||
],
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse weather text to determine effect type
|
||||
*/
|
||||
function parseWeatherType(weatherText) {
|
||||
if (!weatherText) return 'none';
|
||||
if (!weatherText) return "none";
|
||||
|
||||
const text = weatherText.toLowerCase();
|
||||
|
||||
const weather_en = new Map([
|
||||
["blizzard", "blizzard"],
|
||||
["storm", "storm,thunder,lightning"],
|
||||
["wind", "wind,breeze,gust,gale"],
|
||||
["snow", "snow,flurries"],
|
||||
["rain", "rain,drizzle,shower"],
|
||||
["mist", "mist,fog,haze"],
|
||||
["sunny", "sunny,clear,bright"],
|
||||
["none", "cloud,overcast,indoor,inside"],
|
||||
]);
|
||||
for (const language of Object.values(WEATHER_PATTERNS_BY_LANGUAGE)) {
|
||||
for (const { id, patterns } of language) {
|
||||
if (patterns.some(p => text.includes(p))) {
|
||||
return id;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const weather_ru = new Map([
|
||||
["blizzard", "метель"],
|
||||
["storm", "гроза,буря,шторм"],
|
||||
[
|
||||
"wind",
|
||||
"ветер,ветрено,ветерок,бриз,легкий бриз,слегка ветрено,легкий ветер,шквал,буря",
|
||||
],
|
||||
["snow", "снег,снегопад"],
|
||||
["rain", "дождь,морось,ливень"],
|
||||
["mist", "мгла,туман,туманно"],
|
||||
["sunny", "солнечно,ясно,ярко,ясное утро,ясный день"],
|
||||
["none", "облачно,пасмурно,в помещении,внутри"],
|
||||
]);
|
||||
|
||||
// Check for specific weather conditions (order matters - check combined effects first)
|
||||
if (
|
||||
weather_en.get("blizzard").includes(text) ||
|
||||
weather_ru.get("blizzard").includes(text)
|
||||
) {
|
||||
return "blizzard"; // Snow + Wind
|
||||
}
|
||||
if (
|
||||
weather_en.get("storm").includes(text) ||
|
||||
weather_ru.get("storm").includes(text)
|
||||
) {
|
||||
return "storm"; // Rain + Lightning
|
||||
}
|
||||
if (
|
||||
weather_en.get("wind").includes(text) ||
|
||||
weather_ru.get("wind").includes(text)
|
||||
) {
|
||||
return "wind";
|
||||
}
|
||||
if (
|
||||
weather_en.get("snow").includes(text) ||
|
||||
weather_ru.get("snow").includes(text)
|
||||
) {
|
||||
return "snow";
|
||||
}
|
||||
if (
|
||||
weather_en.get("rain").includes(text) ||
|
||||
weather_ru.get("rain").includes(text)
|
||||
) {
|
||||
return "rain";
|
||||
}
|
||||
if (
|
||||
weather_en.get("mist").includes(text) ||
|
||||
weather_ru.get("mist").includes(text)
|
||||
) {
|
||||
return "mist";
|
||||
}
|
||||
if (
|
||||
weather_en.get("sunny").includes(text) ||
|
||||
weather_ru.get("sunny").includes(text)
|
||||
) {
|
||||
return "sunny";
|
||||
}
|
||||
if (
|
||||
weather_en.get("none").includes(text) ||
|
||||
weather_ru.get("none").includes(text)
|
||||
) {
|
||||
return "none";
|
||||
}
|
||||
|
||||
return "none";
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user