-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathphrases.js
121 lines (97 loc) · 3.73 KB
/
phrases.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
117
118
119
120
121
var request = require('request')
var Q = require('q')
var textCase = require('./textcase')
var phrases = [
{
pattern: /как дела/i,
response: function() {
var deferred = Q.defer();
var s = 'Хорошо. '
request('http://api.openweathermap.org/data/2.5/weather?q=Rostov-na-donu,RU&units=metric', function (error, response, body) {
if (!error) {
data = JSON.parse(body);
s += 'В Ростове ' + textCase(data.main.temp, 'градус градуса градусов');
}
deferred.resolve(s);
});
return deferred.promise;
}
},
{
pattern: /что делать/i,
response: function() {
var today = new Date()
var wd = today.getDay();
var s = ''
if ([0,6].indexOf(wd) === -1) {
s = 'Работать. До пятницы осталось ' + textCase(4 - wd, 'день дня дней') + '.'
if (wd === 5) s += ' Cходить в бар вечером.'
} else {
s = 'Отдыхать.'
// с 8 др 23
// в 8 - 15 часов
alcoHours = 23 - Math.round(today.getHours() + today.getMinutes() / 60)
if (alcoHours > 0 && alcoHours < 16) {
s += ' Алкоголь будет продаваться еще ' + textCase(alcoHours, 'час часа часов') + '.'
}
}
return s;
}
},
// http://api-maps.yandex.ru/services/traffic-info/1.0/?format=json&lang=ru-RU%27
// 'http://static-maps.yandex.ru/1.x/?ll=39.71,47.22&spn=0.,0.1&l=map,trf'
{
pattern: /пробки/i,
response: function() {
var deferred = Q.defer();
var result = 'Карта с пробками Ростова http://vk.cc/2FCfYx'
request('http://api-maps.yandex.ru/services/traffic-info/1.0/?format=json&lang=ru-RU', function (error, response, body) {
if (!error) {
data = JSON.parse(body);
var n = -1
var items = data.GeoObjectCollection.features;
var item
for (var i = 0; i < items.length; i++) {
item = items[i]
if (item.properties.name == 'Ростов-на-Дону') {
n = item.properties.JamsMetaData.level
// console.log(item)
break
}
};
if (n > -1) {
result = 'Пробки сейчас -- ' + textCase(n, 'балл балла баллов') + '. ' + result
}
}
deferred.resolve(result);
});
return deferred.promise;
}
},
{
pattern: /(тест|test)/i,
response: function() { return 'жив ' + Date.now() }
},
// https://api.foursquare.com/v2/venues/trending?ll=40.7,-74&oauth_token=O3YLGEZ3BNXP4EWXDBRYDSGGYODBETRZUYVCG5A1G5ADMDWS&v=20140611
// http://www.4sqmap.com/data/venues/trending?ll=
{
pattern: /где все/i,
response: function(coords) {
var deferred = Q.defer();
coords || (coords = ['47.2313','39.7233'])
request('https://api.foursquare.com/v2/venues/trending?ll=' + coords.join(',') + '&oauth_token=O3YLGEZ3BNXP4EWXDBRYDSGGYODBETRZUYVCG5A1G5ADMDWS&v=20140611', function (error, response, body) {
var places = [];
if (!error) {
data = JSON.parse(body);
console.log(data)
data.response.venues.forEach(function(v) {
places.push(v.hereNow.count + ' -- ' + v.name.replace(/ \/ .*/,''))
})
}
deferred.resolve(places.length ? ('Cейчас самые популярные места по количеству чекинов:\n' + places.join(',\n')) : 'Непонятно где.');
})
return deferred.promise;
}
}
]
module.exports = phrases