iobroker.telegram-menu 2.3.1 → 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 +6 -0
- package/build/app/action.js +10 -65
- package/build/app/action.js.map +2 -2
- package/build/app/getstate.js +6 -9
- package/build/app/getstate.js.map +2 -2
- package/build/app/idBySelector.js +103 -0
- package/build/app/idBySelector.js.map +7 -0
- package/build/app/setstate.js +5 -5
- package/build/app/setstate.js.map +3 -3
- package/build/app/subMenu.js +8 -21
- package/build/app/subMenu.js.map +2 -2
- package/build/app/telegram.js +2 -3
- package/build/app/telegram.js.map +2 -2
- package/build/lib/appUtils.js +2 -12
- 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 +5 -4
- package/build/lib/utilities.js.map +2 -2
- package/build/main.js +10 -22
- package/build/main.js.map +3 -3
- package/build/types/types.js.map +1 -1
- package/io-package.json +14 -14
- package/package.json +1 -1
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, PrimitiveType, SetStateIds, TelegramParams } from './types/types';\nimport { checkIsTelegramActive } from './app/connection.js';\nimport { decomposeText, getValueToExchange, isString, jsonString } from './lib/string';\nimport { isDefined, isFalsy, isTruthy } from './lib/utils';\nimport {\n exchangePlaceholderWithValue,\n getListOfMenusIncludingUser,\n getNewStructure,\n getStartSides,\n splitNavigation,\n} from './lib/appUtils';\nimport { getConfigVariables } from './app/configVariables';\nimport { getStateIdsToListenTo } from './app/setStateIdsToListenTo';\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 let value: PrimitiveType = '';\n let valueChange: PrimitiveType | null = null;\n const {\n newValue,\n textToSend: changedText,\n error,\n } = getValueToExchange(adapter, textToSend, state.val?.toString());\n if (!error) {\n valueChange = newValue;\n textToSend = changedText;\n }\n\n if (textToSend?.toString().includes('{novalue}')) {\n value = '';\n textToSend = textToSend.replace('{novalue}', '');\n } else if (isDefined(state?.val)) {\n value = state.val?.toString();\n }\n if (isDefined(valueChange)) {\n value = valueChange;\n }\n\n adapter.log.debug(`Value to send: ${value}`);\n textToSend = exchangePlaceholderWithValue(textToSend, value);\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": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,YAAuB;AAEvB,oBAAiF;AACjF,6BAAwC;AACxC,sBAA+B;AAC/B,yBAA4B;AAC5B,wBAA+B;AAC/B,kCAAqC;AACrC,yBAAmD;AACnD,0BAA6F;AAC7F,qBAA4B;AAE5B,wBAAsC;AACtC,
|
|
6
|
-
"names": ["_a", "userToSend", "error"]
|
|
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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",
|
|
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';\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 type ActionTypes = Get | Set | Pic | HttpRequest | Echart | Events;\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: Get[];\n set: Set[];\n pic: Pic[];\n httpRequest: HttpRequest[];\n echarts: Echart[];\n events: Events[];\n}\n\nexport interface HttpRequest {\n url: string;\n user: string;\n password: string;\n filename: string;\n trigger: string;\n delay: string;\n}\n\nexport interface Set {\n ack: BooleanString[];\n confirm: BooleanString[];\n parse_mode: boolean[];\n switch_checkbox: BooleanString[];\n IDs: string[];\n returnText: string[];\n trigger: string[];\n values: string[];\n}\n\nexport interface Get {\n newline_checkbox: BooleanString[];\n parse_mode: boolean[];\n IDs: string[];\n text: string[];\n trigger: string[];\n}\n\nexport interface Events {\n ack: BooleanString[];\n ID: string[];\n menu: string[];\n condition: string[];\n trigger: string[];\n}\n\nexport interface Pic {\n IDs: string[];\n filename: string[];\n trigger: string[];\n picSendDelay: string[];\n}\n\nexport interface Echart {\n background: string[];\n echartsInstance: string[];\n filename: string;\n preset: string;\n theme: string[];\n trigger: string[];\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
|
|
4
|
+
"sourcesContent": ["import type { MockAdapter } from '@iobroker/testing';\nimport type TelegramMenu from '../main';\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 type ActionTypes = Get | Set | Pic | HttpRequest | Echart | Events;\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: Get[];\n set: Set[];\n pic: Pic[];\n httpRequest: HttpRequest[];\n echarts: Echart[];\n events: Events[];\n}\n\nexport interface HttpRequest {\n url: string;\n user: string;\n password: string;\n filename: string;\n trigger: string;\n delay: string;\n}\n\nexport interface Set {\n ack: BooleanString[];\n confirm: BooleanString[];\n parse_mode: boolean[];\n switch_checkbox: BooleanString[];\n IDs: string[];\n returnText: string[];\n trigger: string[];\n values: string[];\n}\n\nexport interface Get {\n newline_checkbox: BooleanString[];\n parse_mode: boolean[];\n IDs: string[];\n text: string[];\n trigger: string[];\n}\n\nexport interface Events {\n ack: BooleanString[];\n ID: string[];\n menu: string[];\n condition: string[];\n trigger: string[];\n}\n\nexport interface Pic {\n IDs: string[];\n filename: string[];\n trigger: string[];\n picSendDelay: string[];\n}\n\nexport interface Echart {\n background: string[];\n echartsInstance: string[];\n filename: string;\n preset: string;\n theme: string[];\n trigger: string[];\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, NavigationRow[]>;\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?: Echart[];\n httpRequest?: HttpRequest[];\n url?: string;\n user?: string;\n password?: string;\n filename?: string;\n}\n\nexport interface SendPic {\n delay: number;\n id: string;\n fileName: string;\n}\n\nexport interface GetData {\n id: string;\n text: string;\n parse_mode: boolean;\n newline: BooleanString;\n}\n\nexport type BooleanString = 'false' | 'true';\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 NavigationRow {\n value: string;\n call: string;\n text: string;\n parse_mode: 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 calledValue: 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,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "telegram-menu",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.4.0",
|
|
5
5
|
"news": {
|
|
6
|
+
"2.4.0": {
|
|
7
|
+
"en": "FIX: Error returnText is empty\nFEAT: Extension for get by function \nFIX: Errors reported by sentry",
|
|
8
|
+
"de": "FIX: Fehlerrückgabe Text ist leer\nFEAT: Erweiterung um Funktion zu erhalten\nFIX: Fehler, die von sentry gemeldet werden",
|
|
9
|
+
"ru": "FIX: Возвращение ошибки Текст пустой\nFEAT: расширение для получения по функции\nFIX: Ошибки, о которых сообщил часовой",
|
|
10
|
+
"pt": "FIX: Retorno de erro O texto está vazio\nFEAT: Extensão para obter por função\nFIX: Erros reportados por remetente",
|
|
11
|
+
"nl": "FIX: Fout bij terugsturen Tekst is leeg\nFEAT: Uitbreiding voor get by functie\nFIX: Fouten gemeld door de wachtdienst",
|
|
12
|
+
"fr": "FIX : retour d'erreur Le texte est vide\nFEAT: Extension pour obtenir par fonction\nFIX : Erreurs signalées par sentinelle",
|
|
13
|
+
"it": "FIX: Ritorno errore Il testo è vuoto\nFEAT: Estensione per ottenere per funzione\nFIX: Errori segnalati dalla sentinella",
|
|
14
|
+
"es": "FIX: Retorno de error El texto está vacío\nFEAT: Extensión para obtener por función\nFIX: Errores reportados por centinela",
|
|
15
|
+
"pl": "FIX: Zwrot błędu Tekst jest pusty\nFEAT: Rozszerzenie dla uzyskania przez funkcję\nFIX: Błędy zgłaszane przez wartownika",
|
|
16
|
+
"uk": "FIX: повернення помилки Текст порожній\nFEAT: Розширення для отримання за допомогою функції\nFIX: Помилки, які повідомляються відправником",
|
|
17
|
+
"zh-cn": "FIX: 返回错误 文本为空\nFEAT: 按函数获取的扩展\nFIX:哨兵报告的错误"
|
|
18
|
+
},
|
|
6
19
|
"2.3.1": {
|
|
7
20
|
"en": "FIX: #309 SetState only sets false\nFIX: #311 Delete does not navigate",
|
|
8
21
|
"de": "FIX: #309 SetState setzt nur falsch\nFIX: #311 Löschen navigiert nicht",
|
|
@@ -80,19 +93,6 @@
|
|
|
80
93
|
"pl": "FIX: Nieskończona pętla na otwartych zdarzeniach\nFIX: # 248 Czas konwersji błędów",
|
|
81
94
|
"uk": "FIX: Нескінченна петля на відкритих заходах\nFIX: #248 Час перетворення помилки",
|
|
82
95
|
"zh-cn": "FIX:关于公开事件的无限循环\nFIX: # 248 转换时间出错"
|
|
83
|
-
},
|
|
84
|
-
"2.2.0": {
|
|
85
|
-
"en": "FEAT: #237 Navigate by nav-button-click to action\nFIX: Cannot get value false in return text\nFIX: Delete row in Actions\nFIX: HttpRequest\nFEAT: Navigation styling and selectable menus",
|
|
86
|
-
"de": "FEAT: #237 Navigieren Sie mit nav-button-klick auf Aktion\nFIX: Kann nicht Wert falsch im Rückgabetext erhalten\nFIX: Zeile in Aktion löschen\nFIX: HttpRequest\nFEAT: Navigations-Styling und wählbare Menüs",
|
|
87
|
-
"ru": "FEAT: #237 Навигай на навигай-кнопкой мыши к действию\nFIX: не может получить значение ложное в ответном тексте\nFIX: Исключить строку в действии\nFIX: HttpRequest\nFEAT: Навигационный стиль и подбираемые меню",
|
|
88
|
-
"pt": "FEAT: #237 Navegue por nav-button-clique para ação\nFIX: Não pode obter valor falso em texto de retorno\nFIX: Excluir linha em Ações\nFIX: HttpRequest\nFEAT: Estilo de navegação e menus selecionáveis",
|
|
89
|
-
"nl": "FEAT: #237 Navigeren met nav-knop-klik op actie\nFIX: kan waarde niet foutief krijgen in de terugzendingstekst\nFIX: rij in acties verwijderen\nFIX: HttpRequest\nFEAT: Navigatie styling en selecteerbare menu's",
|
|
90
|
-
"fr": "FEAT: #237 Naviguez par nav-bouton-cliquez vers l'action\nFIX: Impossible d'obtenir la valeur false dans le texte de retour\nFIX: Supprimer la ligne dans Actions\nDemande Http\nFEAT: Style de navigation et menus sélectionnables",
|
|
91
|
-
"it": "FEAT: #237 Navigare da nav-button-click all'azione\nFIX: Non può ottenere valore falso nel testo di ritorno\nFIX: Elimina la riga in Azioni\nFIX: HttpRequest\nFEAT: menu di navigazione e selezionabili",
|
|
92
|
-
"es": "FEAT: #237 Navigate by nav-button-click to action\nFIX: No se puede obtener valor falso en el texto de retorno\nFIX: Eliminar fila en Acciones\nFIX: HtpRequest\nFEAT: Estilismo de navegación y menús seleccionables",
|
|
93
|
-
"pl": "FEAT: # 237\nFIX: Nie można uzyskać wartości false w zwrotnym tekście\nFIX: Usuń wiersz w działaniach\nFIX: HttpRequest\nFEAT: Stylizacja nawigacyjna i menu do wyboru",
|
|
94
|
-
"uk": "FEAT: #237 Нейгат від nav-button-click до дії\nFIX: Неможливо отримати значення помилково в поверненні тексту\nFIX: Видалити ряд в дії\nFIX: HttpRequest\nFEAT: Налаштування навігації та вибіркові меню",
|
|
95
|
-
"zh-cn": "FEAT: # 237 导航通过导航按钮点击动作\nFIX: 无法在返回文本中获取错误值\nFIX: 删除动作中的行\nFIX: Http 请求\nFEAT:导航样式和可选菜单"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|