Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 147 additions & 0 deletions airquality.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
const axios = require('axios');

const cities = [
{ id: 1, name: "Adana", latitude: 36.98542, longitude: 35.32502 },
{ id: 2, name: "Adıyaman", latitude: 37.762990, longitude: 38.277298 },
{ id: 3, name: "Afyonkarahisar", latitude: 38.756217, longitude: 30.537846 },
{ id: 4, name: "Ağrı", latitude: 39.718993, longitude: 43.047663 },
{ id: 5, name: "Amasya", latitude: 40.656314, longitude: 35.837068 },
{ id: 6, name: "Ankara", latitude: 39.942928, longitude: 32.860481 },
{ id: 7, name: "Antalya", latitude: 36.896126, longitude: 30.713081 },
{ id: 8, name: "Artvin", latitude: 41.181310, longitude: 41.820537 },
{ id: 9, name: "Aydın", latitude: 37.838044, longitude: 27.845571 },
{ id: 10, name: "Balıkesir", latitude: 39.644878, longitude: 27.885361 },
{ id: 11, name: "Bilecik", latitude: 40.142960, longitude: 29.979159 },
{ id: 12, name: "Bingöl", latitude: 38.88472, longitude: 40.496391 },
{ id: 13, name: "Bitlis", latitude: 38.400664, longitude: 42.108971 },
{ id: 14, name: "Bolu", latitude: 40.732006, longitude: 31.607052 },
{ id: 15, name: "Burdur", latitude: 37.718293, longitude: 30.282248 },
{ id: 16, name: "Bursa", latitude: 40.182816, longitude: 29.066148 },
{ id: 17, name: "Çanakkale", latitude: 40.146777, longitude: 26.408220 },
{ id: 18, name: "Çankırı", latitude: 40.600190, longitude: 33.616304 },
{ id: 19, name: "Çorum", latitude: 40.549853, longitude: 34.953694 },
{ id: 20, name: "Denizli", latitude: 37.783026, longitude: 29.096246 },
{ id: 21, name: "Diyarbakır", latitude: 37.9137, longitude: 40.224899 },
{ id: 22, name: "Edirne", latitude: 41.675907, longitude: 26.553608 },
{ id: 23, name: "Elazığ", latitude: 38.6763, longitude: 39.221802 },
{ id: 24, name: "Erzincan", latitude: 39.75, longitude: 39.5 },
{ id: 25, name: "Erzurum", latitude: 39.905994, longitude: 41.273784 },
{ id: 26, name: "Eskişehir", latitude: 39.766724, longitude: 30.525608 },
{ id: 27, name: "Gaziantep", latitude: 37.062931, longitude: 37.378159 },
{ id: 28, name: "Giresun", latitude: 40.917921, longitude: 38.389876 },
{ id: 29, name: "Gümüşhane", latitude: 40.458673, longitude: 39.478961 },
{ id: 30, name: "Hakkari", latitude: 37.578120, longitude: 43.733805 },
{ id: 31, name: "Hatay", latitude: 36.202621, longitude: 36.160045 },
{ id: 32, name: "Isparta", latitude: 37.762627, longitude: 30.553612 },
{ id: 33, name: "Mersin", latitude: 36.810307, longitude: 34.620414 },
{ id: 34, name: "İstanbul", latitude: 41.046419, longitude: 29.033115 },
{ id: 35, name: "İzmir", latitude: 38.423652, longitude: 27.142797 },
{ id: 36, name: "Kars", latitude: 40.601469, longitude: 43.097496 },
{ id: 37, name: "Kastamonu", latitude: 41.378133, longitude: 33.776539 },
{ id: 38, name: "Kayseri", latitude: 38.722100, longitude: 35.489122 },
{ id: 39, name: "Kırklareli", latitude: 41.735547, longitude: 27.224502 },
{ id: 40, name: "Kırşehir", latitude: 39.146209, longitude: 34.160577 },
{ id: 41, name: "Kocaeli", latitude: 40.765600, longitude: 29.940659 },
{ id: 42, name: "Konya", latitude: 37.872817, longitude: 32.491991 },
{ id: 43, name: "Kütahya", latitude: 39.419993, longitude: 29.985721 },
{ id: 44, name: "Malatya", latitude: 38.355390, longitude: 38.333476 },
{ id: 45, name: "Manisa", latitude: 38.614027, longitude: 27.429533 },
{ id: 46, name: "Kahramanmaraş", latitude: 37.582047, longitude: 36.926934 },
{ id: 47, name: "Mardin", latitude: 37.313051, longitude: 40.732555 },
{ id: 48, name: "Muğla", latitude: 37.215266, longitude: 28.363718 },
{ id: 49, name: "Muş", latitude: 38.732415, longitude: 41.489878 },
{ id: 50, name: "Nevşehir", latitude: 38.623861, longitude: 34.712756 },
{ id: 51, name: "Niğde", latitude: 37.969110, longitude: 34.678619 },
{ id: 52, name: "Ordu", latitude: 40.985592, longitude: 37.879123 },
{ id: 53, name: "Rize", latitude: 41.025113, longitude: 40.516397 },
{ id: 54, name: "Sakarya", latitude: 40.773626, longitude: 30.403235 },
{ id: 55, name: "Samsun", latitude: 41.28157, longitude: 36.33812 },
{ id: 56, name: "Siirt", latitude: 37.927462, longitude: 41.942270 },
{ id: 57, name: "Sinop", latitude: 42.026596, longitude: 35.151245 },
{ id: 58, name: "Sivas", latitude: 39.750528, longitude: 37.015028 },
{ id: 59, name: "Tekirdağ", latitude: 40.978127, longitude: 27.511091 },
{ id: 60, name: "Tokat", latitude: 40.323397, longitude: 36.552149 },
{ id: 61, name: "Trabzon", latitude: 41.001289, longitude: 39.716549 },
{ id: 62, name: "Tunceli", latitude: 39.106339, longitude: 39.549694 },
{ id: 63, name: "Şanlıurfa", latitude: 37.158216, longitude: 38.796905 },
{ id: 64, name: "Uşak", latitude: 38.680692, longitude: 29.414491 },
{ id: 65, name: "Van", latitude: 38.495711, longitude: 43.382035 },
{ id: 66, name: "Yozgat", latitude: 39.819880, longitude: 34.807030 },
{ id: 67, name: "Zonguldak", latitude: 41.456437, longitude: 31.798535 },
{ id: 68, name: "Aksaray", latitude: 38.36869, longitude: 34.03698 },
{ id: 69, name: "Bayburt", latitude: 40.258763, longitude: 40.226103 },
{ id: 70, name: "Karaman", latitude: 37.181008, longitude: 33.221007 },
{ id: 71, name: "Kırıkkale", latitude: 39.846821, longitude: 33.515251 },
{ id: 72, name: "Batman", latitude: 37.888176, longitude: 41.131005 },
{ id: 73, name: "Şırnak", latitude: 37.513690, longitude: 42.457748 },
{ id: 74, name: "Bartın", latitude: 41.634673, longitude: 32.336074 },
{ id: 75, name: "Ardahan", latitude: 41.110480, longitude: 42.703964 },
{ id: 76, name: "Iğdır", latitude: 39.919672, longitude: 44.042573 },
{ id: 77, name: "Yalova", latitude: 40.655844, longitude: 29.269269 },
{ id: 78, name: "Karabük", latitude: 41.200000, longitude: 32.627676 },
{ id: 79, name: "Kilis", latitude: 36.715556, longitude: 37.115000 },
{ id: 80, name: "Osmaniye", latitude: 37.072991, longitude: 36.256844 },
{ id: 81, name: "Düzce", latitude: 40.843062, longitude: 31.159222 },
];

