iobroker.telegram-menu 2.3.0 → 2.4.0
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 +12 -0
- package/build/app/action.js +10 -65
- package/build/app/action.js.map +2 -2
- package/build/app/backMenu.js +1 -1
- package/build/app/backMenu.js.map +2 -2
- package/build/app/dynamicSwitchMenu.js +1 -1
- package/build/app/dynamicSwitchMenu.js.map +2 -2
- package/build/app/getstate.js +9 -11
- package/build/app/getstate.js.map +2 -2
- package/build/app/httpRequest.js +2 -2
- package/build/app/httpRequest.js.map +2 -2
- package/build/app/idBySelector.js +103 -0
- package/build/app/idBySelector.js.map +7 -0
- package/build/app/jsonTable.js +3 -3
- package/build/app/jsonTable.js.map +2 -2
- package/build/app/messageIds.js +7 -1
- package/build/app/messageIds.js.map +2 -2
- package/build/app/processData.js +7 -7
- package/build/app/processData.js.map +2 -2
- package/build/app/sendNav.js +1 -1
- package/build/app/sendNav.js.map +2 -2
- package/build/app/sendpic.js +4 -5
- package/build/app/sendpic.js.map +2 -2
- package/build/app/setstate.js +9 -9
- package/build/app/setstate.js.map +3 -3
- package/build/app/shoppingList.js +3 -3
- package/build/app/shoppingList.js.map +2 -2
- package/build/app/subMenu.js +21 -32
- package/build/app/subMenu.js.map +2 -2
- package/build/app/telegram.js +14 -10
- package/build/app/telegram.js.map +2 -2
- package/build/lib/appUtils.js +6 -17
- package/build/lib/appUtils.js.map +2 -2
- package/build/lib/exchangeValue.js +81 -0
- package/build/lib/exchangeValue.js.map +7 -0
- package/build/lib/string.js +1 -23
- package/build/lib/string.js.map +2 -2
- package/build/lib/utilities.js +14 -13
- package/build/lib/utilities.js.map +2 -2
- package/build/main.js +11 -25
- package/build/main.js.map +3 -3
- package/build/src/lib/appUtils.js +3 -3
- package/build/src/lib/appUtils.js.map +1 -1
- package/build/src/lib/utilities.js +1 -1
- package/build/src/lib/utilities.js.map +1 -1
- package/build/test/test/appUtils.test.js +12 -0
- package/build/test/test/appUtils.test.js.map +1 -1
- package/build/test/test/object.test.js +12 -0
- package/build/test/test/object.test.js.map +1 -1
- package/build/test/test/string.test.js +30 -6
- package/build/test/test/string.test.js.map +1 -1
- package/build/test/test/time.test.js +183 -198
- package/build/test/test/time.test.js.map +1 -1
- package/build/types/types.js.map +1 -1
- package/io-package.json +27 -27
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -35,6 +35,18 @@ You can create different groups with separate menus, and then assign users to th
|
|
|
35
35
|
Placeholder for the next version (at the beginning of the line):
|
|
36
36
|
### **WORK IN PROGRESS**
|
|
37
37
|
-->
|
|
38
|
+
### 2.4.0 (2025-05-24)
|
|
39
|
+
|
|
40
|
+
- FIX: Error returnText is empty
|
|
41
|
+
- FEAT: Extension for get by function
|
|
42
|
+
- FIX: Errors reported by sentry
|
|
43
|
+
|
|
44
|
+
### 2.3.1 (2025-05-20)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
- FIX: #309 SetState only sets false
|
|
48
|
+
- FIX: #311 Delete does not navigate
|
|
49
|
+
|
|
38
50
|
### 2.3.0 (2025-05-12)
|
|
39
51
|
|
|
40
52
|
- FIX: #303 GetState output in incorrect order
|
package/build/app/action.js
CHANGED
|
@@ -22,8 +22,7 @@ __export(action_exports, {
|
|
|
22
22
|
bindingFunc: () => bindingFunc,
|
|
23
23
|
checkEvent: () => checkEvent,
|
|
24
24
|
generateActions: () => generateActions,
|
|
25
|
-
getUserToSendFromUserListWithChatID: () => getUserToSendFromUserListWithChatID
|
|
26
|
-
idBySelector: () => idBySelector
|
|
25
|
+
getUserToSendFromUserListWithChatID: () => getUserToSendFromUserListWithChatID
|
|
27
26
|
});
|
|
28
27
|
module.exports = __toCommonJS(action_exports);
|
|
29
28
|
var import_telegram = require("./telegram");
|
|
@@ -73,62 +72,6 @@ const bindingFunc = async (text, userToSend, telegramParams, parse_mode) => {
|
|
|
73
72
|
(0, import_logging.errorLogger)("Error Binding function: ", e, import_main.adapter);
|
|
74
73
|
}
|
|
75
74
|
};
|
|
76
|
-
const idBySelector = async ({
|
|
77
|
-
selector,
|
|
78
|
-
text,
|
|
79
|
-
userToSend,
|
|
80
|
-
newline,
|
|
81
|
-
telegramParams
|
|
82
|
-
}) => {
|
|
83
|
-
let text2Send = "";
|
|
84
|
-
try {
|
|
85
|
-
const functions = selector.replace(import_config.config.functionSelektor, "");
|
|
86
|
-
let enums = [];
|
|
87
|
-
const result = await import_main.adapter.getEnumsAsync();
|
|
88
|
-
if (!(result == null ? void 0 : result["enum.functions"][`enum.functions.${functions}`])) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
enums = result["enum.functions"][`enum.functions.${functions}`].common.members;
|
|
92
|
-
if (!enums) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
const promises = enums.map(async (id) => {
|
|
96
|
-
const value = await import_main.adapter.getForeignStateAsync(id);
|
|
97
|
-
if ((0, import_utils.isDefined)(value == null ? void 0 : value.val)) {
|
|
98
|
-
let newText = text;
|
|
99
|
-
let res;
|
|
100
|
-
if (text.includes("{common.name}")) {
|
|
101
|
-
res = await import_main.adapter.getForeignObjectAsync(id);
|
|
102
|
-
import_main.adapter.log.debug(`Name ${(0, import_string.jsonString)(res == null ? void 0 : res.common.name)}`);
|
|
103
|
-
if (res && typeof res.common.name === "string") {
|
|
104
|
-
newText = newText.replace("{common.name}", res.common.name);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
if (text.includes("&&")) {
|
|
108
|
-
text2Send += newText.replace("&&", String(value.val));
|
|
109
|
-
} else if (text.includes("&&")) {
|
|
110
|
-
text2Send += newText.replace("&&", String(value.val));
|
|
111
|
-
} else {
|
|
112
|
-
text2Send += newText;
|
|
113
|
-
text2Send += ` ${value.val}`;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
text2Send += (0, import_string.getNewline)(newline);
|
|
117
|
-
import_main.adapter.log.debug(`text2send ${JSON.stringify(text2Send)}`);
|
|
118
|
-
});
|
|
119
|
-
Promise.all(promises).then(async () => {
|
|
120
|
-
await (0, import_telegram.sendToTelegram)({
|
|
121
|
-
userToSend,
|
|
122
|
-
textToSend: text2Send,
|
|
123
|
-
telegramParams
|
|
124
|
-
});
|
|
125
|
-
}).catch((e) => {
|
|
126
|
-
(0, import_logging.errorLogger)("Error Promise:", e, import_main.adapter);
|
|
127
|
-
});
|
|
128
|
-
} catch (error) {
|
|
129
|
-
(0, import_logging.errorLogger)("Error idBySelector: ", error, import_main.adapter);
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
75
|
function generateActions({
|
|
133
76
|
action,
|
|
134
77
|
userObject
|
|
@@ -142,7 +85,7 @@ function generateActions({
|
|
|
142
85
|
}
|
|
143
86
|
userObject[triggerName] = { switch: [] };
|
|
144
87
|
IDs.forEach(function(id, index2) {
|
|
145
|
-
var _a;
|
|
88
|
+
var _a, _b;
|
|
146
89
|
listOfSetStateIds.push(id);
|
|
147
90
|
const toggle = (0, import_utils.isTruthy)(switch_checkbox[index2]);
|
|
148
91
|
const newObj = {
|
|
@@ -151,10 +94,10 @@ function generateActions({
|
|
|
151
94
|
toggle,
|
|
152
95
|
confirm: confirm[index2],
|
|
153
96
|
returnText: returnText[index2],
|
|
154
|
-
ack: (0, import_utils.isTruthy)(ack[index2]),
|
|
97
|
+
ack: (0, import_utils.isTruthy)((_a = ack == null ? void 0 : ack[index2]) != null ? _a : false),
|
|
155
98
|
parse_mode: (0, import_utils.isTruthy)(parse_mode[0])
|
|
156
99
|
};
|
|
157
|
-
if (Array.isArray((
|
|
100
|
+
if (Array.isArray((_b = userObject[triggerName]) == null ? void 0 : _b.switch)) {
|
|
158
101
|
userObject[triggerName].switch.push(newObj);
|
|
159
102
|
}
|
|
160
103
|
});
|
|
@@ -208,9 +151,12 @@ const checkEvent = async (dataObject, id, state, menuData, telegramParams, users
|
|
|
208
151
|
const menuArray = [];
|
|
209
152
|
let ok = false;
|
|
210
153
|
let calledNav = "";
|
|
154
|
+
if (!dataObject.action) {
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
211
157
|
Object.keys(dataObject.action).forEach((menu) => {
|
|
212
|
-
var _a2;
|
|
213
|
-
if ((_a2 = dataObject.action[menu]) == null ? void 0 :
|
|
158
|
+
var _a2, _b;
|
|
159
|
+
if ((_b = (_a2 = dataObject.action) == null ? void 0 : _a2[menu]) == null ? void 0 : _b.events) {
|
|
214
160
|
dataObject.action[menu].events.forEach((event) => {
|
|
215
161
|
if (event.ID[0] == id && event.ack[0] == state.ack.toString()) {
|
|
216
162
|
const condition = event.condition[0];
|
|
@@ -264,7 +210,6 @@ const getUserToSendFromUserListWithChatID = (userListWithChatID, chatID) => {
|
|
|
264
210
|
bindingFunc,
|
|
265
211
|
checkEvent,
|
|
266
212
|
generateActions,
|
|
267
|
-
getUserToSendFromUserListWithChatID
|
|
268
|
-
idBySelector
|
|
213
|
+
getUserToSendFromUserListWithChatID
|
|
269
214
|
});
|
|
270
215
|
//# sourceMappingURL=action.js.map
|
package/build/app/action.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/app/action.ts"],
|
|
4
|
-
"sourcesContent": ["import { sendToTelegram } from './telegram';\nimport { callSubMenu } from './subMenu';\nimport { sendNav } from './sendNav';\nimport { backMenuFunc } from './backMenu';\nimport { errorLogger } from './logging';\nimport { adapter } from '../main';\nimport type {\n Actions,\n BindingObject,\n BooleanString,\n DataObject,\n GenerateActionsNewObject,\n MenuData,\n NewObjectStructure,\n Part,\n Switch,\n TelegramParams,\n UserListWithChatId,\n UserObjectActions,\n UsersInGroup,\n} from '../types/types';\nimport { decomposeText, getNewline, jsonString } from '../lib/string';\nimport { isDefined, isFalsy, isTruthy } from '../lib/utils';\nimport { evaluate } from '../lib/math';\nimport { arrayOfEntries, config } from '../config/config';\nimport { getBindingValues } from '../lib/splitValues';\n\nconst bindingFunc = async (\n text: string,\n userToSend: string,\n telegramParams: TelegramParams,\n parse_mode?: boolean,\n): Promise<void> => {\n let textToSend;\n\n try {\n const { substringExcludeSearch } = decomposeText(text, config.binding.start, config.binding.end);\n const arrayOfItems = substringExcludeSearch.split(config.binding.splitChar);\n const bindingObject: BindingObject = {\n values: {},\n };\n\n for (let item of arrayOfItems) {\n if (!item.includes('?')) {\n const { key, id } = getBindingValues(item);\n if (id) {\n const result = await adapter.getForeignStateAsync(id);\n\n if (result) {\n bindingObject.values[key] = result.val?.toString() ?? '';\n }\n }\n } else {\n Object.keys(bindingObject.values).forEach(function (key) {\n item = item.replace(key, bindingObject.values[key]);\n });\n\n const { val } = evaluate(item, adapter);\n textToSend = String(val);\n }\n }\n await sendToTelegram({\n userToSend,\n textToSend,\n telegramParams,\n parse_mode,\n });\n } catch (e: any) {\n errorLogger('Error Binding function: ', e, adapter);\n }\n};\n\nconst idBySelector = async ({\n selector,\n text,\n userToSend,\n newline,\n telegramParams,\n}: {\n selector: string;\n text: string;\n userToSend: string;\n newline: BooleanString;\n telegramParams: TelegramParams;\n}): Promise<void> => {\n let text2Send = '';\n try {\n const functions = selector.replace(config.functionSelektor, '');\n let enums: string[] | undefined = [];\n const result = await adapter.getEnumsAsync();\n\n if (!result?.['enum.functions'][`enum.functions.${functions}`]) {\n return;\n }\n enums = result['enum.functions'][`enum.functions.${functions}`].common.members;\n if (!enums) {\n return;\n }\n\n const promises = enums.map(async (id: string) => {\n const value = await adapter.getForeignStateAsync(id);\n if (isDefined(value?.val)) {\n let newText = text;\n let res;\n\n if (text.includes('{common.name}')) {\n res = await adapter.getForeignObjectAsync(id);\n adapter.log.debug(`Name ${jsonString(res?.common.name)}`);\n\n if (res && typeof res.common.name === 'string') {\n newText = newText.replace('{common.name}', res.common.name);\n }\n }\n if (text.includes('&&')) {\n text2Send += newText.replace('&&', String(value.val));\n } else if (text.includes('&&')) {\n text2Send += newText.replace('&&', String(value.val));\n } else {\n text2Send += newText;\n text2Send += ` ${value.val}`;\n }\n }\n\n text2Send += getNewline(newline);\n\n adapter.log.debug(`text2send ${JSON.stringify(text2Send)}`);\n });\n Promise.all(promises)\n .then(async () => {\n await sendToTelegram({\n userToSend,\n textToSend: text2Send,\n telegramParams,\n });\n })\n .catch(e => {\n errorLogger('Error Promise:', e, adapter);\n });\n } catch (error: any) {\n errorLogger('Error idBySelector: ', error, adapter);\n }\n};\n\nfunction generateActions({\n action,\n userObject,\n}: {\n action?: Actions;\n userObject: NewObjectStructure;\n}): { obj: NewObjectStructure; ids: string[] } | undefined {\n try {\n const listOfSetStateIds: string[] = [];\n action?.set.forEach(function (\n { trigger, switch_checkbox, returnText, parse_mode, values, confirm, ack, IDs },\n index,\n ) {\n const triggerName = trigger[0];\n if (index == 0) {\n userObject[triggerName] = { switch: [] };\n }\n userObject[triggerName] = { switch: [] };\n\n IDs.forEach(function (id: string, index: number) {\n listOfSetStateIds.push(id);\n const toggle = isTruthy(switch_checkbox[index]);\n\n const newObj: Switch = {\n id: IDs[index],\n value: values[index],\n toggle: toggle,\n confirm: confirm[index],\n returnText: returnText[index],\n ack: isTruthy(ack[index]),\n parse_mode: isTruthy(parse_mode[0]),\n };\n if (Array.isArray(userObject[triggerName]?.switch)) {\n userObject[triggerName].switch.push(newObj);\n }\n });\n });\n\n arrayOfEntries.forEach(item => {\n const actions = action?.[item.objName as keyof Actions];\n\n actions?.forEach(function (element, index) {\n const trigger = element.trigger[0];\n userObject[trigger] = { [item.name]: [] };\n if (index == 0) {\n userObject[trigger] = { [item.name as keyof UserObjectActions]: [] };\n }\n\n (element[item.loop as keyof typeof element] as string[]).forEach(function (id, index) {\n const newObj = {} as GenerateActionsNewObject;\n item.elements.forEach(({ name, value, index: elIndex }) => {\n const elName = (value ? value : name) as keyof typeof element;\n const newIndex = elIndex ? elIndex : index;\n\n const val = !element[elName] ? false : element[elName][newIndex] || 'false';\n\n if (name === 'parse_mode') {\n newObj.parse_mode = isTruthy(val);\n }\n\n if (typeof val === 'string') {\n newObj[name as keyof GenerateActionsNewObject] = val.replace(/&/g, '&') as any;\n }\n });\n\n (userObject?.[trigger]?.[item.name as keyof Part] as GenerateActionsNewObject[]).push(newObj);\n });\n });\n });\n\n return { obj: userObject, ids: listOfSetStateIds };\n } catch (err: any) {\n errorLogger('Error generateActions:', err, adapter);\n }\n}\n\nconst adjustValueType = (value: keyof NewObjectStructure, valueType: string): boolean | string | number => {\n if (valueType == 'number') {\n if (!parseFloat(value)) {\n adapter.log.error(`Error: Value is not a number: ${value}`);\n return false;\n }\n return parseFloat(value);\n }\n if (valueType == 'boolean') {\n return isTruthy(value);\n }\n return value;\n};\n\nexport const checkEvent = async (\n dataObject: DataObject,\n id: string,\n state: ioBroker.State,\n menuData: MenuData,\n telegramParams: TelegramParams,\n usersInGroup: UsersInGroup,\n): Promise<boolean> => {\n const menuArray: string[] = [];\n let ok = false;\n let calledNav = '';\n Object.keys(dataObject.action).forEach(menu => {\n if (dataObject.action[menu]?.events) {\n dataObject.action[menu].events.forEach(event => {\n if (event.ID[0] == id && event.ack[0] == state.ack.toString()) {\n const condition = event.condition[0];\n if (\n ((state.val == true || state.val == 'true') && isTruthy(condition)) ||\n ((state.val == false || state.val == 'false') && isFalsy(condition)) ||\n (typeof state.val == 'number' && state.val == parseInt(condition)) ||\n state.val == condition\n ) {\n ok = true;\n menuArray.push(menu);\n calledNav = event.menu[0];\n }\n }\n });\n }\n });\n if (!ok || !menuArray.length) {\n return false;\n }\n\n for (const menu of menuArray) {\n const part = menuData[menu][calledNav as keyof DataObject];\n if (usersInGroup[menu] && part) {\n for (const user of usersInGroup[menu]) {\n const menus = Object.keys(menuData);\n\n if (part.nav) {\n backMenuFunc({ activePage: calledNav, navigation: part.nav, userToSend: user });\n }\n\n if (part?.nav?.[0][0].includes('menu:')) {\n await callSubMenu({\n jsonStringNav: part.nav[0][0],\n userToSend: user,\n telegramParams: telegramParams,\n part: part,\n allMenusWithData: menuData,\n menus: menus,\n });\n return true;\n }\n await sendNav(part, user, telegramParams);\n }\n }\n }\n return true;\n};\n\nexport const getUserToSendFromUserListWithChatID = (\n userListWithChatID: UserListWithChatId[],\n chatID: string,\n): string | undefined => {\n for (const element of userListWithChatID) {\n if (element.chatID == chatID) {\n return element.name;\n }\n }\n};\n\nexport { idBySelector, generateActions, bindingFunc, adjustValueType };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA
|
|
4
|
+
"sourcesContent": ["import { sendToTelegram } from './telegram';\nimport { callSubMenu } from './subMenu';\nimport { sendNav } from './sendNav';\nimport { backMenuFunc } from './backMenu';\nimport { errorLogger } from './logging';\n\nimport { adapter } from '../main';\n\nimport type {\n Actions,\n BindingObject,\n DataObject,\n GenerateActionsNewObject,\n MenuData,\n NewObjectStructure,\n Part,\n Switch,\n TelegramParams,\n UserListWithChatId,\n UserObjectActions,\n UsersInGroup,\n} from '../types/types';\nimport { decomposeText } from '../lib/string';\nimport { isFalsy, isTruthy } from '../lib/utils';\nimport { evaluate } from '../lib/math';\nimport { arrayOfEntries, config } from '../config/config';\nimport { getBindingValues } from '../lib/splitValues';\n\nconst bindingFunc = async (\n text: string,\n userToSend: string,\n telegramParams: TelegramParams,\n parse_mode?: boolean,\n): Promise<void> => {\n let textToSend;\n\n try {\n const { substringExcludeSearch } = decomposeText(text, config.binding.start, config.binding.end);\n const arrayOfItems = substringExcludeSearch.split(config.binding.splitChar);\n const bindingObject: BindingObject = {\n values: {},\n };\n\n for (let item of arrayOfItems) {\n if (!item.includes('?')) {\n const { key, id } = getBindingValues(item);\n if (id) {\n const result = await adapter.getForeignStateAsync(id);\n\n if (result) {\n bindingObject.values[key] = result.val?.toString() ?? '';\n }\n }\n } else {\n Object.keys(bindingObject.values).forEach(function (key) {\n item = item.replace(key, bindingObject.values[key]);\n });\n\n const { val } = evaluate(item, adapter);\n textToSend = String(val);\n }\n }\n await sendToTelegram({\n userToSend,\n textToSend,\n telegramParams,\n parse_mode,\n });\n } catch (e: any) {\n errorLogger('Error Binding function: ', e, adapter);\n }\n};\n\nfunction generateActions({\n action,\n userObject,\n}: {\n action?: Actions;\n userObject: NewObjectStructure;\n}): { obj: NewObjectStructure; ids: string[] } | undefined {\n try {\n const listOfSetStateIds: string[] = [];\n action?.set.forEach(function (\n { trigger, switch_checkbox, returnText, parse_mode, values, confirm, ack, IDs },\n index,\n ) {\n const triggerName = trigger[0];\n if (index == 0) {\n userObject[triggerName] = { switch: [] };\n }\n userObject[triggerName] = { switch: [] };\n\n IDs.forEach(function (id: string, index: number) {\n listOfSetStateIds.push(id);\n const toggle = isTruthy(switch_checkbox[index]);\n\n const newObj: Switch = {\n id: IDs[index],\n value: values[index],\n toggle: toggle,\n confirm: confirm[index],\n returnText: returnText[index],\n ack: isTruthy(ack?.[index] ?? false),\n parse_mode: isTruthy(parse_mode[0]),\n };\n if (Array.isArray(userObject[triggerName]?.switch)) {\n userObject[triggerName].switch.push(newObj);\n }\n });\n });\n\n arrayOfEntries.forEach(item => {\n const actions = action?.[item.objName as keyof Actions];\n\n actions?.forEach(function (element, index) {\n const trigger = element.trigger[0];\n userObject[trigger] = { [item.name]: [] };\n if (index == 0) {\n userObject[trigger] = { [item.name as keyof UserObjectActions]: [] };\n }\n\n (element[item.loop as keyof typeof element] as string[]).forEach(function (id, index) {\n const newObj = {} as GenerateActionsNewObject;\n item.elements.forEach(({ name, value, index: elIndex }) => {\n const elName = (value ? value : name) as keyof typeof element;\n const newIndex = elIndex ? elIndex : index;\n\n const val = !element[elName] ? false : element[elName][newIndex] || 'false';\n\n if (name === 'parse_mode') {\n newObj.parse_mode = isTruthy(val);\n }\n\n if (typeof val === 'string') {\n newObj[name as keyof GenerateActionsNewObject] = val.replace(/&/g, '&') as any;\n }\n });\n\n (userObject?.[trigger]?.[item.name as keyof Part] as GenerateActionsNewObject[]).push(newObj);\n });\n });\n });\n\n return { obj: userObject, ids: listOfSetStateIds };\n } catch (err: any) {\n errorLogger('Error generateActions:', err, adapter);\n }\n}\n\nconst adjustValueType = (value: keyof NewObjectStructure, valueType: string): boolean | string | number => {\n if (valueType == 'number') {\n if (!parseFloat(value)) {\n adapter.log.error(`Error: Value is not a number: ${value}`);\n return false;\n }\n return parseFloat(value);\n }\n if (valueType == 'boolean') {\n return isTruthy(value);\n }\n return value;\n};\n\nexport const checkEvent = async (\n dataObject: DataObject,\n id: string,\n state: ioBroker.State,\n menuData: MenuData,\n telegramParams: TelegramParams,\n usersInGroup: UsersInGroup,\n): Promise<boolean> => {\n const menuArray: string[] = [];\n let ok = false;\n let calledNav = '';\n\n if (!dataObject.action) {\n return false;\n }\n\n Object.keys(dataObject.action).forEach(menu => {\n if (dataObject.action?.[menu]?.events) {\n dataObject.action[menu].events.forEach(event => {\n if (event.ID[0] == id && event.ack[0] == state.ack.toString()) {\n const condition = event.condition[0];\n if (\n ((state.val == true || state.val == 'true') && isTruthy(condition)) ||\n ((state.val == false || state.val == 'false') && isFalsy(condition)) ||\n (typeof state.val == 'number' && state.val == parseInt(condition)) ||\n state.val == condition\n ) {\n ok = true;\n menuArray.push(menu);\n calledNav = event.menu[0];\n }\n }\n });\n }\n });\n if (!ok || !menuArray.length) {\n return false;\n }\n\n for (const menu of menuArray) {\n const part = menuData[menu][calledNav as keyof DataObject];\n if (usersInGroup[menu] && part) {\n for (const user of usersInGroup[menu]) {\n const menus = Object.keys(menuData);\n\n if (part.nav) {\n backMenuFunc({ activePage: calledNav, navigation: part.nav, userToSend: user });\n }\n\n if (part?.nav?.[0][0].includes('menu:')) {\n await callSubMenu({\n jsonStringNav: part.nav[0][0],\n userToSend: user,\n telegramParams: telegramParams,\n part: part,\n allMenusWithData: menuData,\n menus: menus,\n });\n return true;\n }\n await sendNav(part, user, telegramParams);\n }\n }\n }\n return true;\n};\n\nexport const getUserToSendFromUserListWithChatID = (\n userListWithChatID: UserListWithChatId[],\n chatID: string,\n): string | undefined => {\n for (const element of userListWithChatID) {\n if (element.chatID == chatID) {\n return element.name;\n }\n }\n};\n\nexport { generateActions, bindingFunc, adjustValueType };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["index", "_a"]
|
|
7
7
|
}
|
package/build/app/backMenu.js
CHANGED
|
@@ -83,7 +83,7 @@ async function switchBack(userToSend, allMenusWithData, menus, lastMenu = false)
|
|
|
83
83
|
const { text, parse_mode: parse_mode2 } = allMenusWithData[foundedMenu][lastListElement2];
|
|
84
84
|
let textToSend2 = text;
|
|
85
85
|
if (textToSend2) {
|
|
86
|
-
textToSend2 = await (0, import_utilities.
|
|
86
|
+
textToSend2 = await (0, import_utilities.returnTextModifier)(textToSend2);
|
|
87
87
|
}
|
|
88
88
|
if ((_h = backMenu[userToSend]) == null ? void 0 : _h.last) {
|
|
89
89
|
backMenu[userToSend].last = (_i = list2.pop()) != null ? _i : "";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/app/backMenu.ts"],
|
|
4
|
-
"sourcesContent": ["import { errorLogger } from './logging';\nimport type { BackMenu, Keyboard, MenuData, Navigation } from '../types/types';\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA4B;AAE5B,
|
|
4
|
+
"sourcesContent": ["import { errorLogger } from './logging';\nimport type { BackMenu, Keyboard, MenuData, Navigation } from '../types/types';\nimport { returnTextModifier } from '../lib/utilities';\nimport { adapter } from '../main';\nimport { jsonString } from '../lib/string';\nimport { backMenuLength } from '../config/config';\n\nconst backMenu: BackMenu = {};\n\nexport function backMenuFunc({\n activePage,\n navigation,\n userToSend,\n}: {\n activePage: string;\n navigation?: Navigation;\n userToSend: string;\n}): void {\n if (!navigation || !jsonString(navigation).split(`\"`)[1].includes('menu:')) {\n const list = backMenu[userToSend]?.list;\n const lastMenu = backMenu[userToSend]?.last;\n\n if (list?.length === backMenuLength) {\n list.shift();\n }\n if (!backMenu[userToSend]) {\n backMenu[userToSend] = { list: [], last: '' };\n }\n\n if (lastMenu && lastMenu !== '' && list) {\n list.push(lastMenu);\n }\n backMenu[userToSend].last = activePage;\n }\n}\n\nexport async function switchBack(\n userToSend: string,\n allMenusWithData: MenuData,\n menus: string[],\n lastMenu = false,\n): Promise<{ textToSend: string | undefined; keyboard: Keyboard; parse_mode: boolean | undefined } | undefined> {\n try {\n const list = backMenu[userToSend]?.list ? backMenu[userToSend].list : [];\n const lastListElement = list[list.length - 1];\n const lastElement = backMenu[userToSend]?.last;\n let keyboard: Keyboard;\n let foundedMenu = '';\n\n if (list.length) {\n for (const menu of menus) {\n const nav = lastElement ? allMenusWithData[menu]?.[lastElement]?.nav : undefined;\n const navBefore = allMenusWithData[menu]?.[lastListElement]?.nav;\n\n if (lastMenu && nav) {\n keyboard = nav;\n foundedMenu = menu;\n break;\n } else if (navBefore && !lastMenu) {\n keyboard = navBefore;\n foundedMenu = menu;\n break;\n }\n\n adapter.log.debug(`Menu call not found in this Menu: ${menu}`);\n }\n\n if (keyboard && foundedMenu != '') {\n if (!lastMenu) {\n const list = backMenu[userToSend]?.list;\n const listLength = list ? list.length - 1 : 0;\n const lastListElement = list?.[listLength];\n if (!lastListElement) {\n return;\n }\n const { text, parse_mode } = allMenusWithData[foundedMenu][lastListElement];\n let textToSend = text;\n if (textToSend) {\n textToSend = await returnTextModifier(textToSend);\n }\n if (backMenu[userToSend]?.last) {\n backMenu[userToSend].last = list.pop() ?? '';\n }\n\n return { textToSend, keyboard, parse_mode };\n }\n\n const lastElement = backMenu[userToSend]?.last;\n if (!lastElement) {\n return;\n }\n const { parse_mode, text: textToSend } = allMenusWithData[foundedMenu][lastElement];\n\n return { textToSend, keyboard, parse_mode };\n }\n }\n } catch (e: any) {\n errorLogger('Error in switchBack:', e, adapter);\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA4B;AAE5B,uBAAmC;AACnC,kBAAwB;AACxB,oBAA2B;AAC3B,oBAA+B;AAE/B,MAAM,WAAqB,CAAC;AAErB,SAAS,aAAa;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AACJ,GAIS;AAjBT;AAkBI,MAAI,CAAC,cAAc,KAAC,0BAAW,UAAU,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,SAAS,OAAO,GAAG;AACxE,UAAM,QAAO,cAAS,UAAU,MAAnB,mBAAsB;AACnC,UAAM,YAAW,cAAS,UAAU,MAAnB,mBAAsB;AAEvC,SAAI,6BAAM,YAAW,8BAAgB;AACjC,WAAK,MAAM;AAAA,IACf;AACA,QAAI,CAAC,SAAS,UAAU,GAAG;AACvB,eAAS,UAAU,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG;AAAA,IAChD;AAEA,QAAI,YAAY,aAAa,MAAM,MAAM;AACrC,WAAK,KAAK,QAAQ;AAAA,IACtB;AACA,aAAS,UAAU,EAAE,OAAO;AAAA,EAChC;AACJ;AAEA,eAAsB,WAClB,YACA,kBACA,OACA,WAAW,OACiG;AAzChH;AA0CI,MAAI;AACA,UAAM,SAAO,cAAS,UAAU,MAAnB,mBAAsB,QAAO,SAAS,UAAU,EAAE,OAAO,CAAC;AACvE,UAAM,kBAAkB,KAAK,KAAK,SAAS,CAAC;AAC5C,UAAM,eAAc,cAAS,UAAU,MAAnB,mBAAsB;AAC1C,QAAI;AACJ,QAAI,cAAc;AAElB,QAAI,KAAK,QAAQ;AACb,iBAAW,QAAQ,OAAO;AACtB,cAAM,MAAM,eAAc,4BAAiB,IAAI,MAArB,mBAAyB,iBAAzB,mBAAuC,MAAM;AACvE,cAAM,aAAY,4BAAiB,IAAI,MAArB,mBAAyB,qBAAzB,mBAA2C;AAE7D,YAAI,YAAY,KAAK;AACjB,qBAAW;AACX,wBAAc;AACd;AAAA,QACJ,WAAW,aAAa,CAAC,UAAU;AAC/B,qBAAW;AACX,wBAAc;AACd;AAAA,QACJ;AAEA,4BAAQ,IAAI,MAAM,qCAAqC,IAAI,EAAE;AAAA,MACjE;AAEA,UAAI,YAAY,eAAe,IAAI;AAC/B,YAAI,CAAC,UAAU;AACX,gBAAMA,SAAO,cAAS,UAAU,MAAnB,mBAAsB;AACnC,gBAAM,aAAaA,QAAOA,MAAK,SAAS,IAAI;AAC5C,gBAAMC,mBAAkBD,SAAA,gBAAAA,MAAO;AAC/B,cAAI,CAACC,kBAAiB;AAClB;AAAA,UACJ;AACA,gBAAM,EAAE,MAAM,YAAAC,YAAW,IAAI,iBAAiB,WAAW,EAAED,gBAAe;AAC1E,cAAIE,cAAa;AACjB,cAAIA,aAAY;AACZ,YAAAA,cAAa,UAAM,qCAAmBA,WAAU;AAAA,UACpD;AACA,eAAI,cAAS,UAAU,MAAnB,mBAAsB,MAAM;AAC5B,qBAAS,UAAU,EAAE,QAAO,KAAAH,MAAK,IAAI,MAAT,YAAc;AAAA,UAC9C;AAEA,iBAAO,EAAE,YAAAG,aAAY,UAAU,YAAAD,YAAW;AAAA,QAC9C;AAEA,cAAME,gBAAc,cAAS,UAAU,MAAnB,mBAAsB;AAC1C,YAAI,CAACA,cAAa;AACd;AAAA,QACJ;AACA,cAAM,EAAE,YAAY,MAAM,WAAW,IAAI,iBAAiB,WAAW,EAAEA,YAAW;AAElF,eAAO,EAAE,YAAY,UAAU,WAAW;AAAA,MAC9C;AAAA,IACJ;AAAA,EACJ,SAAS,GAAQ;AACb,oCAAY,wBAAwB,GAAG,mBAAO;AAAA,EAClD;AACJ;",
|
|
6
6
|
"names": ["list", "lastListElement", "parse_mode", "textToSend", "lastElement"]
|
|
7
7
|
}
|
|
@@ -26,7 +26,7 @@ var import_utilities = require("../lib/utilities");
|
|
|
26
26
|
var import_main = require("../main");
|
|
27
27
|
async function createDynamicSwitchMenu(calledValue, device, text) {
|
|
28
28
|
try {
|
|
29
|
-
const changedCalledValue = await (0, import_utilities.
|
|
29
|
+
const changedCalledValue = await (0, import_utilities.returnTextModifier)(calledValue);
|
|
30
30
|
const splittedArray = changedCalledValue == null ? void 0 : changedCalledValue.replace(/"/g, "").split(":");
|
|
31
31
|
if (!splittedArray) {
|
|
32
32
|
return;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/app/dynamicSwitchMenu.ts"],
|
|
4
|
-
"sourcesContent": ["import { errorLogger } from './logging';\nimport type { KeyboardItems, Keyboard } from '../types/types';\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA4B;AAE5B,
|
|
4
|
+
"sourcesContent": ["import { errorLogger } from './logging';\nimport type { KeyboardItems, Keyboard } from '../types/types';\nimport { returnTextModifier } from '../lib/utilities';\nimport { adapter } from '../main';\n\nasync function createDynamicSwitchMenu(\n calledValue: string,\n device: string,\n text: string,\n): Promise<{ text?: string; keyboard: Keyboard; device: string } | undefined> {\n try {\n const changedCalledValue = await returnTextModifier(calledValue);\n const splittedArray: string[] | undefined = changedCalledValue?.replace(/\"/g, '').split(':');\n\n if (!splittedArray) {\n return;\n }\n device = splittedArray[2];\n const arrayOfValues = splittedArray[1]\n .replace('dynSwitch', '')\n .replace(/\\]/g, '')\n .replace(/\\[/g, '')\n .split(',');\n\n const lengthOfRow = parseInt(splittedArray[3]) || 6;\n\n const array: KeyboardItems[][] = [];\n const keyboard: Keyboard = { inline_keyboard: array };\n if (arrayOfValues) {\n let keyboardItemsArray: KeyboardItems[] = [];\n arrayOfValues.forEach((value, index: number) => {\n if (value.includes('|')) {\n const splittedValue = value.split('|');\n keyboardItemsArray.push({\n text: splittedValue[0],\n callback_data: `menu:dynS:${device}:${splittedValue[1]}`,\n });\n } else {\n keyboardItemsArray.push({\n text: value,\n callback_data: `menu:dynS:${device}:${value}`,\n });\n }\n if (\n ((index + 1) % lengthOfRow == 0 && index != 0 && arrayOfValues.length > 0) ||\n index + 1 == arrayOfValues.length\n ) {\n keyboard.inline_keyboard.push(keyboardItemsArray);\n keyboardItemsArray = [];\n }\n });\n return { text, keyboard, device };\n }\n } catch (e: any) {\n errorLogger('Error parsing dynSwitch:', e, adapter);\n }\n}\nexport { createDynamicSwitchMenu };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAA4B;AAE5B,uBAAmC;AACnC,kBAAwB;AAExB,eAAe,wBACX,aACA,QACA,MAC0E;AAC1E,MAAI;AACA,UAAM,qBAAqB,UAAM,qCAAmB,WAAW;AAC/D,UAAM,gBAAsC,yDAAoB,QAAQ,MAAM,IAAI,MAAM;AAExF,QAAI,CAAC,eAAe;AAChB;AAAA,IACJ;AACA,aAAS,cAAc,CAAC;AACxB,UAAM,gBAAgB,cAAc,CAAC,EAChC,QAAQ,aAAa,EAAE,EACvB,QAAQ,OAAO,EAAE,EACjB,QAAQ,OAAO,EAAE,EACjB,MAAM,GAAG;AAEd,UAAM,cAAc,SAAS,cAAc,CAAC,CAAC,KAAK;AAElD,UAAM,QAA2B,CAAC;AAClC,UAAM,WAAqB,EAAE,iBAAiB,MAAM;AACpD,QAAI,eAAe;AACf,UAAI,qBAAsC,CAAC;AAC3C,oBAAc,QAAQ,CAAC,OAAO,UAAkB;AAC5C,YAAI,MAAM,SAAS,GAAG,GAAG;AACrB,gBAAM,gBAAgB,MAAM,MAAM,GAAG;AACrC,6BAAmB,KAAK;AAAA,YACpB,MAAM,cAAc,CAAC;AAAA,YACrB,eAAe,aAAa,MAAM,IAAI,cAAc,CAAC,CAAC;AAAA,UAC1D,CAAC;AAAA,QACL,OAAO;AACH,6BAAmB,KAAK;AAAA,YACpB,MAAM;AAAA,YACN,eAAe,aAAa,MAAM,IAAI,KAAK;AAAA,UAC/C,CAAC;AAAA,QACL;AACA,aACM,QAAQ,KAAK,eAAe,KAAK,SAAS,KAAK,cAAc,SAAS,KACxE,QAAQ,KAAK,cAAc,QAC7B;AACE,mBAAS,gBAAgB,KAAK,kBAAkB;AAChD,+BAAqB,CAAC;AAAA,QAC1B;AAAA,MACJ,CAAC;AACD,aAAO,EAAE,MAAM,UAAU,OAAO;AAAA,IACpC;AAAA,EACJ,SAAS,GAAQ;AACb,oCAAY,4BAA4B,GAAG,mBAAO;AAAA,EACtD;AACJ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/build/app/getstate.js
CHANGED
|
@@ -32,6 +32,8 @@ var import_string = require("../lib/string");
|
|
|
32
32
|
var import_appUtils = require("../lib/appUtils");
|
|
33
33
|
var import_config = require("../config/config");
|
|
34
34
|
var import_logging = require("./logging");
|
|
35
|
+
var import_exchangeValue = require("../lib/exchangeValue");
|
|
36
|
+
var import_idBySelector = require("./idBySelector");
|
|
35
37
|
async function getState(part, userToSend, telegramParams) {
|
|
36
38
|
var _a;
|
|
37
39
|
try {
|
|
@@ -41,7 +43,8 @@ async function getState(part, userToSend, telegramParams) {
|
|
|
41
43
|
var _a2;
|
|
42
44
|
import_main.adapter.log.debug(`Get Value ID: ${id}`);
|
|
43
45
|
if (id.includes(import_config.config.functionSelektor)) {
|
|
44
|
-
await (0,
|
|
46
|
+
await (0, import_idBySelector.idBySelector)({
|
|
47
|
+
adapter: import_main.adapter,
|
|
45
48
|
selector: id,
|
|
46
49
|
text,
|
|
47
50
|
userToSend,
|
|
@@ -76,7 +79,7 @@ async function getState(part, userToSend, telegramParams) {
|
|
|
76
79
|
if (!error2) {
|
|
77
80
|
modifiedTextToSend = textToSend;
|
|
78
81
|
modifiedStateVal = calculated;
|
|
79
|
-
import_main.adapter.log.debug(`
|
|
82
|
+
import_main.adapter.log.debug(`textToSend : ${modifiedTextToSend} val : ${modifiedStateVal}`);
|
|
80
83
|
}
|
|
81
84
|
}
|
|
82
85
|
if (modifiedTextToSend.includes(import_config.config.round.start)) {
|
|
@@ -119,16 +122,11 @@ async function getState(part, userToSend, telegramParams) {
|
|
|
119
122
|
return;
|
|
120
123
|
}
|
|
121
124
|
}
|
|
122
|
-
const {
|
|
123
|
-
newValue: _val,
|
|
124
|
-
textToSend: _text,
|
|
125
|
-
error
|
|
126
|
-
} = (0, import_string.getValueToExchange)(import_main.adapter, modifiedTextToSend, modifiedStateVal);
|
|
127
|
-
modifiedStateVal = String(_val);
|
|
128
|
-
modifiedTextToSend = _text;
|
|
129
|
-
import_main.adapter.log.debug(!error ? `Value Changed to: ${modifiedTextToSend}` : `No Change`);
|
|
125
|
+
const { textToSend: _text, error } = (0, import_exchangeValue.exchangeValue)(import_main.adapter, modifiedTextToSend, modifiedStateVal);
|
|
130
126
|
const isNewline = (0, import_string.getNewline)(newline);
|
|
131
|
-
|
|
127
|
+
modifiedTextToSend = `${_text} ${isNewline}`;
|
|
128
|
+
import_main.adapter.log.debug(!error ? `Value Changed to: ${modifiedTextToSend}` : `No Change`);
|
|
129
|
+
valueArrayForCorrectOrder[index] = modifiedTextToSend;
|
|
132
130
|
});
|
|
133
131
|
await Promise.all(promises);
|
|
134
132
|
await (0, import_telegram.sendToTelegram)({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/app/getstate.ts"],
|
|
4
|
-
"sourcesContent": ["import { sendToTelegram, sendToTelegramSubmenu } from './telegram';\nimport { bindingFunc
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAsD;AACtD,
|
|
4
|
+
"sourcesContent": ["import { sendToTelegram, sendToTelegramSubmenu } from './telegram';\nimport { bindingFunc } from './action';\nimport { createKeyboardFromJson, createTextTableFromJson } from './jsonTable';\nimport { processTimeIdLc } from '../lib/utilities';\nimport { isDefined } from '../lib/utils';\nimport { adapter } from '../main';\nimport type { Part, TelegramParams } from '../types/types';\nimport { integrateTimeIntoText } from '../lib/time';\nimport { cleanUpString, decomposeText, getNewline, jsonString } from '../lib/string';\nimport { calcValue, roundValue } from '../lib/appUtils';\nimport { config } from '../config/config';\nimport { errorLogger } from './logging';\nimport { exchangeValue } from '../lib/exchangeValue';\nimport { idBySelector } from './idBySelector';\n\nexport async function getState(part: Part, userToSend: string, telegramParams: TelegramParams): Promise<void> {\n try {\n const parse_mode = part.getData?.[0].parse_mode; // Parse Mode ist nur immer im ersten Element\n const valueArrayForCorrectOrder: string[] = [];\n const promises = (part.getData || []).map(async ({ newline, text, id }, index): Promise<void> => {\n adapter.log.debug(`Get Value ID: ${id}`);\n\n if (id.includes(config.functionSelektor)) {\n await idBySelector({\n adapter,\n selector: id,\n text,\n userToSend,\n newline,\n telegramParams,\n });\n return;\n }\n\n if (text.includes(config.binding.start)) {\n await bindingFunc(text, userToSend, telegramParams, parse_mode);\n return;\n }\n\n const state = await adapter.getForeignStateAsync(id);\n\n if (!isDefined(state)) {\n adapter.log.error('The state is empty!');\n valueArrayForCorrectOrder[index] = 'N/A';\n return Promise.resolve();\n }\n\n const stateValue = cleanUpString(state.val?.toString());\n\n let modifiedStateVal = stateValue;\n let modifiedTextToSend = text;\n\n if (text.includes(config.timestamp.ts) || text.includes(config.timestamp.lc)) {\n modifiedTextToSend = await processTimeIdLc(text, id);\n modifiedStateVal = '';\n }\n\n if (modifiedTextToSend.includes(config.time)) {\n modifiedTextToSend = integrateTimeIntoText(modifiedTextToSend, stateValue);\n modifiedStateVal = '';\n }\n\n if (modifiedTextToSend.includes(config.math.start)) {\n const { textToSend, calculated, error } = calcValue(modifiedTextToSend, modifiedStateVal, adapter);\n if (!error) {\n modifiedTextToSend = textToSend;\n modifiedStateVal = calculated;\n\n adapter.log.debug(`textToSend : ${modifiedTextToSend} val : ${modifiedStateVal}`);\n }\n }\n\n if (modifiedTextToSend.includes(config.round.start)) {\n const { error, text, roundedValue } = roundValue(String(modifiedStateVal), modifiedTextToSend);\n if (!error) {\n adapter.log.debug(`Rounded from ${jsonString(modifiedStateVal)} to ${jsonString(roundedValue)}`);\n modifiedStateVal = roundedValue;\n modifiedTextToSend = text;\n }\n }\n\n if (modifiedTextToSend.includes(config.json.start)) {\n const { substring } = decomposeText(modifiedTextToSend, config.json.start, config.json.end);\n\n if (substring.includes(config.json.textTable)) {\n const result = createTextTableFromJson(stateValue, modifiedTextToSend);\n if (result) {\n await sendToTelegram({\n userToSend,\n textToSend: result,\n telegramParams,\n parse_mode,\n });\n return;\n }\n adapter.log.debug('Cannot create a Text-Table');\n } else {\n const result = createKeyboardFromJson(stateValue, modifiedTextToSend, id, userToSend);\n if (stateValue && stateValue.length > 0) {\n if (result && result.text && result.keyboard) {\n sendToTelegramSubmenu(userToSend, result.text, result.keyboard, telegramParams, parse_mode);\n }\n return;\n }\n await sendToTelegram({\n userToSend,\n textToSend: 'The state is empty!',\n telegramParams,\n parse_mode,\n });\n adapter.log.debug('The state is empty!');\n return;\n }\n }\n\n const { textToSend: _text, error } = exchangeValue(adapter, modifiedTextToSend, modifiedStateVal);\n\n const isNewline = getNewline(newline);\n modifiedTextToSend = `${_text} ${isNewline}`;\n\n adapter.log.debug(!error ? `Value Changed to: ${modifiedTextToSend}` : `No Change`);\n\n valueArrayForCorrectOrder[index] = modifiedTextToSend;\n });\n await Promise.all(promises);\n\n await sendToTelegram({\n userToSend,\n textToSend: valueArrayForCorrectOrder.join(''),\n telegramParams,\n parse_mode,\n });\n } catch (error: any) {\n errorLogger('Error GetData:', error, adapter);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["_a", "error", "text"]
|
|
7
7
|
}
|
package/build/app/httpRequest.js
CHANGED
|
@@ -43,7 +43,7 @@ async function httpRequest(parts, userToSend, telegramParams, directoryPicture)
|
|
|
43
43
|
return;
|
|
44
44
|
}
|
|
45
45
|
for (const { url, password, user: username, filename } of parts.httpRequest) {
|
|
46
|
-
import_main.adapter.log.debug(`URL: ${url}`);
|
|
46
|
+
import_main.adapter.log.debug(`URL : ${url}`);
|
|
47
47
|
try {
|
|
48
48
|
const response = await (0, import_axios.default)(
|
|
49
49
|
username && password ? {
|
|
@@ -65,7 +65,7 @@ async function httpRequest(parts, userToSend, telegramParams, directoryPicture)
|
|
|
65
65
|
}
|
|
66
66
|
const imagePath = import_path.default.join(directoryPicture, filename);
|
|
67
67
|
import_fs.default.writeFileSync(imagePath, Buffer.from(response.data), "binary");
|
|
68
|
-
import_main.adapter.log.debug(`Pic saved: ${imagePath}`);
|
|
68
|
+
import_main.adapter.log.debug(`Pic saved : ${imagePath}`);
|
|
69
69
|
await (0, import_telegram.sendToTelegram)({
|
|
70
70
|
userToSend,
|
|
71
71
|
textToSend: imagePath,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/app/httpRequest.ts"],
|
|
4
|
-
"sourcesContent": ["import axios from 'axios';\nimport { sendToTelegram } from './telegram';\nimport path from 'path';\nimport fs from 'fs';\nimport { errorLogger } from './logging';\nimport type { Part, TelegramParams } from '../types/types';\nimport { validateDirectory } from '../lib/utils';\nimport { adapter } from '../main';\n\nasync function httpRequest(\n parts: Part,\n userToSend: string,\n telegramParams: TelegramParams,\n directoryPicture: string,\n): Promise<boolean | undefined> {\n if (!parts.httpRequest) {\n return;\n }\n for (const { url, password, user: username, filename } of parts.httpRequest) {\n adapter.log.debug(`URL: ${url}`);\n\n try {\n //prettier-ignore\n\n const response = await axios(\n username && password\n ? {\n method: 'get',\n url,\n responseType: 'arraybuffer',\n auth: {\n username,\n password,\n },\n }\n : {\n method: 'get',\n url,\n responseType: 'arraybuffer',\n },\n );\n\n if (!validateDirectory(adapter, directoryPicture)) {\n return;\n }\n const imagePath = path.join(directoryPicture, filename);\n\n fs.writeFileSync(imagePath, Buffer.from(response.data), 'binary');\n adapter.log.debug(`Pic saved: ${imagePath}`);\n\n await sendToTelegram({\n userToSend,\n textToSend: imagePath,\n telegramParams,\n });\n } catch (e: any) {\n errorLogger('Error http request:', e, adapter);\n }\n }\n return true;\n}\n\nexport { httpRequest };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAClB,sBAA+B;AAC/B,kBAAiB;AACjB,gBAAe;AACf,qBAA4B;AAE5B,mBAAkC;AAClC,kBAAwB;AAExB,eAAe,YACX,OACA,YACA,gBACA,kBAC4B;AAC5B,MAAI,CAAC,MAAM,aAAa;AACpB;AAAA,EACJ;AACA,aAAW,EAAE,KAAK,UAAU,MAAM,UAAU,SAAS,KAAK,MAAM,aAAa;AACzE,wBAAQ,IAAI,MAAM,
|
|
4
|
+
"sourcesContent": ["import axios from 'axios';\nimport { sendToTelegram } from './telegram';\nimport path from 'path';\nimport fs from 'fs';\nimport { errorLogger } from './logging';\nimport type { Part, TelegramParams } from '../types/types';\nimport { validateDirectory } from '../lib/utils';\nimport { adapter } from '../main';\n\nasync function httpRequest(\n parts: Part,\n userToSend: string,\n telegramParams: TelegramParams,\n directoryPicture: string,\n): Promise<boolean | undefined> {\n if (!parts.httpRequest) {\n return;\n }\n for (const { url, password, user: username, filename } of parts.httpRequest) {\n adapter.log.debug(`URL : ${url}`);\n\n try {\n //prettier-ignore\n\n const response = await axios(\n username && password\n ? {\n method: 'get',\n url,\n responseType: 'arraybuffer',\n auth: {\n username,\n password,\n },\n }\n : {\n method: 'get',\n url,\n responseType: 'arraybuffer',\n },\n );\n\n if (!validateDirectory(adapter, directoryPicture)) {\n return;\n }\n const imagePath = path.join(directoryPicture, filename);\n\n fs.writeFileSync(imagePath, Buffer.from(response.data), 'binary');\n adapter.log.debug(`Pic saved : ${imagePath}`);\n\n await sendToTelegram({\n userToSend,\n textToSend: imagePath,\n telegramParams,\n });\n } catch (e: any) {\n errorLogger('Error http request:', e, adapter);\n }\n }\n return true;\n}\n\nexport { httpRequest };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAClB,sBAA+B;AAC/B,kBAAiB;AACjB,gBAAe;AACf,qBAA4B;AAE5B,mBAAkC;AAClC,kBAAwB;AAExB,eAAe,YACX,OACA,YACA,gBACA,kBAC4B;AAC5B,MAAI,CAAC,MAAM,aAAa;AACpB;AAAA,EACJ;AACA,aAAW,EAAE,KAAK,UAAU,MAAM,UAAU,SAAS,KAAK,MAAM,aAAa;AACzE,wBAAQ,IAAI,MAAM,SAAS,GAAG,EAAE;AAEhC,QAAI;AAGA,YAAM,WAAW,UAAM,aAAAA;AAAA,QACnB,YAAY,WACN;AAAA,UACI,QAAQ;AAAA,UACR;AAAA,UACA,cAAc;AAAA,UACd,MAAM;AAAA,YACF;AAAA,YACA;AAAA,UACJ;AAAA,QACJ,IACA;AAAA,UACI,QAAQ;AAAA,UACR;AAAA,UACA,cAAc;AAAA,QAClB;AAAA,MACV;AAEA,UAAI,KAAC,gCAAkB,qBAAS,gBAAgB,GAAG;AAC/C;AAAA,MACJ;AACA,YAAM,YAAY,YAAAC,QAAK,KAAK,kBAAkB,QAAQ;AAEtD,gBAAAC,QAAG,cAAc,WAAW,OAAO,KAAK,SAAS,IAAI,GAAG,QAAQ;AAChE,0BAAQ,IAAI,MAAM,eAAe,SAAS,EAAE;AAE5C,gBAAM,gCAAe;AAAA,QACjB;AAAA,QACA,YAAY;AAAA,QACZ;AAAA,MACJ,CAAC;AAAA,IACL,SAAS,GAAQ;AACb,sCAAY,uBAAuB,GAAG,mBAAO;AAAA,IACjD;AAAA,EACJ;AACA,SAAO;AACX;",
|
|
6
6
|
"names": ["axios", "path", "fs"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var idBySelector_exports = {};
|
|
20
|
+
__export(idBySelector_exports, {
|
|
21
|
+
idBySelector: () => idBySelector
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(idBySelector_exports);
|
|
24
|
+
var import_config = require("../config/config");
|
|
25
|
+
var import_exchangeValue = require("../lib/exchangeValue");
|
|
26
|
+
var import_string = require("../lib/string");
|
|
27
|
+
var import_telegram = require("./telegram");
|
|
28
|
+
var import_logging = require("./logging");
|
|
29
|
+
const idBySelector = async ({
|
|
30
|
+
adapter,
|
|
31
|
+
selector,
|
|
32
|
+
text,
|
|
33
|
+
userToSend,
|
|
34
|
+
newline,
|
|
35
|
+
telegramParams
|
|
36
|
+
}) => {
|
|
37
|
+
let text2Send = "";
|
|
38
|
+
try {
|
|
39
|
+
const functions = selector.replace(import_config.config.functionSelektor, "");
|
|
40
|
+
let enums = [];
|
|
41
|
+
const result = await adapter.getEnumsAsync();
|
|
42
|
+
const enumsFunctions = result == null ? void 0 : result["enum.functions"][`enum.functions.${functions}`];
|
|
43
|
+
if (!enumsFunctions) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
enums = enumsFunctions.common.members;
|
|
47
|
+
if (!enums) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const promises = enums.map(async (id) => {
|
|
51
|
+
var _a;
|
|
52
|
+
const value = await adapter.getForeignStateAsync(id);
|
|
53
|
+
let newText = text;
|
|
54
|
+
if (text.includes("{common.name}")) {
|
|
55
|
+
const result2 = await adapter.getForeignObjectAsync(id);
|
|
56
|
+
newText = newText.replace("{common.name}", getCommonName({ name: result2 == null ? void 0 : result2.common.name, adapter }));
|
|
57
|
+
}
|
|
58
|
+
if (text.includes("{folder.name}")) {
|
|
59
|
+
const result2 = await adapter.getForeignObjectAsync(removeLastPartOfId(id));
|
|
60
|
+
newText = newText.replace("{folder.name}", getCommonName({ name: result2 == null ? void 0 : result2.common.name, adapter }));
|
|
61
|
+
}
|
|
62
|
+
const { textToSend } = (0, import_exchangeValue.exchangeValue)(adapter, newText, (_a = value == null ? void 0 : value.val) != null ? _a : "");
|
|
63
|
+
text2Send += textToSend;
|
|
64
|
+
text2Send += (0, import_string.getNewline)(newline);
|
|
65
|
+
adapter.log.debug(`Text to send: ${JSON.stringify(text2Send)}`);
|
|
66
|
+
});
|
|
67
|
+
Promise.all(promises).then(async () => {
|
|
68
|
+
await (0, import_telegram.sendToTelegram)({
|
|
69
|
+
userToSend,
|
|
70
|
+
textToSend: text2Send,
|
|
71
|
+
telegramParams
|
|
72
|
+
});
|
|
73
|
+
}).catch((e) => {
|
|
74
|
+
(0, import_logging.errorLogger)("Error Promise", e, adapter);
|
|
75
|
+
});
|
|
76
|
+
} catch (error) {
|
|
77
|
+
(0, import_logging.errorLogger)("Error idBySelector", error, adapter);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
function getCommonName({ name, adapter }) {
|
|
81
|
+
var _a, _b;
|
|
82
|
+
const language = (_a = adapter.language) != null ? _a : "en";
|
|
83
|
+
if (!name) {
|
|
84
|
+
return "";
|
|
85
|
+
}
|
|
86
|
+
if (typeof name === "string") {
|
|
87
|
+
return name;
|
|
88
|
+
}
|
|
89
|
+
if (language) {
|
|
90
|
+
return (_b = name[language]) != null ? _b : "";
|
|
91
|
+
}
|
|
92
|
+
return "";
|
|
93
|
+
}
|
|
94
|
+
function removeLastPartOfId(id) {
|
|
95
|
+
const parts = id.split(".");
|
|
96
|
+
parts.pop();
|
|
97
|
+
return parts.join(".");
|
|
98
|
+
}
|
|
99
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
100
|
+
0 && (module.exports = {
|
|
101
|
+
idBySelector
|
|
102
|
+
});
|
|
103
|
+
//# sourceMappingURL=idBySelector.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/app/idBySelector.ts"],
|
|
4
|
+
"sourcesContent": ["import type { BooleanString, TelegramParams } from '../types/types';\nimport { config } from '../config/config';\nimport type TelegramMenu from '../main';\nimport { exchangeValue } from '../lib/exchangeValue';\nimport { getNewline } from '../lib/string';\nimport { sendToTelegram } from './telegram';\nimport { errorLogger } from './logging';\n\nexport const idBySelector = async ({\n adapter,\n selector,\n text,\n userToSend,\n newline,\n telegramParams,\n}: {\n adapter: TelegramMenu;\n selector: string;\n text: string;\n userToSend: string;\n newline: BooleanString;\n telegramParams: TelegramParams;\n}): Promise<void> => {\n let text2Send = '';\n try {\n const functions = selector.replace(config.functionSelektor, '');\n let enums: string[] | undefined = [];\n const result = await adapter.getEnumsAsync();\n const enumsFunctions = result?.['enum.functions'][`enum.functions.${functions}`];\n if (!enumsFunctions) {\n return;\n }\n enums = enumsFunctions.common.members;\n if (!enums) {\n return;\n }\n\n const promises = enums.map(async (id: string) => {\n const value = await adapter.getForeignStateAsync(id);\n\n let newText = text;\n\n if (text.includes('{common.name}')) {\n const result = await adapter.getForeignObjectAsync(id);\n newText = newText.replace('{common.name}', getCommonName({ name: result?.common.name, adapter }));\n }\n if (text.includes('{folder.name}')) {\n const result = await adapter.getForeignObjectAsync(removeLastPartOfId(id));\n newText = newText.replace('{folder.name}', getCommonName({ name: result?.common.name, adapter }));\n }\n\n const { textToSend } = exchangeValue(adapter, newText, value?.val ?? '');\n\n text2Send += textToSend;\n text2Send += getNewline(newline);\n\n adapter.log.debug(`Text to send: ${JSON.stringify(text2Send)}`);\n });\n Promise.all(promises)\n .then(async () => {\n await sendToTelegram({\n userToSend,\n textToSend: text2Send,\n telegramParams,\n });\n })\n .catch(e => {\n errorLogger('Error Promise', e, adapter);\n });\n } catch (error: any) {\n errorLogger('Error idBySelector', error, adapter);\n }\n};\n\nfunction getCommonName({ name, adapter }: { name?: ioBroker.StringOrTranslated; adapter: TelegramMenu }): string {\n const language = adapter.language ?? 'en';\n if (!name) {\n return '';\n }\n if (typeof name === 'string') {\n return name;\n }\n if (language) {\n return name[language] ?? '';\n }\n return '';\n}\n\nfunction removeLastPartOfId(id: string): string {\n const parts = id.split('.');\n parts.pop();\n return parts.join('.');\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAuB;AAEvB,2BAA8B;AAC9B,oBAA2B;AAC3B,sBAA+B;AAC/B,qBAA4B;AAErB,MAAM,eAAe,OAAO;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,MAOqB;AACjB,MAAI,YAAY;AAChB,MAAI;AACA,UAAM,YAAY,SAAS,QAAQ,qBAAO,kBAAkB,EAAE;AAC9D,QAAI,QAA8B,CAAC;AACnC,UAAM,SAAS,MAAM,QAAQ,cAAc;AAC3C,UAAM,iBAAiB,iCAAS,kBAAkB,kBAAkB,SAAS;AAC7E,QAAI,CAAC,gBAAgB;AACjB;AAAA,IACJ;AACA,YAAQ,eAAe,OAAO;AAC9B,QAAI,CAAC,OAAO;AACR;AAAA,IACJ;AAEA,UAAM,WAAW,MAAM,IAAI,OAAO,OAAe;AArCzD;AAsCY,YAAM,QAAQ,MAAM,QAAQ,qBAAqB,EAAE;AAEnD,UAAI,UAAU;AAEd,UAAI,KAAK,SAAS,eAAe,GAAG;AAChC,cAAMA,UAAS,MAAM,QAAQ,sBAAsB,EAAE;AACrD,kBAAU,QAAQ,QAAQ,iBAAiB,cAAc,EAAE,MAAMA,WAAA,gBAAAA,QAAQ,OAAO,MAAM,QAAQ,CAAC,CAAC;AAAA,MACpG;AACA,UAAI,KAAK,SAAS,eAAe,GAAG;AAChC,cAAMA,UAAS,MAAM,QAAQ,sBAAsB,mBAAmB,EAAE,CAAC;AACzE,kBAAU,QAAQ,QAAQ,iBAAiB,cAAc,EAAE,MAAMA,WAAA,gBAAAA,QAAQ,OAAO,MAAM,QAAQ,CAAC,CAAC;AAAA,MACpG;AAEA,YAAM,EAAE,WAAW,QAAI,oCAAc,SAAS,UAAS,oCAAO,QAAP,YAAc,EAAE;AAEvE,mBAAa;AACb,uBAAa,0BAAW,OAAO;AAE/B,cAAQ,IAAI,MAAM,kBAAkB,KAAK,UAAU,SAAS,CAAC,EAAE;AAAA,IACnE,CAAC;AACD,YAAQ,IAAI,QAAQ,EACf,KAAK,YAAY;AACd,gBAAM,gCAAe;AAAA,QACjB;AAAA,QACA,YAAY;AAAA,QACZ;AAAA,MACJ,CAAC;AAAA,IACL,CAAC,EACA,MAAM,OAAK;AACR,sCAAY,iBAAiB,GAAG,OAAO;AAAA,IAC3C,CAAC;AAAA,EACT,SAAS,OAAY;AACjB,oCAAY,sBAAsB,OAAO,OAAO;AAAA,EACpD;AACJ;AAEA,SAAS,cAAc,EAAE,MAAM,QAAQ,GAA0E;AA1EjH;AA2EI,QAAM,YAAW,aAAQ,aAAR,YAAoB;AACrC,MAAI,CAAC,MAAM;AACP,WAAO;AAAA,EACX;AACA,MAAI,OAAO,SAAS,UAAU;AAC1B,WAAO;AAAA,EACX;AACA,MAAI,UAAU;AACV,YAAO,UAAK,QAAQ,MAAb,YAAkB;AAAA,EAC7B;AACA,SAAO;AACX;AAEA,SAAS,mBAAmB,IAAoB;AAC5C,QAAM,QAAQ,GAAG,MAAM,GAAG;AAC1B,QAAM,IAAI;AACV,SAAO,MAAM,KAAK,GAAG;AACzB;",
|
|
6
|
+
"names": ["result"]
|
|
7
|
+
}
|
package/build/app/jsonTable.js
CHANGED
|
@@ -43,7 +43,7 @@ const createKeyboardFromJson = (val, text, id, user) => {
|
|
|
43
43
|
idShoppingList = true;
|
|
44
44
|
}
|
|
45
45
|
const { validJson, error } = (0, import_json.makeValidJson)(val, import_main.adapter);
|
|
46
|
-
import_main.adapter.log.debug(`Val
|
|
46
|
+
import_main.adapter.log.debug(`Val ${validJson} with type ${typeof val}`);
|
|
47
47
|
if (error) {
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
@@ -81,7 +81,7 @@ const createKeyboardFromJson = (val, text, id, user) => {
|
|
|
81
81
|
}
|
|
82
82
|
keyboard.inline_keyboard.push(rowArray);
|
|
83
83
|
});
|
|
84
|
-
import_main.adapter.log.debug(`Keyboard: ${(0, import_string.jsonString)(keyboard)}`);
|
|
84
|
+
import_main.adapter.log.debug(`Keyboard : ${(0, import_string.jsonString)(keyboard)}`);
|
|
85
85
|
return { text: headline, keyboard };
|
|
86
86
|
} catch (err) {
|
|
87
87
|
(0, import_logging.errorLogger)("Error createKeyboardFromJson:", err, import_main.adapter);
|
|
@@ -104,7 +104,7 @@ function createTextTableFromJson(val, textToSend) {
|
|
|
104
104
|
}
|
|
105
105
|
});
|
|
106
106
|
});
|
|
107
|
-
import_main.adapter.log.debug(`Length of rows: ${(0, import_string.jsonString)(lengthArray)}`);
|
|
107
|
+
import_main.adapter.log.debug(`Length of rows : ${(0, import_string.jsonString)(lengthArray)}`);
|
|
108
108
|
const headline = array[2];
|
|
109
109
|
let textTable = textToSend.replace(substring, "").trim();
|
|
110
110
|
if (textTable != "") {
|