diff --git a/data/config_sample.json b/data/config_sample.json index 2911d88..4568560 100644 --- a/data/config_sample.json +++ b/data/config_sample.json @@ -26,6 +26,8 @@ "forwards_max" : 5, "openweathermap" : { + # (For shitty political reasons) 0 - use coordinates instead of coutry code, 1 - use country codes + "country" : 0, "appid" : "get_it_on_openweathermap.org" }, diff --git a/lib/WebApp/Client.pm b/lib/WebApp/Client.pm index d30b6ec..fbab1b4 100644 --- a/lib/WebApp/Client.pm +++ b/lib/WebApp/Client.pm @@ -585,46 +585,96 @@ sub Weather { if ($w) { if ($w->{temperature_min} == $w->{temperature_max}) { - $reply = sprintf ( - "Погода в городе %s, %s:\n%s, ветер %s %s м/c, температура %s°C, ощущается как %s°C, относительная влажность %s%%, давление %s мм.рт.ст", - $city, - $w->{country}, - ucfirst $w->{description}, - $w->{wind_direction}, - $w->{wind_speed}, - $w->{temperature_min}, - $w->{temperature_feelslike}, - $w->{humidity}, - $w->{pressure}, - ); + if ($c->{openweathermap}->{country}) { + $reply = sprintf ( + "Погода в городе %s, %s:\n%s, ветер %s %s м/c, температура %s°C, ощущается как %s°C, относительная влажность %s%%, давление %s мм.рт.ст", + $city, + $w->{country}, + ucfirst $w->{description}, + $w->{wind_direction}, + $w->{wind_speed}, + $w->{temperature_min}, + $w->{temperature_feelslike}, + $w->{humidity}, + $w->{pressure}, + ); + } else { + $reply = sprintf ( + "Погода в городе %s, (ш:%s, д:%s):\n%s, ветер %s %s м/c, температура %s°C, ощущается как %s°C, относительная влажность %s%%, давление %s мм.рт.ст", + $city, + $g->{lat}, + $g->{lon}, + ucfirst $w->{description}, + $w->{wind_direction}, + $w->{wind_speed}, + $w->{temperature_min}, + $w->{temperature_feelslike}, + $w->{humidity}, + $w->{pressure}, + ); + } } elsif ($w->{temperature_min} < 0 && $w->{temperature_max} <= 0) { - $reply = sprintf ( - "Погода в городе %s, %s:\n%s, ветер %s %s м/c, температура от %s до %s°C, ощущается как %s°C, относительная влажность %s%%, давление %s мм.рт.ст", - $w->{name}, - $w->{country}, - ucfirst $w->{description}, - $w->{wind_direction}, - $w->{wind_speed}, - $w->{temperature_max}, - $w->{temperature_min}, - $w->{temperature_feelslike}, - $w->{humidity}, - $w->{pressure}, - ); + if ($c->{openweathermap}->{country}) { + $reply = sprintf ( + "Погода в городе %s, %s:\n%s, ветер %s %s м/c, температура от %s до %s°C, ощущается как %s°C, относительная влажность %s%%, давление %s мм.рт.ст", + $w->{name}, + $w->{country}, + ucfirst $w->{description}, + $w->{wind_direction}, + $w->{wind_speed}, + $w->{temperature_max}, + $w->{temperature_min}, + $w->{temperature_feelslike}, + $w->{humidity}, + $w->{pressure}, + ); + } else { + $reply = sprintf ( + "Погода в городе %s, (ш:%s, д:%s):\n%s, ветер %s %s м/c, температура от %s до %s°C, ощущается как %s°C, относительная влажность %s%%, давление %s мм.рт.ст", + $w->{name}, + $g->{lat}, + $g->{lon}, + ucfirst $w->{description}, + $w->{wind_direction}, + $w->{wind_speed}, + $w->{temperature_max}, + $w->{temperature_min}, + $w->{temperature_feelslike}, + $w->{humidity}, + $w->{pressure}, + ); + } } else { - $reply = sprintf ( - "Погода в городе %s, %s:\n%s, ветер %s %s м/c, температура от %s до %s°C, ощущается как %s°C, относительная влажность %s%%, давление %s мм.рт.ст", - $w->{name}, - $w->{country}, - ucfirst $w->{description}, - $w->{wind_direction}, - $w->{wind_speed}, - $w->{temperature_min}, - $w->{temperature_max}, - $w->{temperature_feelslike}, - $w->{humidity}, - $w->{pressure}, - ); + if ($c->{openweathermap}->{country}) { + $reply = sprintf ( + "Погода в городе %s, %s:\n%s, ветер %s %s м/c, температура от %s до %s°C, ощущается как %s°C, относительная влажность %s%%, давление %s мм.рт.ст", + $w->{name}, + $w->{country}, + ucfirst $w->{description}, + $w->{wind_direction}, + $w->{wind_speed}, + $w->{temperature_min}, + $w->{temperature_max}, + $w->{temperature_feelslike}, + $w->{humidity}, + $w->{pressure}, + ); + } else { + $reply = sprintf ( + "Погода в городе %s, (ш:%s, д:%s):\n%s, ветер %s %s м/c, температура от %s до %s°C, ощущается как %s°C, относительная влажность %s%%, давление %s мм.рт.ст", + $w->{name}, + $g->{lat}, + $g->{lon}, + ucfirst $w->{description}, + $w->{wind_direction}, + $w->{wind_speed}, + $w->{temperature_min}, + $w->{temperature_max}, + $w->{temperature_feelslike}, + $w->{humidity}, + $w->{pressure}, + ); + } } } else { $reply = "Я не знаю, какая погода в $city";