Всем привет. Написал простенький код для телеграм бота:
let weather = require('./modules/weather');
bot.on('message', (msg) => {
let command = msg.text.toString().toLowerCase();
if (command && command.indexOf('погода') !== -1) {
let arr = command.split(/\s/);
weather(msg, arr[1]);
return;
}
if (command && command === '/start') return;
bot.sendMessage(chatId, `Неверная команда`);
});
module.exports = (msg, resp) => {
let chatId = msg.chat.id;
let city = resp.toString().toLowerCase();
let url = `http://api.openweathermap.org/data/2.5/weather?
q=${city}&lang=ru&units=metric&appid=${key}`;
let icons = null;
console.log(url);
request(url, (error, response, body) => {
let data = JSON.parse(body);
if(data.cod === '404') return bot.sendMessage(chatId, 'Нет такого
города');
icons =
`http://openweathermap.org/img/w/${data.weather[0].icon}.png`;
bot.sendPhoto(chatId, icons);
bot.sendMessage(chatId, `В ${data.name} сейчас ${data.main.temp}
градусов цельсия, влажность воздуха ${data.main.humidity}%, скорость
ветра ${data.wind.speed} м/с.`);
});
};
один и тот же запрос из телеграма и браузера возвращает абсолютно разные вещи, хотя ссылки верные. Если точнее - запрашиваю Погоду Москвы, возвращает какой то финский городок. При том что я подставляю название города на кириллице. Подскажите пожалуйста
Вероятно api использует некую эвристику для вычисления правильного города в случае когда есть неоднозначность, возможно, используя ip адрес клиента.
Сами они рекомендуют запрашивать погоду по id города и предоставляют справочник: http://bulk.openweathermap.org/sample/
Либо можно уточнить запрос, добавив через запятую код страны по ISO 3166 (для России - ru)
api.openweathermap.org/data/2.5/weather?q=Moscow,ru
Виртуальный выделенный сервер (VDS) становится отличным выбором
Похоже что мое клиентское приложение действует только для одного аккаунтаКак сделать возможным использовать его для всех?
Добрый день уважаемые, подскажите, пожалуйста где я допускаю ошибку и почему мой простенький валидатор не работает
Сайт будет состоять из select\insert\update БД MySql и вывод в табличном виде с авторизацией по правам select\insert\update