iobroker.telegram-menu 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -33,6 +33,14 @@ You can create different groups with separate menus, and then assign users to th
33
33
  Placeholder for the next version (at the beginning of the line):
34
34
  ### **WORK IN PROGRESS**
35
35
  -->
36
+ ### 0.4.2 (2023-07-30)
37
+
38
+ - menu switch ersetzt menu yes-no, on-off, it is possible to customize text and value with this menu
39
+
40
+ ### 0.4.1 (2023-07-30)
41
+
42
+ - Return text for submenus adjusted
43
+
36
44
  ### 0.4.0 (2023-07-28)
37
45
 
38
46
  - change output value for getState
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "telegram-menu",
4
- "version": "0.4.0",
4
+ "version": "0.4.2",
5
5
  "news": {
6
+ "0.4.2": {
7
+ "en": "menu switch ersetzt menu yes-no, on-off, it is possible to customize text and value with this menu",
8
+ "de": "menüschalter ersetzen ja-nein, on-off, es ist möglich, text und wert mit diesem menü anpassen",
9
+ "ru": "меню переключатель ersetzt меню yes-no, on-off, можно настроить текст и значение с этим меню",
10
+ "pt": "menu switch ersetzt menu sim-no, on-off, é possível personalizar texto e valor com este menu",
11
+ "nl": "menu wisselen van ersetzt menu ja-op-off, het is mogelijk om tekst en waarde te gebruiken met deze menukaart",
12
+ "fr": "menu switch ersetzt menu oui-non, off-off, il est possible de personnaliser le texte et la valeur avec ce menu",
13
+ "it": "menu switch ersetzt menu yes-no, on-off, è possibile personalizzare testo e valore con questo menu",
14
+ "es": "menu switch ersetzt menu yes-no, on-off, es posible personalizar texto y valor con este menú",
15
+ "pl": "menu przełącza ersetzt menu yes-no, on-off, jest możliwe do dostosowania tekstu i wartości z tymi menu",
16
+ "uk": "меню переключення ersetzt меню так-но, on-off, можна налаштувати текст та значення з цим меню",
17
+ "zh-cn": "男性转化的男性是双赢的,有可能使文本和价值与这一男人定制。"
18
+ },
19
+ "0.4.1": {
20
+ "en": "Return text for submenus adjusted",
21
+ "de": "Rückgabetext für submenus angepasst",
22
+ "ru": "Вернуться текст для подменю скорректирован",
23
+ "pt": "Texto de retorno para submenus ajustado",
24
+ "nl": "Een terugkeer sms voor submenus aangepast",
25
+ "fr": "Texte de retour pour les sous-menus ajustés",
26
+ "it": "Testo di ritorno per submenus regolato",
27
+ "es": "Texto de retorno para submenú ajustado",
28
+ "pl": "Powtórne teksty do podmenu poprawiły",
29
+ "uk": "Повернення тексту для підменю",
30
+ "zh-cn": "调整的分遣案文"
31
+ },
6
32
  "0.4.0": {
7
33
  "en": "change output value for getState\ncheckbox to disbale Text No Entry found in the settings #34\nsubmenu\n**changed!!!**, states are always set with ack false\nadapter does not restart when telegram restarts #35",
8
34
  "de": "ausgabewert ändern für getState\ncheckbox zum Ausbalieren Text Kein Eintrag gefunden in den Einstellungen #34\nunterpositionen\ngeändert! zustände werden immer mit ack false gesetzt\nadapter startet nicht neu, wenn telegramm neu gestartet #35",
@@ -67,32 +93,6 @@
67
93
  "pl": "Fix\nStyl\nTwierdzenie, że wartość została ustalona\nSecond User (ang.). Menutr",
68
94
  "uk": "Фіксатори\nСтиль\nПідтвердження вартості\nДругий Користувач Меню фіксована",
69
95
  "zh-cn": "固定\n评 注\n确认已确定价值\n第二个用户 男子固定"
70
- },
71
- "0.0.8": {
72
- "en": "Send Grafana Diagrams",
73
- "de": "Grafana-Diagramme senden",
74
- "ru": "Отправить Grafana Диаграммы",
75
- "pt": "Enviar Diagramas de Grafana",
76
- "nl": "Stuur Grafana Diagram",
77
- "fr": "Envoyer Diagrammes de Grafana",
78
- "it": "Invia diagrammi Grafana",
79
- "es": "Enviar diagramas de Grafana",
80
- "pl": "Senna Diagram",
81
- "uk": "Відправити граматику Grafana",
82
- "zh-cn": "Send Grafana Diagram"
83
- },
84
- "0.0.7": {
85
- "en": "Bugs fixed\nTranslate",
86
- "de": "Fehler behoben\nÜbersetzung",
87
- "ru": "Баги фиксированные\nПеревести",
88
- "pt": "Bugs corrigidos\nTraduzir",
89
- "nl": "Bugs gemaakt\nVertaling:",
90
- "fr": "Bugs corrigés\nTraduire",
91
- "it": "Bug fissi\nTraduttore",
92
- "es": "Errores fijos\nTraducir",
93
- "pl": "Bug\nTranslat",
94
- "uk": "Виправлені помилки\nПереклад",
95
- "zh-cn": "固定的黑体\n笔译"
96
96
  }
97
97
  },