function getAqiLabel(aqi) {
if (aqi <= 50) return 'İyi';
if (aqi <= 100) return 'Orta';
if (aqi <= 150) return 'Hassas';
if (aqi <= 200) return 'Sağlıksız';
if (aqi <= 300) return 'Çok Sağlıksız';
return 'Tehlikeli';
}

function formatAqiMessage(city, data) {
const aqi = data.us_aqi;
const label = getAqiLabel(aqi);
const pm25 = parseFloat(data.pm2_5.toFixed(1));
const pm10 = parseFloat(data.pm10.toFixed(1));
const no2 = parseFloat(data.nitrogen_dioxide.toFixed(1));
const o3 = parseFloat(data.ozone.toFixed(1));
const co = Math.round(data.carbon_monoxide);
return `${city.name} AQI:${aqi} ${label}\nPM2.5:${pm25} PM10:${pm10} NO2:${no2} O3:${o3} CO:${co}`;
}

async function fetchAirQuality(city, utils) {
try {
const response = await axios.get(
`https://air-quality-api.open-meteo.com/v1/air-quality` +
`?latitude=${city.latitude}&longitude=${city.longitude}` +
`&current=us_aqi,pm2_5,pm10,nitrogen_dioxide,ozone,carbon_monoxide`
);
const data = response.data.current;
const message = formatAqiMessage(city, data);
utils.publishMessage(4294967295, message);
utils.sendDiscord(message);
} catch (error) {
console.error('AirQuality API Error:', error.message);
utils.publishMessage(4294967295, 'Hava kalitesi verisi alınamadı.');
}
}

module.exports = {
name: 'airquality',
description: 'Hava kalitesi sorgulama — /air [şehir_id]',
run: async (message, utils) => {
const args = message.substring(utils.PREFIX.length).split(' ');
const command = args[0].toLowerCase();

if (command === 'air') {
const plaka = args[1];
if (!plaka || isNaN(plaka)) {
utils.publishMessage(4294967295, 'Geçersiz şehir ID. /air [1-81]');
return;
}
const city = cities.find(c => c.id === parseInt(plaka));
if (!city) {
utils.publishMessage(4294967295, 'Geçersiz şehir ID. /air [1-81]');
return;
}
await fetchAirQuality(city, utils);
}
},
getAqiLabel,
formatAqiMessage,
};