iobroker.telegram-menu 2.4.2 → 2.4.4
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/admin/build/index.js +68 -68
- package/admin/build/index.js.map +3 -3
- package/admin/css/style.css +7 -0
- package/admin/i18n/de/translations.json +1 -1
- package/admin/i18n/en/translations.json +1 -1
- package/admin/words.js +3 -3
- package/build/app/dynamicValue.js +12 -11
- package/build/app/dynamicValue.js.map +2 -2
- package/build/app/processData.js +10 -10
- package/build/app/processData.js.map +2 -2
- package/build/app/setstate.js +7 -1
- package/build/app/setstate.js.map +3 -3
- package/build/app/status.js +54 -0
- package/build/app/status.js.map +7 -0
- package/build/lib/exchangeValue.js +2 -2
- package/build/lib/exchangeValue.js.map +2 -2
- package/build/lib/string.js +2 -2
- package/build/lib/string.js.map +2 -2
- package/build/lib/utilities.js +3 -29
- package/build/lib/utilities.js.map +2 -2
- package/build/main.js +18 -4
- package/build/main.js.map +2 -2
- package/build/types/types.js.map +1 -1
- package/io-package.json +27 -27
- package/package.json +5 -5
package/build/lib/utilities.js
CHANGED
|
@@ -18,7 +18,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var utilities_exports = {};
|
|
20
20
|
__export(utilities_exports, {
|
|
21
|
-
checkStatus: () => checkStatus,
|
|
22
21
|
processTimeIdLc: () => processTimeIdLc,
|
|
23
22
|
returnTextModifier: () => returnTextModifier,
|
|
24
23
|
transformValueToTypeOfId: () => transformValueToTypeOfId
|
|
@@ -33,7 +32,7 @@ var import_config = require("../config/config");
|
|
|
33
32
|
var import_appUtils = require("./appUtils");
|
|
34
33
|
var import_setstate = require("../app/setstate");
|
|
35
34
|
var import_splitValues = require("./splitValues");
|
|
36
|
-
var
|
|
35
|
+
var import_status = require("../app/status");
|
|
37
36
|
const processTimeIdLc = async (textToSend, id) => {
|
|
38
37
|
const { substring, substringExcludeSearch } = (0, import_string.decomposeText)(
|
|
39
38
|
textToSend,
|
|
@@ -54,38 +53,14 @@ const processTimeIdLc = async (textToSend, id) => {
|
|
|
54
53
|
const timeStringReplaced = (0, import_appUtils.timeStringReplacer)(timeWithPad, timeStringUser);
|
|
55
54
|
return timeStringReplaced != null ? timeStringReplaced : textToSend;
|
|
56
55
|
};
|
|
57
|
-
const checkStatus = async (text) => {
|
|
58
|
-
const { substring, substringExcludeSearch, textExcludeSubstring } = (0, import_string.decomposeText)(
|
|
59
|
-
text,
|
|
60
|
-
import_config.config.status.start,
|
|
61
|
-
import_config.config.status.end
|
|
62
|
-
);
|
|
63
|
-
const { id, shouldChangeByStatusParameter } = (0, import_appUtils.statusIdAndParams)(substringExcludeSearch);
|
|
64
|
-
const stateValue = await import_main.adapter.getForeignStateAsync(id);
|
|
65
|
-
if (!(0, import_utils.isDefined)(stateValue == null ? void 0 : stateValue.val)) {
|
|
66
|
-
import_main.adapter.log.debug(`State not found for id : "${id}"`);
|
|
67
|
-
return text.replace(substring, "");
|
|
68
|
-
}
|
|
69
|
-
const stateValueString = String(stateValue.val);
|
|
70
|
-
if (text.includes(import_config.config.time)) {
|
|
71
|
-
return (0, import_time.integrateTimeIntoText)(textExcludeSubstring, stateValueString).replace(stateValueString, "");
|
|
72
|
-
}
|
|
73
|
-
if (!shouldChangeByStatusParameter) {
|
|
74
|
-
return text.replace(substring, stateValueString);
|
|
75
|
-
}
|
|
76
|
-
const { textToSend, error } = (0, import_exchangeValue.exchangeValue)(import_main.adapter, textExcludeSubstring, stateValue.val);
|
|
77
|
-
return !error ? textToSend : textExcludeSubstring;
|
|
78
|
-
};
|
|
79
56
|
const returnTextModifier = async (text) => {
|
|
80
57
|
if (!text) {
|
|
81
58
|
return "";
|
|
82
59
|
}
|
|
83
60
|
try {
|
|
84
61
|
const inputText = text;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
text = await checkStatus(text);
|
|
88
|
-
}
|
|
62
|
+
while (text.includes(import_config.config.status.start)) {
|
|
63
|
+
text = await (0, import_status.checkStatus)(import_main.adapter, text);
|
|
89
64
|
}
|
|
90
65
|
if (text.includes(import_config.config.timestamp.lc) || text.includes(import_config.config.timestamp.ts)) {
|
|
91
66
|
text = await processTimeIdLc(text);
|
|
@@ -135,7 +110,6 @@ async function transformValueToTypeOfId(id, value) {
|
|
|
135
110
|
}
|
|
136
111
|
// Annotate the CommonJS export names for ESM import in node:
|
|
137
112
|
0 && (module.exports = {
|
|
138
|
-
checkStatus,
|
|
139
113
|
processTimeIdLc,
|
|
140
114
|
returnTextModifier,
|
|
141
115
|
transformValueToTypeOfId
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/lib/utilities.ts"],
|
|
4
|
-
"sourcesContent": ["import { isDefined } from './utils';\nimport { decomposeText, isEmptyString, jsonString, replaceAllItems } from './string';\nimport { errorLogger } from '../app/logging';\nimport { extractTimeValues, getTimeWithPad
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA
|
|
4
|
+
"sourcesContent": ["import { isDefined } from './utils';\nimport { decomposeText, isEmptyString, jsonString, replaceAllItems } from './string';\nimport { errorLogger } from '../app/logging';\nimport { extractTimeValues, getTimeWithPad } from './time';\nimport { adapter } from '../main';\nimport { config } from '../config/config';\nimport { isSameType, timeStringReplacer } from './appUtils';\nimport { setstateIobroker } from '../app/setstate';\nimport { getProcessTimeValues } from './splitValues';\nimport { checkStatus } from '../app/status';\n\nexport const processTimeIdLc = async (textToSend: string, id?: string): Promise<string> => {\n const { substring, substringExcludeSearch } = decomposeText(\n textToSend,\n config.timestamp.start,\n config.timestamp.end,\n ); //{time.lc,(DD MM YYYY hh:mm:ss:sss),id:'ID'}\n const { typeofTimestamp, timeString, idString } = getProcessTimeValues(substringExcludeSearch);\n\n if (!id && (!idString || idString.length < 5)) {\n return textToSend.replace(substring, 'Invalid ID');\n }\n const value = await adapter.getForeignStateAsync(id ?? idString);\n\n if (!value) {\n return textToSend.replace(substring, 'Invalid ID');\n }\n const timeStringUser = replaceAllItems(timeString, [',(', ')', '}']); //\"(DD MM YYYY hh:mm:ss:sss)\"\n const unixTs = value[typeofTimestamp];\n\n const timeWithPad = getTimeWithPad(extractTimeValues(unixTs));\n const timeStringReplaced = timeStringReplacer(timeWithPad, timeStringUser);\n\n return timeStringReplaced ?? textToSend;\n};\n\nexport const returnTextModifier = async (text?: string): Promise<string> => {\n if (!text) {\n return '';\n }\n try {\n const inputText = text;\n\n while (text.includes(config.status.start)) {\n text = await checkStatus(adapter, text);\n }\n\n if (text.includes(config.timestamp.lc) || text.includes(config.timestamp.ts)) {\n text = await processTimeIdLc(text);\n }\n if (text.includes(config.set.start)) {\n const { substring, textExcludeSubstring } = decomposeText(text, config.set.start, config.set.end);\n const id = substring.split(',')[0].replace(\"{set:'id':\", '').replace(/'/g, '');\n const importedValue = substring.split(',')[1];\n\n text = textExcludeSubstring;\n const convertedValue = await transformValueToTypeOfId(id, importedValue);\n\n const ack = substring.split(',')[2].replace('}', '') == 'true';\n\n if (isEmptyString(text)) {\n text = 'W\u00E4hle eine Aktion';\n }\n if (convertedValue) {\n await setstateIobroker({ id, value: convertedValue, ack });\n }\n }\n\n text === inputText\n ? adapter.log.debug(`Return text : ${text} `)\n : adapter.log.debug(`Return text was modified from \"${inputText}\" to \"${text}\" `);\n return text;\n } catch (e: any) {\n errorLogger('Error returnTextModifier:', e, adapter);\n return '';\n }\n};\n\nexport async function transformValueToTypeOfId(\n id: string,\n value: ioBroker.StateValue,\n): Promise<ioBroker.StateValue | undefined> {\n try {\n const receivedType = typeof value;\n const obj = await adapter.getForeignObjectAsync(id);\n\n if (!obj || !isDefined(value) || isSameType(receivedType, obj)) {\n return value;\n }\n\n adapter.log.debug(`Change Value type from \"${receivedType}\" to \"${obj.common.type}\"`);\n\n switch (obj.common.type) {\n case 'string':\n return String(value);\n case 'number':\n return typeof value === 'string' ? parseFloat(value) : parseFloat(jsonString(value));\n case 'boolean':\n return isDefined(value) && !['false', false, 0, '0', 'null', 'undefined'].includes(value);\n default:\n return value;\n }\n } catch (e: any) {\n errorLogger('Error checkTypeOfId:', e, adapter);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/build/main.js
CHANGED
|
@@ -136,6 +136,7 @@ class TelegramMenu extends utils.Adapter {
|
|
|
136
136
|
telegramParams
|
|
137
137
|
);
|
|
138
138
|
}
|
|
139
|
+
let menus = [];
|
|
139
140
|
this.on("stateChange", async (id, state) => {
|
|
140
141
|
var _a2, _b2;
|
|
141
142
|
const setStateIdsToListenTo = (0, import_setStateIdsToListenTo.getStateIdsToListenTo)();
|
|
@@ -166,10 +167,10 @@ class TelegramMenu extends utils.Adapter {
|
|
|
166
167
|
} else if (this.isMenuToSend(state, id, telegramID, userToSend)) {
|
|
167
168
|
const value = state.val.toString();
|
|
168
169
|
const calledValue = value.slice(value.indexOf("]") + 1, value.length);
|
|
169
|
-
|
|
170
|
+
menus = (0, import_appUtils.getListOfMenusIncludingUser)(menusWithUsers, userToSend);
|
|
170
171
|
const dataFound = await (0, import_processData.checkEveryMenuForData)({
|
|
171
172
|
menuData,
|
|
172
|
-
calledValue,
|
|
173
|
+
navToGoTo: calledValue,
|
|
173
174
|
userToSend,
|
|
174
175
|
telegramParams,
|
|
175
176
|
menus,
|
|
@@ -220,8 +221,21 @@ class TelegramMenu extends utils.Adapter {
|
|
|
220
221
|
if (!(0, import_utils.isFalsy)(confirm) && (state == null ? void 0 : state.ack)) {
|
|
221
222
|
let textToSend = returnText;
|
|
222
223
|
if (textToSend.includes("{confirmSet:")) {
|
|
223
|
-
|
|
224
|
-
|
|
224
|
+
textToSend = (0, import_string.decomposeText)(
|
|
225
|
+
textToSend,
|
|
226
|
+
"{confirmSet:",
|
|
227
|
+
"}"
|
|
228
|
+
).textExcludeSubstring;
|
|
229
|
+
}
|
|
230
|
+
if (textToSend.includes("{setDynamicValue")) {
|
|
231
|
+
const { textExcludeSubstring, substringExcludeSearch } = (0, import_string.decomposeText)(
|
|
232
|
+
textToSend,
|
|
233
|
+
"{setDynamicValue:",
|
|
234
|
+
"}"
|
|
235
|
+
);
|
|
236
|
+
const splitSubstring = substringExcludeSearch.split(":");
|
|
237
|
+
const confirmText = splitSubstring[2];
|
|
238
|
+
textToSend = `${textExcludeSubstring} ${confirmText}`;
|
|
225
239
|
}
|
|
226
240
|
const {
|
|
227
241
|
textToSend: changedText,
|
package/build/main.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/main.ts"],
|
|
4
|
-
"sourcesContent": ["'use strict';\n/*\n * Created with @iobroker/create-adapter v2.3.0\n */\n\n// The adapter-core module gives you access to the core ioBroker functions\n// you need to create an adapter\nimport * as utils from '@iobroker/adapter-core';\n\nimport { checkEvent, generateActions, getUserToSendFromUserListWithChatID } from './app/action.js';\nimport { _subscribeForeignStates } from './app/subscribeStates.js';\nimport { sendToTelegram } from './app/telegram.js';\nimport { createState } from './app/createState.js';\nimport { saveMessageIds } from './app/messageIds.js';\nimport { adapterStartMenuSend } from './app/adapterStartMenuSend.js';\nimport { checkEveryMenuForData, getTimeouts } from './app/processData.js';\nimport { deleteMessageAndSendNewShoppingList, shoppingListSubscribeStateAndDeleteItem } from './app/shoppingList.js';\nimport { errorLogger } from './app/logging.js';\nimport type { MenuData, SetStateIds, TelegramParams } from './types/types';\nimport { checkIsTelegramActive } from './app/connection.js';\nimport { decomposeText, isString, jsonString } from './lib/string';\nimport { isDefined, isFalsy, isTruthy } from './lib/utils';\nimport { getListOfMenusIncludingUser, getNewStructure, getStartSides, splitNavigation } from './lib/appUtils';\nimport { getConfigVariables } from './app/configVariables';\nimport { getStateIdsToListenTo } from './app/setStateIdsToListenTo';\nimport { exchangePlaceholderWithValue, exchangeValue } from './lib/exchangeValue';\n\nconst timeoutKey = '0';\nexport let adapter: TelegramMenu;\n\nexport default class TelegramMenu extends utils.Adapter {\n private static instance: TelegramMenu;\n\n /**\n * @param [options] - Adapter options\n */\n public constructor(options: Partial<utils.AdapterOptions> = {}) {\n super({\n ...options,\n name: 'telegram-menu',\n });\n this.on('ready', this.onReady.bind(this));\n this.on('unload', this.onUnload.bind(this));\n TelegramMenu.instance = this;\n }\n\n private async onReady(): Promise<void> {\n adapter = this;\n await this.setState('info.connection', false, true);\n await createState(this);\n\n const {\n requestMessageID,\n directoryPicture,\n telegramParams,\n telegramID,\n menusWithUsers,\n infoConnectionOfTelegram,\n listOfMenus,\n isUserActiveCheckbox,\n checkboxNoEntryFound,\n textNoEntryFound,\n botSendMessageID,\n sendMenuAfterRestart,\n token,\n dataObject,\n checkboxes,\n } = getConfigVariables(this.config);\n const { telegramInstance } = telegramParams;\n\n const menuData: MenuData = {};\n const startSides = getStartSides(menusWithUsers, dataObject);\n try {\n await this.getForeignObject(infoConnectionOfTelegram, async (err, obj) => {\n if (err || !obj) {\n this.log.error(`The State ${infoConnectionOfTelegram} was not found! ${err}`);\n return;\n }\n\n if (!(await checkIsTelegramActive(infoConnectionOfTelegram))) {\n return;\n }\n\n const { nav, action } = dataObject;\n\n this.log.info('Telegram was found');\n\n for (const name in nav) {\n const splittedNavigation = splitNavigation(nav[name]);\n const newStructure = getNewStructure(splittedNavigation);\n const generatedActions = generateActions({ action: action?.[name], userObject: newStructure });\n\n menuData[name] = newStructure;\n if (generatedActions) {\n menuData[name] = generatedActions?.obj;\n const subscribeForeignStateIds = generatedActions?.ids;\n if (subscribeForeignStateIds?.length) {\n await _subscribeForeignStates(subscribeForeignStateIds);\n }\n } else {\n adapter.log.debug('No Actions generated!');\n }\n\n // Subscribe Events\n if (dataObject.action?.[name]?.events) {\n for (const event of dataObject.action[name].events) {\n await _subscribeForeignStates(event.ID);\n }\n }\n adapter.log.debug(`Menu: ${name}`);\n adapter.log.debug(`Array Buttons: ${jsonString(splittedNavigation)}`);\n adapter.log.debug(`Gen. Actions: ${jsonString(menuData[name])}`);\n }\n\n adapter.log.debug(`Checkbox: ${jsonString(checkboxes)}`);\n adapter.log.debug(`MenuList: ${jsonString(listOfMenus)}`);\n\n if (sendMenuAfterRestart) {\n await adapterStartMenuSend(\n listOfMenus,\n startSides,\n isUserActiveCheckbox,\n menusWithUsers,\n menuData,\n telegramParams,\n );\n }\n\n this.on('stateChange', async (id, state) => {\n const setStateIdsToListenTo: SetStateIds[] = getStateIdsToListenTo();\n\n const isTelegramInstanceActive = await this.checkInfoConnection(id, infoConnectionOfTelegram);\n if (!isTelegramInstanceActive) {\n return;\n }\n\n const { userToSend, error } = await this.getChatIDAndUserToSend(telegramParams);\n if (error) {\n return;\n }\n\n if (this.isAddToShoppingList(id, userToSend)) {\n await deleteMessageAndSendNewShoppingList(telegramParams, userToSend);\n return;\n }\n\n if (!state || !isDefined(state.val)) {\n return;\n }\n\n if (isString(state.val) && state.val.includes('sList:')) {\n await shoppingListSubscribeStateAndDeleteItem(state.val, telegramParams);\n return;\n }\n\n if (await checkEvent(dataObject, id, state, menuData, telegramParams, menusWithUsers)) {\n return;\n }\n\n if (this.isMessageID(id, botSendMessageID, requestMessageID)) {\n await saveMessageIds(state, telegramInstance);\n } else if (this.isMenuToSend(state, id, telegramID, userToSend)) {\n const value = state.val.toString();\n\n const calledValue = value.slice(value.indexOf(']') + 1, value.length);\n const menus = getListOfMenusIncludingUser(menusWithUsers, userToSend);\n\n const dataFound = await checkEveryMenuForData({\n menuData,\n calledValue,\n userToSend,\n telegramParams,\n menus,\n isUserActiveCheckbox,\n token,\n directoryPicture,\n timeoutKey,\n });\n\n this.log.debug(`Groups with searched User: ${jsonString(menus)}`);\n\n if (!dataFound && checkboxNoEntryFound) {\n adapter.log.debug('No Entry found');\n await sendToTelegram({\n userToSend,\n textToSend: textNoEntryFound,\n telegramParams,\n });\n }\n return;\n }\n if (state && setStateIdsToListenTo?.find(element => element.id == id)) {\n adapter.log.debug(`Subscribed state changed: { id : ${id} , state : ${jsonString(state)} }`);\n\n for (const el of setStateIdsToListenTo) {\n const { id: elId, userToSend, confirm, returnText, parse_mode } = el;\n const key: number = setStateIdsToListenTo.indexOf(el);\n\n if (elId == id) {\n adapter.log.debug(`Send Value: ${jsonString(el)}`);\n adapter.log.debug(`State: ${jsonString(state)}`);\n\n if (isTruthy(confirm) && !state?.ack && returnText.includes('{confirmSet:')) {\n const { substring } = decomposeText(returnText, '{confirmSet:', '}');\n const splitSubstring = substring.split(':');\n\n let text = '';\n if (isDefined(state.val)) {\n text = splitSubstring[2]?.includes('noValue')\n ? splitSubstring[1]\n : exchangePlaceholderWithValue(splitSubstring[1], state.val.toString());\n }\n adapter.log.debug(`Return-text: ${text}`);\n\n if (text === '') {\n adapter.log.error('The return text cannot be empty, please check.');\n }\n\n await sendToTelegram({\n textToSend: text,\n parse_mode: parse_mode,\n userToSend,\n telegramParams,\n });\n continue;\n }\n adapter.log.debug(`Data: ${jsonString({ confirm, ack: state?.ack, val: state?.val })}`);\n\n if (!isFalsy(confirm) && state?.ack) {\n let textToSend = returnText;\n\n if (textToSend.includes('{confirmSet:')) {\n const { textExcludeSubstring } = decomposeText(textToSend, '{confirmSet:', '}');\n textToSend = textExcludeSubstring;\n }\n\n const {\n textToSend: changedText,\n error,\n newValue,\n } = exchangeValue(adapter, textToSend, state.val?.toString());\n\n if (!error) {\n textToSend = changedText;\n }\n\n adapter.log.debug(`Value to send: ${newValue}`);\n\n await sendToTelegram({\n userToSend,\n textToSend,\n parse_mode: parse_mode,\n telegramParams,\n });\n\n setStateIdsToListenTo.splice(key, 1);\n }\n }\n }\n }\n });\n });\n } catch (e: any) {\n errorLogger('Error onReady', e, adapter);\n }\n\n await this.subscribeForeignStatesAsync(botSendMessageID);\n await this.subscribeForeignStatesAsync(requestMessageID);\n await this.subscribeForeignStatesAsync(`${telegramInstance}.communicate.requestChatId`);\n await this.subscribeForeignStatesAsync(telegramID);\n await this.subscribeForeignStatesAsync(`${telegramInstance}.info.connection`);\n }\n\n private isMessageID(id: string, botSendMessageID: string, requestMessageID: string): boolean {\n return id == botSendMessageID || id == requestMessageID;\n }\n\n private isAddToShoppingList(id: string, userToSend: string): boolean {\n return !!(id.includes('alexa-shoppinglist') && !id.includes('add_position') && userToSend);\n }\n\n private isMenuToSend(\n state: ioBroker.State | null | undefined,\n id: string,\n telegramID: string,\n userToSend: string | null,\n ): boolean {\n return !!(typeof state?.val === 'string' && state.val != '' && id == telegramID && state?.ack && userToSend);\n }\n\n private async checkInfoConnection(id: string, infoConnectionOfTelegram: string): Promise<boolean> {\n if (id === infoConnectionOfTelegram) {\n if (!(await checkIsTelegramActive(infoConnectionOfTelegram))) {\n this.log.debug('Telegram is not active');\n return false;\n }\n return true;\n }\n return true;\n }\n\n private async getChatIDAndUserToSend(\n telegramParams: TelegramParams,\n ): Promise<{ chatID: string; userToSend: string; error: boolean; errorMessage?: string }> {\n const { telegramInstance, userListWithChatID } = telegramParams;\n const chatIDState = await this.getForeignStateAsync(`${telegramInstance}.communicate.requestChatId`);\n\n if (!chatIDState?.val) {\n adapter.log.debug('ChatID not found');\n return { chatID: '', userToSend: '', error: true, errorMessage: 'ChatId not found' };\n }\n\n const userToSend = getUserToSendFromUserListWithChatID(userListWithChatID, chatIDState.val.toString());\n if (!userToSend) {\n this.log.debug('User to send not found');\n return { chatID: chatIDState.val.toString(), userToSend: '', error: true, errorMessage: 'User not found' };\n }\n return { chatID: chatIDState.val.toString(), userToSend, error: false };\n }\n\n /**\n * Is called when adapter shuts down - callback has to be called under any circumstances!\n *\n * @param callback - Is called when adapter has closed all connections and released all resources\n */\n private onUnload(callback: () => void): void {\n const timeouts = getTimeouts();\n try {\n // Here you must clear all timeouts or intervals that may still be active\n timeouts.forEach(({ timeout }) => {\n adapter.clearTimeout(timeout);\n });\n\n callback();\n } catch (e: any) {\n errorLogger(e, 'Error onUnload', adapter);\n callback();\n }\n }\n\n onMessage(obj: ioBroker.Message): void {\n if (typeof obj === 'object' && obj.message) {\n if (obj.command === 'send') {\n // e.g. send email or pushover or whatever\n this.log.info('send command');\n // Send response in callback if required\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, 'Message received', obj.callback);\n }\n }\n }\n }\n}\n\nif (require.main !== module) {\n // Export the constructor in compact mode\n /**\n * @param [options] - Adapter options\n */\n module.exports = (options: Partial<utils.AdapterOptions<undefined, undefined>> | undefined): TelegramMenu =>\n new TelegramMenu(options);\n} else {\n // otherwise start the instance directly\n (() => new TelegramMenu())();\n}\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["'use strict';\n/*\n * Created with @iobroker/create-adapter v2.3.0\n */\n\n// The adapter-core module gives you access to the core ioBroker functions\n// you need to create an adapter\nimport * as utils from '@iobroker/adapter-core';\n\nimport { checkEvent, generateActions, getUserToSendFromUserListWithChatID } from './app/action.js';\nimport { _subscribeForeignStates } from './app/subscribeStates.js';\nimport { sendToTelegram } from './app/telegram.js';\nimport { createState } from './app/createState.js';\nimport { saveMessageIds } from './app/messageIds.js';\nimport { adapterStartMenuSend } from './app/adapterStartMenuSend.js';\nimport { checkEveryMenuForData, getTimeouts } from './app/processData.js';\nimport { deleteMessageAndSendNewShoppingList, shoppingListSubscribeStateAndDeleteItem } from './app/shoppingList.js';\nimport { errorLogger } from './app/logging.js';\nimport type { MenuData, SetStateIds, TelegramParams } from './types/types';\nimport { checkIsTelegramActive } from './app/connection.js';\nimport { decomposeText, isString, jsonString } from './lib/string';\nimport { isDefined, isFalsy, isTruthy } from './lib/utils';\nimport { getListOfMenusIncludingUser, getNewStructure, getStartSides, splitNavigation } from './lib/appUtils';\nimport { getConfigVariables } from './app/configVariables';\nimport { getStateIdsToListenTo } from './app/setStateIdsToListenTo';\nimport { exchangePlaceholderWithValue, exchangeValue } from './lib/exchangeValue';\n\nconst timeoutKey = '0';\nexport let adapter: TelegramMenu;\n\nexport default class TelegramMenu extends utils.Adapter {\n private static instance: TelegramMenu;\n\n /**\n * @param [options] - Adapter options\n */\n public constructor(options: Partial<utils.AdapterOptions> = {}) {\n super({\n ...options,\n name: 'telegram-menu',\n });\n this.on('ready', this.onReady.bind(this));\n this.on('unload', this.onUnload.bind(this));\n TelegramMenu.instance = this;\n }\n\n private async onReady(): Promise<void> {\n adapter = this;\n await this.setState('info.connection', false, true);\n await createState(this);\n\n const {\n requestMessageID,\n directoryPicture,\n telegramParams,\n telegramID,\n menusWithUsers,\n infoConnectionOfTelegram,\n listOfMenus,\n isUserActiveCheckbox,\n checkboxNoEntryFound,\n textNoEntryFound,\n botSendMessageID,\n sendMenuAfterRestart,\n token,\n dataObject,\n checkboxes,\n } = getConfigVariables(this.config);\n const { telegramInstance } = telegramParams;\n\n const menuData: MenuData = {};\n const startSides = getStartSides(menusWithUsers, dataObject);\n try {\n await this.getForeignObject(infoConnectionOfTelegram, async (err, obj) => {\n if (err || !obj) {\n this.log.error(`The State ${infoConnectionOfTelegram} was not found! ${err}`);\n return;\n }\n\n if (!(await checkIsTelegramActive(infoConnectionOfTelegram))) {\n return;\n }\n\n const { nav, action } = dataObject;\n\n this.log.info('Telegram was found');\n\n for (const name in nav) {\n const splittedNavigation = splitNavigation(nav[name]);\n const newStructure = getNewStructure(splittedNavigation);\n const generatedActions = generateActions({ action: action?.[name], userObject: newStructure });\n\n menuData[name] = newStructure;\n if (generatedActions) {\n menuData[name] = generatedActions?.obj;\n const subscribeForeignStateIds = generatedActions?.ids;\n if (subscribeForeignStateIds?.length) {\n await _subscribeForeignStates(subscribeForeignStateIds);\n }\n } else {\n adapter.log.debug('No Actions generated!');\n }\n\n // Subscribe Events\n if (dataObject.action?.[name]?.events) {\n for (const event of dataObject.action[name].events) {\n await _subscribeForeignStates(event.ID);\n }\n }\n adapter.log.debug(`Menu: ${name}`);\n adapter.log.debug(`Array Buttons: ${jsonString(splittedNavigation)}`);\n adapter.log.debug(`Gen. Actions: ${jsonString(menuData[name])}`);\n }\n\n adapter.log.debug(`Checkbox: ${jsonString(checkboxes)}`);\n adapter.log.debug(`MenuList: ${jsonString(listOfMenus)}`);\n\n if (sendMenuAfterRestart) {\n await adapterStartMenuSend(\n listOfMenus,\n startSides,\n isUserActiveCheckbox,\n menusWithUsers,\n menuData,\n telegramParams,\n );\n }\n let menus: string[] = [];\n this.on('stateChange', async (id, state) => {\n const setStateIdsToListenTo: SetStateIds[] = getStateIdsToListenTo();\n\n const isTelegramInstanceActive = await this.checkInfoConnection(id, infoConnectionOfTelegram);\n if (!isTelegramInstanceActive) {\n return;\n }\n\n const { userToSend, error } = await this.getChatIDAndUserToSend(telegramParams);\n if (error) {\n return;\n }\n\n if (this.isAddToShoppingList(id, userToSend)) {\n await deleteMessageAndSendNewShoppingList(telegramParams, userToSend);\n return;\n }\n\n if (!state || !isDefined(state.val)) {\n return;\n }\n\n if (isString(state.val) && state.val.includes('sList:')) {\n await shoppingListSubscribeStateAndDeleteItem(state.val, telegramParams);\n return;\n }\n\n if (await checkEvent(dataObject, id, state, menuData, telegramParams, menusWithUsers)) {\n return;\n }\n\n if (this.isMessageID(id, botSendMessageID, requestMessageID)) {\n await saveMessageIds(state, telegramInstance);\n } else if (this.isMenuToSend(state, id, telegramID, userToSend)) {\n const value = state.val.toString();\n\n const calledValue = value.slice(value.indexOf(']') + 1, value.length);\n menus = getListOfMenusIncludingUser(menusWithUsers, userToSend);\n\n const dataFound = await checkEveryMenuForData({\n menuData,\n navToGoTo: calledValue,\n userToSend,\n telegramParams,\n menus,\n isUserActiveCheckbox,\n token,\n directoryPicture,\n timeoutKey,\n });\n\n this.log.debug(`Groups with searched User: ${jsonString(menus)}`);\n\n if (!dataFound && checkboxNoEntryFound) {\n adapter.log.debug('No Entry found');\n await sendToTelegram({\n userToSend,\n textToSend: textNoEntryFound,\n telegramParams,\n });\n }\n return;\n }\n if (state && setStateIdsToListenTo?.find(element => element.id == id)) {\n adapter.log.debug(`Subscribed state changed: { id : ${id} , state : ${jsonString(state)} }`);\n\n for (const el of setStateIdsToListenTo) {\n const { id: elId, userToSend, confirm, returnText, parse_mode } = el;\n const key: number = setStateIdsToListenTo.indexOf(el);\n\n if (elId == id) {\n adapter.log.debug(`Send Value: ${jsonString(el)}`);\n adapter.log.debug(`State: ${jsonString(state)}`);\n\n if (isTruthy(confirm) && !state?.ack && returnText.includes('{confirmSet:')) {\n const { substring } = decomposeText(returnText, '{confirmSet:', '}');\n const splitSubstring = substring.split(':');\n\n let text = '';\n if (isDefined(state.val)) {\n text = splitSubstring[2]?.includes('noValue')\n ? splitSubstring[1]\n : exchangePlaceholderWithValue(splitSubstring[1], state.val.toString());\n }\n adapter.log.debug(`Return-text: ${text}`);\n\n if (text === '') {\n adapter.log.error('The return text cannot be empty, please check.');\n }\n\n await sendToTelegram({\n textToSend: text,\n parse_mode: parse_mode,\n userToSend,\n telegramParams,\n });\n continue;\n }\n adapter.log.debug(`Data: ${jsonString({ confirm, ack: state?.ack, val: state?.val })}`);\n\n if (!isFalsy(confirm) && state?.ack) {\n let textToSend = returnText;\n\n if (textToSend.includes('{confirmSet:')) {\n textToSend = decomposeText(\n textToSend,\n '{confirmSet:',\n '}',\n ).textExcludeSubstring;\n }\n\n if (textToSend.includes('{setDynamicValue')) {\n const { textExcludeSubstring, substringExcludeSearch } = decomposeText(\n textToSend,\n '{setDynamicValue:',\n '}',\n );\n const splitSubstring = substringExcludeSearch.split(':');\n const confirmText = splitSubstring[2];\n textToSend = `${textExcludeSubstring} ${confirmText}`;\n }\n\n const {\n textToSend: changedText,\n error,\n newValue,\n } = exchangeValue(adapter, textToSend, state.val?.toString());\n\n if (!error) {\n textToSend = changedText;\n }\n\n adapter.log.debug(`Value to send: ${newValue}`);\n\n await sendToTelegram({\n userToSend,\n textToSend,\n parse_mode,\n telegramParams,\n });\n setStateIdsToListenTo.splice(key, 1);\n }\n }\n }\n }\n });\n });\n } catch (e: any) {\n errorLogger('Error onReady', e, adapter);\n }\n\n await this.subscribeForeignStatesAsync(botSendMessageID);\n await this.subscribeForeignStatesAsync(requestMessageID);\n await this.subscribeForeignStatesAsync(`${telegramInstance}.communicate.requestChatId`);\n await this.subscribeForeignStatesAsync(telegramID);\n await this.subscribeForeignStatesAsync(`${telegramInstance}.info.connection`);\n }\n\n private isMessageID(id: string, botSendMessageID: string, requestMessageID: string): boolean {\n return id == botSendMessageID || id == requestMessageID;\n }\n\n private isAddToShoppingList(id: string, userToSend: string): boolean {\n return !!(id.includes('alexa-shoppinglist') && !id.includes('add_position') && userToSend);\n }\n\n private isMenuToSend(\n state: ioBroker.State | null | undefined,\n id: string,\n telegramID: string,\n userToSend: string | null,\n ): boolean {\n return !!(typeof state?.val === 'string' && state.val != '' && id == telegramID && state?.ack && userToSend);\n }\n\n private async checkInfoConnection(id: string, infoConnectionOfTelegram: string): Promise<boolean> {\n if (id === infoConnectionOfTelegram) {\n if (!(await checkIsTelegramActive(infoConnectionOfTelegram))) {\n this.log.debug('Telegram is not active');\n return false;\n }\n return true;\n }\n return true;\n }\n\n private async getChatIDAndUserToSend(\n telegramParams: TelegramParams,\n ): Promise<{ chatID: string; userToSend: string; error: boolean; errorMessage?: string }> {\n const { telegramInstance, userListWithChatID } = telegramParams;\n const chatIDState = await this.getForeignStateAsync(`${telegramInstance}.communicate.requestChatId`);\n\n if (!chatIDState?.val) {\n adapter.log.debug('ChatID not found');\n return { chatID: '', userToSend: '', error: true, errorMessage: 'ChatId not found' };\n }\n\n const userToSend = getUserToSendFromUserListWithChatID(userListWithChatID, chatIDState.val.toString());\n if (!userToSend) {\n this.log.debug('User to send not found');\n return { chatID: chatIDState.val.toString(), userToSend: '', error: true, errorMessage: 'User not found' };\n }\n return { chatID: chatIDState.val.toString(), userToSend, error: false };\n }\n\n /**\n * Is called when adapter shuts down - callback has to be called under any circumstances!\n *\n * @param callback - Is called when adapter has closed all connections and released all resources\n */\n private onUnload(callback: () => void): void {\n const timeouts = getTimeouts();\n try {\n // Here you must clear all timeouts or intervals that may still be active\n timeouts.forEach(({ timeout }) => {\n adapter.clearTimeout(timeout);\n });\n\n callback();\n } catch (e: any) {\n errorLogger(e, 'Error onUnload', adapter);\n callback();\n }\n }\n\n onMessage(obj: ioBroker.Message): void {\n if (typeof obj === 'object' && obj.message) {\n if (obj.command === 'send') {\n // e.g. send email or pushover or whatever\n this.log.info('send command');\n // Send response in callback if required\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, 'Message received', obj.callback);\n }\n }\n }\n }\n}\n\nif (require.main !== module) {\n // Export the constructor in compact mode\n /**\n * @param [options] - Adapter options\n */\n module.exports = (options: Partial<utils.AdapterOptions<undefined, undefined>> | undefined): TelegramMenu =>\n new TelegramMenu(options);\n} else {\n // otherwise start the instance directly\n (() => new TelegramMenu())();\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["_a", "_b", "userToSend", "error"]
|
|
7
7
|
}
|
package/build/types/types.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/types/types.ts"],
|
|
4
|
-
"sourcesContent": ["import type { MockAdapter } from '@iobroker/testing';\nimport type TelegramMenu from '../main';\nimport type { BooleanString, Echart, EventAction, GetAction, HttpRequest, Pic, RowsNav, SetAction } from '@/types/app';\n\nexport type ListOfMenus = string[];\n\nexport type IsUserActiveCheckbox = Record<string, boolean>;\nexport type MenusWithUsers = Record<string, string[]>;\n\nexport type Action = Record<string, Actions>;\n\nexport type Navigation = string[][];\n\nexport interface UserListWithChatId {\n chatID: string;\n name: string;\n}\n\nexport interface Checkboxes {\n oneTiKey: boolean;\n resKey: boolean;\n checkboxNoValueFound: boolean;\n sendMenuAfterRestart: boolean;\n}\n\nexport interface Actions {\n get: GetAction[];\n set: SetAction[];\n pic: Pic[];\n httpRequest: HttpRequest[];\n echarts: Echart[];\n events: EventAction[];\n}\n\nexport type StartSides = Record<string, string>;\n\nexport type NewObjectStructure = Record<string, Part>;\n\nexport type UsersInGroup = { [key: string]: string[] };\n\nexport type MenuData = Record<string, NewObjectStructure>;\n\nexport interface DataObject {\n action?: Record<string, Actions | undefined>;\n nav: Record<string, RowsNav[]>;\n}\n\nexport interface UserObjectActions {\n [key: string]: {\n nav?: string[][];\n parse_mode?: boolean;\n text?: string;\n switch?: Switch[];\n echarts?: { background: string; echartsInstance: string; filename: string; preset: string; theme: string }[];\n };\n}\n\nexport interface Part {\n text?: string;\n nav?: Navigation;\n parse_mode?: boolean;\n getData?: GetData[];\n switch?: Switch[];\n sendPic?: SendPic[];\n location?: Location[];\n echarts?: ModifiedEchart[];\n httpRequest?: ModifiedHttpRequest[];\n url?: string;\n user?: string;\n password?: string;\n filename?: string;\n}\n\nexport interface ModifiedEchart {\n background: string;\n echartsInstance: string;\n filename: string;\n preset: string;\n theme: string;\n}\n\nexport interface SendPic {\n delay: number;\n id: string;\n fileName: string;\n}\n\nexport interface ModifiedHttpRequest {\n url: string;\n user: string;\n password: string;\n filename: string;\n delay: string;\n}\n\nexport interface GetData {\n id: string;\n text: string;\n parse_mode: boolean;\n newline: BooleanString;\n}\n\nexport type ParseModeType = 'HTML' | 'Markdown';\n\nexport interface Location {\n latitude: string;\n longitude: string;\n}\n\nexport interface SetDynamicValueObj {\n [key: string]: SetDynamicValue;\n}\n\nexport interface SetDynamicValue {\n id: string;\n ack: boolean;\n returnText: string;\n userToSend: string;\n parse_mode: boolean;\n confirm: string;\n telegramParams: TelegramParams;\n valueType: string;\n}\n\nexport type Newline = BooleanString;\n\nexport interface BindingObject {\n values: Record<string, string>;\n}\n\nexport interface splittedNavigation {\n nav: string[][];\n call: string;\n text: string;\n parse_mode: boolean;\n}\n\nexport interface Switch {\n id: string;\n value: string;\n toggle: boolean;\n confirm: BooleanString;\n returnText: string;\n parse_mode: boolean;\n ack: boolean;\n}\n\nexport interface GenerateActionsArrayOfEntries {\n objName: string;\n name: string;\n loop: string;\n elements: GenerateActionsArrayOfElements[];\n}\n\nexport interface GenerateActionsArrayOfElements {\n name: string;\n value?: string;\n index?: number;\n type?: string;\n}\n\nexport interface GenerateActionsNewObject {\n preset?: string;\n echartsInstance?: string;\n background?: string;\n theme?: string;\n url?: string;\n user?: string;\n password?: string;\n id?: string;\n filename?: string;\n delay?: string;\n text?: string;\n newline?: string;\n parse_mode?: boolean;\n}\n\nexport type SplittedData = string[];\n\nexport interface SetStateIds {\n id: string;\n confirm: BooleanString | boolean;\n returnText: string;\n userToSend: string;\n parse_mode?: boolean;\n}\n\nexport type GroupWithUser = string;\n\nexport interface Message {\n time: number;\n}\n\nexport type WhatShouldDelete = 'all' | 'last';\n\nexport type Keyboard = { inline_keyboard: KeyboardItems[][] } | string[][] | undefined;\n\nexport interface KeyboardItems {\n text: string;\n callback_data: string;\n}\n\nexport type LastText = Record<string, string>;\n\nexport type ValArray = Record<string, string>;\n\nexport interface KeyboardItem {\n text: string;\n callback_data: string;\n}\n\nexport type BackMenu = Record<string, BackMenuList | undefined>;\n\ntype BackMenuList = { list: string[]; last: string };\n\nexport interface CheckEveryMenuForDataType {\n menuData: MenuData; // checked !!!!\n
|
|
4
|
+
"sourcesContent": ["import type { MockAdapter } from '@iobroker/testing';\nimport type TelegramMenu from '../main';\nimport type { BooleanString, Echart, EventAction, GetAction, HttpRequest, Pic, RowsNav, SetAction } from '@/types/app';\n\nexport type ListOfMenus = string[];\n\nexport type IsUserActiveCheckbox = Record<string, boolean>;\nexport type MenusWithUsers = Record<string, string[]>;\n\nexport type Action = Record<string, Actions>;\n\nexport type Navigation = string[][];\n\nexport interface UserListWithChatId {\n chatID: string;\n name: string;\n}\n\nexport interface Checkboxes {\n oneTiKey: boolean;\n resKey: boolean;\n checkboxNoValueFound: boolean;\n sendMenuAfterRestart: boolean;\n}\n\nexport interface Actions {\n get: GetAction[];\n set: SetAction[];\n pic: Pic[];\n httpRequest: HttpRequest[];\n echarts: Echart[];\n events: EventAction[];\n}\n\nexport type StartSides = Record<string, string>;\n\nexport type NewObjectStructure = Record<string, Part>;\n\nexport type UsersInGroup = { [key: string]: string[] };\n\nexport type MenuData = Record<string, NewObjectStructure>;\n\nexport interface DataObject {\n action?: Record<string, Actions | undefined>;\n nav: Record<string, RowsNav[]>;\n}\n\nexport interface UserObjectActions {\n [key: string]: {\n nav?: string[][];\n parse_mode?: boolean;\n text?: string;\n switch?: Switch[];\n echarts?: { background: string; echartsInstance: string; filename: string; preset: string; theme: string }[];\n };\n}\n\nexport interface Part {\n text?: string;\n nav?: Navigation;\n parse_mode?: boolean;\n getData?: GetData[];\n switch?: Switch[];\n sendPic?: SendPic[];\n location?: Location[];\n echarts?: ModifiedEchart[];\n httpRequest?: ModifiedHttpRequest[];\n url?: string;\n user?: string;\n password?: string;\n filename?: string;\n}\n\nexport interface ModifiedEchart {\n background: string;\n echartsInstance: string;\n filename: string;\n preset: string;\n theme: string;\n}\n\nexport interface SendPic {\n delay: number;\n id: string;\n fileName: string;\n}\n\nexport interface ModifiedHttpRequest {\n url: string;\n user: string;\n password: string;\n filename: string;\n delay: string;\n}\n\nexport interface GetData {\n id: string;\n text: string;\n parse_mode: boolean;\n newline: BooleanString;\n}\n\nexport type ParseModeType = 'HTML' | 'Markdown';\n\nexport interface Location {\n latitude: string;\n longitude: string;\n}\n\nexport interface SetDynamicValueObj {\n [key: string]: SetDynamicValue;\n}\n\nexport interface SetDynamicValue {\n id: string;\n ack: boolean;\n returnText: string;\n userToSend: string;\n parse_mode: boolean;\n confirm: string;\n telegramParams: TelegramParams;\n valueType: string;\n navToGoTo?: string;\n}\n\nexport type Newline = BooleanString;\n\nexport interface BindingObject {\n values: Record<string, string>;\n}\n\nexport interface splittedNavigation {\n nav: string[][];\n call: string;\n text: string;\n parse_mode: boolean;\n}\n\nexport interface Switch {\n id: string;\n value: string;\n toggle: boolean;\n confirm: BooleanString;\n returnText: string;\n parse_mode: boolean;\n ack: boolean;\n}\n\nexport interface GenerateActionsArrayOfEntries {\n objName: string;\n name: string;\n loop: string;\n elements: GenerateActionsArrayOfElements[];\n}\n\nexport interface GenerateActionsArrayOfElements {\n name: string;\n value?: string;\n index?: number;\n type?: string;\n}\n\nexport interface GenerateActionsNewObject {\n preset?: string;\n echartsInstance?: string;\n background?: string;\n theme?: string;\n url?: string;\n user?: string;\n password?: string;\n id?: string;\n filename?: string;\n delay?: string;\n text?: string;\n newline?: string;\n parse_mode?: boolean;\n}\n\nexport type SplittedData = string[];\n\nexport interface SetStateIds {\n id: string;\n confirm: BooleanString | boolean;\n returnText: string;\n userToSend: string;\n parse_mode?: boolean;\n}\n\nexport type GroupWithUser = string;\n\nexport interface Message {\n time: number;\n}\n\nexport type WhatShouldDelete = 'all' | 'last';\n\nexport type Keyboard = { inline_keyboard: KeyboardItems[][] } | string[][] | undefined;\n\nexport interface KeyboardItems {\n text: string;\n callback_data: string;\n}\n\nexport type LastText = Record<string, string>;\n\nexport type ValArray = Record<string, string>;\n\nexport interface KeyboardItem {\n text: string;\n callback_data: string;\n}\n\nexport type BackMenu = Record<string, BackMenuList | undefined>;\n\ntype BackMenuList = { list: string[]; last: string };\n\nexport interface CheckEveryMenuForDataType {\n menuData: MenuData; // checked !!!!\n navToGoTo: string;\n menus: string[];\n isUserActiveCheckbox: IsUserActiveCheckbox;\n token: string;\n directoryPicture: string;\n timeoutKey: string;\n userToSend: string;\n telegramParams: TelegramParams;\n}\n\nexport interface ProcessDataType {\n menuData: MenuData;\n calledValue: string;\n groupWithUser: GroupWithUser;\n allMenusWithData: MenuData;\n menus: string[];\n isUserActiveCheckbox: IsUserActiveCheckbox;\n token: string;\n directoryPicture: string;\n timeoutKey: string;\n groupData: NewObjectStructure;\n userToSend: string;\n telegramParams: TelegramParams;\n}\n\nexport interface BackMenuType {\n allMenusWithData: MenuData;\n menus: string[];\n userToSend: string;\n telegramParams: TelegramParams;\n}\n\nexport type AllMenusWithData = Record<string, NewObjectStructure>;\n\nexport interface TelegramParams {\n telegramInstance: string;\n resize_keyboard: boolean;\n one_time_keyboard: boolean;\n userListWithChatID: UserListWithChatId[];\n}\n\nexport interface SetMenuValue {\n part: Part;\n userToSend: string;\n telegramParams: TelegramParams;\n menuNumber: 1 | 2;\n}\n\nexport interface CreateMenu {\n cbData: string;\n menuToHandle: string;\n text?: string;\n}\n\nexport interface ExchangeValueReturn {\n newValue: string | number | boolean;\n textToSend: string;\n error: boolean;\n}\n\nexport type PrimitiveType = string | number | boolean;\n\nexport type Adapter = MockAdapter | TelegramMenu;\n\nexport interface Timeouts {\n key: string;\n timeout: ioBroker.Timeout;\n}\n\nexport interface StringReplacerObj {\n val: string;\n newValue: string;\n}\n\nexport interface DecomposeTextReturnType {\n startindex: number;\n endindex: number;\n substring: string;\n textExcludeSubstring: string;\n substringExcludeSearch: string;\n}\n\nexport interface EvaluateReturnType {\n val: any;\n error: boolean;\n}\n\nexport interface Telegram {\n textToSend?: string;\n keyboard?: Keyboard;\n parse_mode?: boolean;\n userToSend: string;\n telegramParams: TelegramParams;\n}\n\nexport interface ExtractTimeValues {\n milliseconds: number;\n seconds: number;\n minutes: number;\n hours: number;\n day: number;\n month: number;\n year: number;\n}\n\nexport interface GetTimeWithPad {\n ms: string;\n s: string;\n m: string;\n h: string;\n d: string;\n mo: string;\n y: string;\n}\n\nexport type Messages = Record<string, MessageInfos[]>;\n\nexport interface MessageInfos {\n id: ioBroker.StateValue;\n time?: number;\n request?: ioBroker.StateValue | null | undefined;\n}\n\nexport interface CallSubMenu {\n jsonStringNav: string;\n userToSend: string;\n telegramParams: TelegramParams;\n part: Part;\n allMenusWithData: AllMenusWithData;\n menus: string[];\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "telegram-menu",
|
|
4
|
-
"version": "2.4.
|
|
4
|
+
"version": "2.4.4",
|
|
5
5
|
"news": {
|
|
6
|
+
"2.4.4": {
|
|
7
|
+
"en": "FIX: #342 Result not in the correct order\nFIX: #341 Setstate changeValue\nFIX: #338 Exchange value does not work in newline",
|
|
8
|
+
"de": "FIX: #342 Ergebnis nicht in der richtigen Reihenfolge\nFIX: #341 Setstate change Wert\nFIX: #338 Exchange Value funktioniert nicht in Newline",
|
|
9
|
+
"ru": "FIX: #342 Результат не в правильном порядке\nFIX: #341 Изменение состояния ценность\nИсполнитель: #338 Обменная стоимость не работает в новом режиме",
|
|
10
|
+
"pt": "FIX: #342 Resultado não na ordem correta\nFIX: # 341 Setstate change Valor\nFIX: #338 O valor da troca não funciona em nova linha",
|
|
11
|
+
"nl": "FIX: #342 Resultaat niet in de juiste volgorde\nFIX: #341 Setstate change Waarde\nFIX: #338 Exchange value werkt niet in newline",
|
|
12
|
+
"fr": "N°342 Résultat non conforme à l'ordre\nFIX: #341 Changement de configuration Valeur\nN°338 La valeur d'échange ne fonctionne pas dans newline",
|
|
13
|
+
"it": "FIX: #342 Risultato non nell'ordine corretto\nFIX: #341 Cambiamento di stato Valore\nFIX: #338 Valore di scambio non funziona in newline",
|
|
14
|
+
"es": "FIX: #342 Resultado no en el orden correcto\nFIX: #341 Cambio de estado Valor\nFIX: #338 El valor de cambio no funciona en nueva línea",
|
|
15
|
+
"pl": "FIX: # 342 Wynik nie w prawidłowej kolejności\nFIX: # 341 Zmiana stanu ustawienia Wartość\nFIX: # 338 Wartość wymiany nie działa w nowej linii",
|
|
16
|
+
"uk": "FIX: #342 Результат не в правильному порядку\nFIX: #341 Зміна Setstate Ціна\nFIX: #338 Вартість обміну не працює в новому режимі",
|
|
17
|
+
"zh-cn": "FIX: #342 (英语). 结果不正确\nFIX: # 341 状态变化 数值\nFIX: 第338号 交换值在新行中无效"
|
|
18
|
+
},
|
|
19
|
+
"2.4.3": {
|
|
20
|
+
"en": "FIX: #332 Copy dropdown\nFIX: SetDynamicValue \nFIX: Change value in getStatus",
|
|
21
|
+
"de": "FIX: #332 Dropdown kopieren\nFIX: SetDynamicValue\nFIX: Wert ändern in getStatus",
|
|
22
|
+
"ru": "FIX: #332 Copy dropdown\nОригинальное название: SetDynamicValue\nFIX: Изменение стоимости GetStatus",
|
|
23
|
+
"pt": "FIX: #332 Descarte de cópia\nFIX: SetDynamicValue\nFIX: Valor de mudança no getStatus",
|
|
24
|
+
"nl": "FIX: #332 Kopiëren dropdown\nFIX: SetDynamicValue\nFIX: Wijzig waarde in getStatus",
|
|
25
|
+
"fr": "FIXE: #332 Copier la liste déroulante\nFIX: SetDynamicValue\nFIX: Modifier la valeur de getStatus",
|
|
26
|
+
"it": "FIX: #332 Copia a discesa\nFIX: SetDynamicValue\nFIX: Cambia valore in getStatus",
|
|
27
|
+
"es": "FIX: #332 Copia desplegable\nFIX: SetDynamicValue\nFIX: Cambiar el valor en getStatus",
|
|
28
|
+
"pl": "FIX: # 332 Kopiuj zrzut\nFIX: SetDynamicValue\nFIX: Zmień wartość w getStatus",
|
|
29
|
+
"uk": "FIX: #332 Копіювати спад\nFIX: SetDynamicValue\nFIX: Зміна значення в getStatus",
|
|
30
|
+
"zh-cn": "FIX: #332 复制下拉\nFIX: 设置动态变量\nFIX: 获取状态中更改值"
|
|
31
|
+
},
|
|
6
32
|
"2.4.2": {
|
|
7
33
|
"en": "FIX: Error returnText is empty",
|
|
8
34
|
"de": "FIX: Fehlerrückgabe Text ist leer",
|
|
@@ -67,32 +93,6 @@
|
|
|
67
93
|
"pl": "FIX: # 303 Wyjście GetState w niewłaściwej kolejności\nFIX: # 296\nFIX: # 295 Usuń niedziałający przycisk\nFIX: # 291 Przycisk menu nie działa\nFEAT: Nodeje > = 20.0.0\nFEAT: Dodaj wartownik\nFEAT: Dodaj testy mocha",
|
|
68
94
|
"uk": "FIX: #303 Отримувати вихід в некоректному порядку\nFIX: #296 Передня фіксація\nFIX: #295 Видалити кнопка не працює\nFIX: #291 Меню не працює\nFEAT: Nodejs >= 20.0.0\nFEAT: Додати відправлення\nFEAT: Додати тести",
|
|
69
95
|
"zh-cn": "FIX: # 303 GetState 输出顺序不正确\nFIX: # 296 前端修正\nFIX: # 295 删除不起作用的按钮\nFIX: #291 (英语). 菜单按钮不工作\nFEAT: 节点 >= 20.0.0\nFEAT: 添加哨兵\nFEAT: 添加摩卡测试"
|
|
70
|
-
},
|
|
71
|
-
"2.2.4": {
|
|
72
|
-
"en": "FIX: #279 Backslash is in the message when using newline",
|
|
73
|
-
"de": "FIX: #279 Backslash ist in der Nachricht bei der Verwendung von newline",
|
|
74
|
-
"ru": "FIX: #279 Backslash находится в сообщении при использовании новой линии",
|
|
75
|
-
"pt": "FIX: #279 Backslash está na mensagem ao usar newline",
|
|
76
|
-
"nl": "FIX: #279 Backslash zit in het bericht bij het gebruik van nieuwe regel",
|
|
77
|
-
"fr": "FIX: #279 Backslash est dans le message lorsque vous utilisez newline",
|
|
78
|
-
"it": "FIX: #279 Backslash è nel messaggio quando si utilizza la nuova linea",
|
|
79
|
-
"es": "FIX: #279 Backslash está en el mensaje al usar newline",
|
|
80
|
-
"pl": "FIX: # 279 Backslash jest w wiadomości przy użyciu nowej linii",
|
|
81
|
-
"uk": "FIX: #279 Backslash знаходиться в повідомленні при використанні newline",
|
|
82
|
-
"zh-cn": "FIX: # 279 使用新线时反斜线在信件中"
|
|
83
|
-
},
|
|
84
|
-
"2.2.3": {
|
|
85
|
-
"en": "FIX: #279 Backslash is in the message when using newline",
|
|
86
|
-
"de": "FIX: #279 Backslash ist in der Nachricht bei der Verwendung von newline",
|
|
87
|
-
"ru": "FIX: #279 Backslash находится в сообщении при использовании новой линии",
|
|
88
|
-
"pt": "FIX: #279 Backslash está na mensagem ao usar newline",
|
|
89
|
-
"nl": "FIX: #279 Backslash zit in het bericht bij het gebruik van nieuwe regel",
|
|
90
|
-
"fr": "FIX: #279 Backslash est dans le message lorsque vous utilisez newline",
|
|
91
|
-
"it": "FIX: #279 Backslash è nel messaggio quando si utilizza la nuova linea",
|
|
92
|
-
"es": "FIX: #279 Backslash está en el mensaje al usar newline",
|
|
93
|
-
"pl": "FIX: # 279 Backslash jest w wiadomości przy użyciu nowej linii",
|
|
94
|
-
"uk": "FIX: #279 Backslash знаходиться в повідомленні при використанні newline",
|
|
95
|
-
"zh-cn": "FIX: # 279 使用新线时反斜线在信件中"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.telegram-menu",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.4",
|
|
4
4
|
"description": "Easily create Telegram Menus",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "MiRo1310",
|
|
@@ -31,17 +31,17 @@
|
|
|
31
31
|
"@alcalzone/release-script-plugin-license": "^3.7.0",
|
|
32
32
|
"@alcalzone/release-script-plugin-manual-review": "^3.7.0",
|
|
33
33
|
"@iobroker/adapter-dev": "^1.4.0",
|
|
34
|
-
"@iobroker/eslint-config": "^2.0.
|
|
34
|
+
"@iobroker/eslint-config": "^2.0.2",
|
|
35
35
|
"@iobroker/testing": "^5.0.4",
|
|
36
36
|
"@tsconfig/node20": "^20.1.5",
|
|
37
37
|
"@types/chai": "^4.3.14",
|
|
38
38
|
"@types/chai-as-promised": "^7.1.8",
|
|
39
39
|
"@types/mocha": "^10.0.10",
|
|
40
|
-
"@types/node": "^22.15.
|
|
40
|
+
"@types/node": "^22.15.29",
|
|
41
41
|
"@types/sinon-chai": "^3.2.12",
|
|
42
42
|
"chai": "^4.5.0",
|
|
43
43
|
"chai-as-promised": "^7.1.1",
|
|
44
|
-
"mocha": "^11.
|
|
44
|
+
"mocha": "^11.5.0",
|
|
45
45
|
"rimraf": "^6.0.1",
|
|
46
46
|
"sinon": "^19.0.4",
|
|
47
47
|
"sinon-chai": "^3.7.0",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"prebuild:react": "rimraf admin/build",
|
|
68
68
|
"build:react": "build-adapter react",
|
|
69
69
|
"watch:react": "build-adapter react --watch",
|
|
70
|
-
"test:js": "mocha -r ts-node/register test/**/*.test.ts --config test/mocharc.custom.json
|
|
70
|
+
"test:js": "mocha -r ts-node/register \"test/**/*.test.ts\" --config test/mocharc.custom.json",
|
|
71
71
|
"test:package": "mocha test/package --exit",
|
|
72
72
|
"test:integration": "mocha test/integration --exit",
|
|
73
73
|
"test": "npm run test:js && npm run test:package",
|