98
98
  "titleLang": {
package/lib/js/subMenu.js CHANGED
@@ -1,6 +1,8 @@
1
1
  const setstate = require("./setstate").setstate;
2
2
  let step = 0;
3
3
  let device2Switch = "";
4
+ let returnIDToListenTo;
5
+ let splittedData = [];
4
6
  /**
5
7
  *
6
8
  * @param {*} _this
@@ -14,9 +16,41 @@ function subMenu(_this, text, groupData, userToSend) {
14
16
  const callbackData = splittetText[1];
15
17
  _this.log.debug("splittet text2 " + JSON.stringify(splittetText[2]));
16
18
  _this.log.debug("callback: " + JSON.stringify(callbackData));
19
+ _this.log.debug("callback: " + JSON.stringify(callbackData == "first"));
17
20
  _this.log.debug("devicetoswitch: " + JSON.stringify(device2Switch));
18
21
  _this.log.debug("text: " + JSON.stringify(text));
19
22
 
23
+ if (callbackData.includes("switch")) {
24
+ splittedData = callbackData.split("-");
25
+ device2Switch = splittetText[2];
26
+ const keyboard = {
27
+ inline_keyboard: [
28
+ [
29
+ {
30
+ text: splittedData[1].split(".")[0],
31
+ callback_data: "menu:first",
32
+ },
33
+ {
34
+ text: splittedData[2].split(".")[0],
35
+ callback_data: "menu:second",
36
+ },
37
+ ],
38
+ ],
39
+ };
40
+ return ["Wähle eine Option", JSON.stringify(keyboard), device2Switch];
41
+ } else if (callbackData.includes("first")) {
42
+ let val;
43
+ splittedData[1].split(".")[1] == "true" ? (val = true) : (val = splittedData[1].split(".")[1]);
44
+ _this.log.debug("val " + JSON.stringify(val));
45
+ returnIDToListenTo = setstate(_this, groupData[device2Switch], userToSend, val, true);
46
+ return [null, null, null, returnIDToListenTo];
47
+ } else if (callbackData.includes("second")) {
48
+ let val;
49
+ splittedData[2].split(".")[1] == "true" ? (val = true) : (val = splittedData[2].split(".")[1]);
50
+ returnIDToListenTo = setstate(_this, groupData[device2Switch], userToSend, val, true);
51
+ return [null, null, null, returnIDToListenTo];
52
+ }
53
+
20
54
  if (callbackData === "yes-no") {
21
55
  const keyboard = {
22
56
  inline_keyboard: [
@@ -34,9 +68,11 @@ function subMenu(_this, text, groupData, userToSend) {
34
68
  };
35
69
  return ["Wähle eine Option", JSON.stringify(keyboard), device2Switch];
36
70
  } else if (callbackData === "yes") {
37
- setstate(_this, groupData[device2Switch], userToSend, true);
71
+ returnIDToListenTo = setstate(_this, groupData[device2Switch], userToSend, true);
72
+ return [null, null, null, returnIDToListenTo];
38
73
  } else if (callbackData === "no") {
39
- setstate(_this, groupData[device2Switch], userToSend, false);
74
+ returnIDToListenTo = setstate(_this, groupData[device2Switch], userToSend, false);
75
+ return [null, null, null, returnIDToListenTo];
40
76
  } else if (callbackData === "on-off") {
41
77
  const keyboard = {
42
78
  inline_keyboard: [
@@ -55,9 +91,12 @@ function subMenu(_this, text, groupData, userToSend) {
55
91
  device2Switch = splittetText[2];
56
92
  return ["Wähle eine Option", JSON.stringify(keyboard), device2Switch];
57
93
  } else if (callbackData === "on") {
58
- setstate(_this, groupData[device2Switch], userToSend, true, true);
94
+ returnIDToListenTo = setstate(_this, groupData[device2Switch], userToSend, true, true);
95
+ return [null, null, null, returnIDToListenTo];
59
96
  } else if (callbackData === "off") {
60
- setstate(_this, groupData[device2Switch], userToSend, false, true);
97
+ returnIDToListenTo = setstate(_this, groupData[device2Switch], userToSend, false, true);
98
+ return [null, null, null, returnIDToListenTo];
99
+ //SECTION - Percent
61
100
  } else if (!text.includes("submenu") && callbackData.includes("percent")) {
62
101
  step = parseInt(callbackData.replace("percent", ""));
63
102
  let rowEntrys = 0;
@@ -75,8 +114,6 @@ function subMenu(_this, text, groupData, userToSend) {
75
114
  text: `0%`,
76
115
  callback_data: `submenu:percent${step}:${0}:`,
77
116
  });
78
- // _this.log.debug("menu " + JSON.stringify(menu));
79
- // _this.log.debug("keyboard " + JSON.stringify(keyboard.inline_keyboard));
80
117
  rowEntrys++;
81
118
  if (rowEntrys == 8) {
82
119
  // @ts-ignore
@@ -92,7 +129,9 @@ function subMenu(_this, text, groupData, userToSend) {
92
129
  return ["Welcher Wert soll gesetzt werden?", JSON.stringify(keyboard), device2Switch];
93
130
  } else if (text.includes(`submenu:percent${step}`)) {
94
131
  const value = parseInt(text.split(":")[2]);
95
- setstate(_this, groupData[device2Switch], userToSend, value, true);
132
+ returnIDToListenTo = setstate(_this, groupData[device2Switch], userToSend, value, true);
133
+ return [null, null, null, returnIDToListenTo];
134
+ //SECTION - Number
96
135
  } else if (!text.includes("submenu") && callbackData.includes("number")) {
97
136
  const splittedData = callbackData.replace("number", "").split("-");
98
137
  let rowEntrys = 0;
@@ -123,8 +162,8 @@ function subMenu(_this, text, groupData, userToSend) {
123
162
  return ["Welcher Wert soll gesetzt werden?", JSON.stringify(keyboard), device2Switch];
124
163
  } else if (text.includes(`submenu:${callbackData}`)) {
125
164
  const value = parseInt(text.split(":")[2]);
126
- setstate(_this, groupData[device2Switch], userToSend, value, true);
127
- _this.log.debug("cal " + JSON.stringify(callbackData));
165
+ returnIDToListenTo = setstate(_this, groupData[device2Switch], userToSend, value, true);
166
+ return [null, null, null, returnIDToListenTo];
128
167
  }
129
168
  }
130
169
  module.exports = {
package/main.js CHANGED
@@ -1,5 +1,9 @@
1
1
  "use strict";
2
2
 
3
+ let setStateIdsToListenTo;
4
+ function sendIdToOtherFile(Ids) {
5
+ setStateIdsToListenTo = Ids;
6
+ }
3
7
  /*
4
8
  * Created with @iobroker/create-adapter v2.3.0
5
9
  */
@@ -22,8 +26,7 @@ const sendToTelegramSubmenu = require("./lib/js/telegram").sendToTelegramSubmenu
22
26
 
23
27
  let timeouts = [];
24
28
  let timeoutKey = 0;
25
- let setStateIds;
26
- let setStateIdsToListenTo;
29
+ let subscribeForeignStateIds;
27
30
 
28
31
  // Load your modules here, e.g.:
29
32
  // const fs = require("fs");
@@ -103,10 +106,10 @@ class TelegramMenu extends utils.Adapter {
103
106
  this.log.debug("New Structure: " + JSON.stringify(menu.data[name]));
104
107
  const returnValue = generateActions(_this, action[name], menu.data[name]);
105
108
  menu.data[name] = returnValue?.obj;
106
- setStateIds = returnValue?.ids;
107
- if (setStateIds && setStateIds?.length > 0)
108
- _subscribeForeignStatesAsync(setStateIds, _this);
109
- this.log.debug("SetForeignStates: " + JSON.stringify(setStateIds));
109
+ subscribeForeignStateIds = returnValue?.ids;
110
+ if (subscribeForeignStateIds && subscribeForeignStateIds?.length > 0)
111
+ _subscribeForeignStatesAsync(subscribeForeignStateIds, _this);
112
+ this.log.debug("SetForeignStates: " + JSON.stringify(subscribeForeignStateIds));
110
113
  this.log.debug("Name " + JSON.stringify(name));
111
114
  this.log.debug("Array Buttons: " + JSON.stringify(value));
112
115
  this.log.debug("Gen. Actions: " + JSON.stringify(menu.data[name]));
@@ -278,6 +281,9 @@ class TelegramMenu extends utils.Adapter {
278
281
  }
279
282
  }
280
283
  });
