-
Notifications
You must be signed in to change notification settings - Fork 0
/
bot.js
118 lines (96 loc) · 2.95 KB
/
bot.js
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
console.log('bot started');
var Twit = require('twit');
var weather = require('weather-js');
var outlook = require('./outlook.json');
var feelslike = require('./feelslike.json');
var T = new Twit({
consumer_key: '...',
consumer_secret: '...',
access_token: '...',
access_token_secret: '...',
});
var recife = 'Recife, PE';
setInterval(normal, 1000*60*60*3);
//setInterval(previsao, 1000*60*60*24);
normal();
//previsao();
function normal(){
procuratempo(recife, false);
}
function previsao(){
procuratempo(recife, true);
}
function procuratempo(cidade, isForecast){
weather.find({search: cidade, degreeType: 'C'}, function(err, result) {
if(err) console.log(err);
if(isForecast){
var s = tratarForecast(result);
}else{
var s = tratarCurrent(result);
}
tweet(s);
});
}
function tweet(text){
T.post('statuses/update', {status: text}, function(err, data, response) {
if(err){
console.log(err.message);
}else{
console.log("Funcionou");
}
});
}
function tratarCurrent(text){
var ou;
if(outlook[text[0].current.skytext]){
ou = outlook[text[0].current.skytext].translate + " " + outlook[text[0].current.skytext].emoji;
}else{
ou = text[0].current.skytext;
}
var temp = sensacao(parseInt(text[0].current.temperature), feelslike);
var sens = sensacao(parseInt(text[0].current.feelslike), feelslike);
var mensagem = "Clima em Recife:\nTemperatura: " + text[0].current.temperature
+"ºC " + temp +"\nSensação Térmica: " + text[0].current.feelslike
+"ºC " +sens +"\nAparência: " + ou
+ "\nUmidade do ar: " + text[0].current.humidity + "%";
return mensagem;
}
function sensacao(temp, feelslike){
if(temp < 20)
return feelslike["very cold"];
if(temp >= 20 && temp <= 25)
return feelslike["cold"];
if(temp >25 && temp <= 28)
return feelslike["ok"];
if(temp >28 && temp <= 31)
return feelslike["hot"];
if(temp > 31)
return feelslike["very hot"];
}
function tratarForecast(data){
var x = forecast(data);
var p ="0";
if(x.precip != ''){
p = x.precip;
}
var ou;
if(outlook[x.skytextday]){
ou = outlook[x.skytextday].translate + " " + outlook[x.skytextday].emoji;
}else{
ou = x.skytextday;
}
var msg = 'Previsão para hoje:\nMínima: ' + x.low +'ºC\n'+
'Máxima: '+x.high+'ºC\n'+
'Aparência: '+ ou+'\n'+
'Chuva: ' +p+ '%';
return msg;
}
function forecast(data){
var today = new Date();
var date = today.getFullYear()+'-0'+(today.getMonth()+1)+'-'+today.getDate();
for(i=0;i<Object.keys(data[0].forecast).length;i++){
if(data[0].forecast[i].date == date){
return data[0].forecast[i];
}
}
}