forked from Purgatoria/meshtastic-bot-modules
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathweather.js
More file actions
118 lines (111 loc) · 7.51 KB
/
weather.js
File metadata and controls
118 lines (111 loc) · 7.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
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 },
];
async function WeatherDataRequest(city, latitude, longitude, utils) {
try {
const response = await axios.get(`https://api.open-meteo.com/v1/forecast?latitude=${latitude}&longitude=${longitude}¤t=temperature_2m,relative_humidity_2m,precipitation,pressure_msl,wind_speed_10m,wind_direction_10m&timezone=auto&forecast_days=1`);
const current = response.data.current;
const message = `${city.name} Hava Durumu\nSıcaklık: ${current.temperature_2m}°C\nNem: ${current.relative_humidity_2m}%\nYağış miktarı: ${current.precipitation}mm\nBasınç: ${current.pressure_msl}hPa\nRüzgar Hızı: ${current.wind_speed_10m}km/h\nRüzgar Yönü: ${current.wind_direction_10m}°`;
utils.publishMessage(4294967295, message);
utils.sendDiscord(message);
} catch (error) {
console.error("Weather API Error:", error.message);
}
}
module.exports = {
name: 'weather',
description: 'Provides weather information for Turkish cities',
run: async (message, utils) => {
const args = message.substring(utils.PREFIX.length).split(" ");
const command = args[0].toLowerCase();
if (command === 'wx') {
let plaka = args[1];
if (!plaka || isNaN(plaka)) return;
const city = cities.find(city => city.id === parseInt(plaka));
if (city) {
await WeatherDataRequest(city, city.latitude, city.longitude, utils);
}
}
}
};