284
+ } else {
285
+ this.log.debug("else " + JSON.stringify(id));
286
+ this.log.debug("else " + JSON.stringify(setStateIdsToListenTo));
281
287
  }
282
288
  }
283
289
 
@@ -287,11 +293,12 @@ class TelegramMenu extends utils.Adapter {
287
293
  if (!state.val) telegramAktiv = false;
288
294
  }
289
295
  } catch (e) {
290
- this.log.debug("Error " + JSON.stringify(e));
296
+ this.log.debug("Error1 " + JSON.stringify(e));
291
297
  }
292
298
  });
293
299
  }
294
300
  });
301
+
295
302
  /**
296
303
  *
297
304
  * @param {*} _this
@@ -301,6 +308,8 @@ class TelegramMenu extends utils.Adapter {
301
308
  */
302
309
  function callSubMenu(_this, part, groupData, userToSend) {
303
310
  const subMenuData = subMenu(_this, part, groupData, userToSend);
311
+ if (subMenuData && subMenuData[3]) setStateIdsToListenTo = subMenuData[3];
312
+
304
313
  _this.log.debug("SubMenuData " + JSON.stringify(subMenuData));
305
314
  if (subMenuData && subMenuData[0]) sendToTelegramSubmenu(_this, userToSend, subMenuData[0], subMenuData[1]);
306
315
  }
@@ -353,6 +362,7 @@ class TelegramMenu extends utils.Adapter {
353
362
  }
354
363
  }
355
364
 
365
+ module.exports = { sendIdToOtherFile };
356
366
  if (require.main !== module) {
357
367
  // Export the constructor in compact mode
358
368
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.telegram-menu",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "Easily create Telegram Menus",
5
5
  "author": {
6
6
  "name": "MiRo1310",