forked from ioBroker/ioBroker.text2command
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsimpleAnswers.js
227 lines (205 loc) · 6.41 KB
/
simpleAnswers.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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
/* jshint -W097 */
/* jshint strict: false */
/* jslint node: true */
'use strict';
//noinspection JSUnresolvedVariable
const functionsGenitive = require(__dirname + '/functions').functionsGenitive;
//noinspection JSUnresolvedVariable
const roomsDative = require(__dirname + '/rooms').roomsDative;
function getRandomPhrase(arrOrText) {
if (typeof arrOrText === 'string') {
arrOrText = arrOrText.split('/');
}
if (typeof arrOrText === 'object') {
if (arrOrText.length > 1) {
let randomNumber = Math.floor(Math.random() * arrOrText.length);
if (randomNumber > arrOrText.length - 1) {
randomNumber = arrOrText.length - 1;
}
return arrOrText[randomNumber];
} else {
return arrOrText[0];
}
} else {
return arrOrText;
}
}
//noinspection JSUnusedLocalSymbols
function sayIDontKnow(lang, text, args, ack, cb) {
let toSay;
if (lang === 'ru') {
toSay = getRandomPhrase(["Извините, но ", "Прошу прощения, но ", ""]) +
getRandomPhrase(["Я не знаю", "Нет данных"]);
}
else if (lang === 'de') {
toSay = getRandomPhrase(["Entschuldigen sie. ", "Es tut mir leid. ", ""]) +
getRandomPhrase(["Ich weiss nicht", "Keine Daten vorhanden"]);
}
else if (lang === 'en') {
toSay = getRandomPhrase(["I am sorry, but ", "Excuse me. ", ""]) +
getRandomPhrase(["I don't know", "No data available"]);
}
if (cb) {
cb(toSay);
} else {
return toSay;
}
}
//noinspection JSUnusedLocalSymbols
function sayNoName(lang, text, args, ack, cb) {
let toSay;
if (lang === 'ru') {
toSay = 'Обращайся ко мне как хочешь. У меня нет имени';
}
else if (lang === 'de') {
toSay = 'Nenne mich wie du willst. Ich habe keinen Namen.';
}
else if (lang === 'en') {
toSay = "Call me as you wish. I don't have a name";
}
if (cb) {
cb(toSay);
} else {
return toSay;
}
}
//noinspection JSUnusedLocalSymbols
function sayIDontUnderstand(lang, text, args, ack, cb) {
let toSay;
if (lang === 'ru') {
if (!text) {
toSay = 'Я не поняла комманду';
}
else {
toSay = 'Я поняла только "' + text + '"';
}
}
else if (lang === 'de') {
if (!text) {
toSay = 'Ich habe nichts verstanden';
}
else{
toSay = 'Ich verstehe "' + text + '" nicht';
}
}
else if (lang === 'en') {
if (!text) {
toSay = "I could not understand you";
}
else{
toSay = "I don't understand. I could only hear \"" + text + "\"";
}
}
cb(toSay);
}
//noinspection JSUnusedLocalSymbols
function sayNoSuchRoom(lang, text, args, ack, cb) {
let toSay;
if (lang === 'en') {
toSay = getRandomPhrase(['Room not present', 'Room not found', 'You don\'t have such a room']);
} else
if (lang === 'de') {
toSay = getRandomPhrase(['Raum wurde nicht gefunden', 'Es gibt kein Zimmer mit dem Namen', 'Man muss sagen in welchem Raum oder überall']);
} else
if (lang === 'ru') {
toSay = getRandomPhrase(['Комната не найдена', 'Надо сказать в какой комнате или сказать везде']);
} else {
toSay = '';
}
if (cb) {
cb(toSay);
} else {
return toSay;
}
}
//noinspection JSUnusedLocalSymbols
function sayNothingToDo(lang, text, args, ack, cb) {
let toSay;
if (lang === 'en') {
toSay = getRandomPhrase(['I don\'t know, what to do', 'No action defined']);
} else
if (lang === 'de') {
toSay = getRandomPhrase(['Ich weiß nicht, was ich machen soll', 'Aktion ist nicht definiert']);
} else
if (lang === 'ru') {
toSay = getRandomPhrase(['Непонятно, что делать', 'Не задано действие']);
} else {
toSay = "";
}
if (cb) {
cb(toSay);
} else {
return toSay;
}
}
//noinspection JSUnusedLocalSymbols
function sayNoSuchFunction(lang, text, args, ack, cb) {
let toSay;
if (lang === 'en') {
toSay = getRandomPhrase('Function not present/Function not found/You don\'t have such a device');
} else
if (lang === 'de') {
toSay = getRandomPhrase('Die Funktion wurde nicht gefunden/Es gibt keine Funktion mit dem Namen/Man muss sagen womit man was machen will');
} else
if (lang === 'ru') {
toSay = getRandomPhrase('Устройство не найдено/Надо сказать с чем произвести действие');
} else {
toSay = "";
}
if (cb) {
cb(toSay);
} else {
return toSay;
}
}
//noinspection JSUnusedLocalSymbols
function sayNoFunctionInThisRoom(lang, text, args, ack, cb) {
let sRoom = args[0];
let sFunction = args[1];
let toSay;
if (lang === 'en') {
toSay = 'There is no ' + functionsGenitive[sFunction][lang] + ' ' + roomsDative[sRoom][lang];
} else if (lang === 'de') {
toSay = 'Es gibt kein' + functionsGenitive[sFunction][lang] + ' ' + roomsDative[sRoom][lang];
} else if (lang === 'ru') {
toSay = roomsDative[sRoom][lang] + ' нет ' + functionsGenitive[sFunction][lang];
} else {
toSay = '';
}
if (cb) {
cb(toSay);
} else {
return toSay;
}
}
//noinspection JSUnusedLocalSymbols
function sayError(lang, text, args, ack, cb) {
let toSay;
if (lang === 'en') {
toSay = getRandomPhrase('Error. See logs.');
} else
if (lang === 'de') {
toSay = getRandomPhrase('Fehler. Sehe Logs.');
} else
if (lang === 'ru') {
toSay = getRandomPhrase('Ошибка. Смотрите логи.');
} else {
toSay = '';
}
if (cb) {
cb(toSay);
} else {
return toSay;
}
}
module.exports = {
getRandomPhrase: getRandomPhrase,
sayIDontKnow: sayIDontKnow,
sayNoName: sayNoName,
sayIDontUnderstand: sayIDontUnderstand,
sayNoSuchRoom: sayNoSuchRoom,
sayNoSuchFunction: sayNoSuchFunction,
sayNothingToDo: sayNothingToDo,
sayError: sayError,
sayNoFunctionInThisRoom: sayNoFunctionInThisRoom
};