iobroker.telegram-menu
Advanced tools
Comparing version 0.6.4 to 0.6.5
@@ -9,5 +9,5 @@ /*global $*/ | ||
} | ||
function userSelectionTelegram(user, menu) { | ||
function userSelectionTelegram(user, menu, chatID) { | ||
$(`#group_UserInput .${menu}`) | ||
.append(/*html*/ `<div data-name="${user}"><p>${user}</p><label><input data-menu="${user}" type="checkbox" class="filled-in userSelection" /><span></span></label></div> | ||
.append(/*html*/ `<div data-name="${user}" data-id="${chatID}"><p>${user}</p><label><input data-menu="${user}" type="checkbox" class="filled-in userSelection" /><span></span></label></div> | ||
`); | ||
@@ -14,0 +14,0 @@ } |
@@ -1,2 +0,2 @@ | ||
/*global newUserBtn,getUsersFromTelegram ,navElement, userSelectionTelegram ,actionElement,createSelectTrigger,newTableRow_Action,newTableRow_Action,newTrInAction,userActivCheckbox,$, groupUserInput*/ | ||
/*global deleteDoubleEntrysInArray,sortArray,newUserBtn,getUsersFromTelegram ,navElement, userSelectionTelegram ,actionElement,createSelectTrigger,newTableRow_Action,newTableRow_Action,newTrInAction,userActivCheckbox,$, groupUserInput*/ | ||
/*eslint no-unused-vars: ["error", { "varsIgnorePattern": "disableEnableInputField|isStringEmty|generate|create|set|fill|reset|add|show|ins|table|get|new|show|checkValueModal|disable|checkUpAndDownArrowBtn|"}]*/ | ||
@@ -37,3 +37,3 @@ | ||
*/ | ||
function removeUsedTrigger(triggers, activemenu) { | ||
function splitUsedUnusedTrigger(triggers, activemenu) { | ||
const usedTriggers = []; | ||
@@ -68,5 +68,5 @@ const list = [ | ||
if (typeof value == "string") value = value.trim(); | ||
usedTriggers.push(value); | ||
if (typeof value === "string" && triggers.includes(value)) { | ||
triggers.splice(triggers.indexOf(value), 1); | ||
usedTriggers.push(value); | ||
} | ||
@@ -83,2 +83,3 @@ }); | ||
}); | ||
if (!$(`#group_active_checkbox div.${activeMenu} input`).prop("checked") || checked) { | ||
@@ -138,22 +139,3 @@ $("#userSelection").addClass("hide"); | ||
} | ||
/** | ||
* | ||
* @param {string} classes Class to browse for empty String | ||
* @returns boolean True Everything is ok | ||
*/ | ||
// @ts-ignore | ||
function isStringEmty(classes) { | ||
let allOk = true; | ||
// @ts-ignore | ||
$(classes).each(function (key, element) { | ||
if (element.value == "") { | ||
$(element).parent().addClass("bg-error"); | ||
allOk = false; | ||
} else { | ||
$(element).parent().removeClass("bg-error"); | ||
} | ||
}); | ||
return allOk; | ||
} | ||
// @ts-ignore | ||
function checkUpAndDownArrowBtn(activeuser) { | ||
@@ -230,12 +212,15 @@ const lengthOfNavList = $(`tbody#${activeuser}.visibilityArrowBtn tr`).length - 1; | ||
const userListe = []; | ||
const userListWithChatID = []; | ||
for (const user in usersInTelegram) { | ||
userListe.push(usersInTelegram[user]["firstName"]); | ||
userListWithChatID.push({ name: usersInTelegram[user]["firstName"], chatID: user }); | ||
} | ||
$(menus).each(function (key, menu) { | ||
$(userListe).each(function (key, user) { | ||
$(userListWithChatID).each(function (key, user) { | ||
// @ts-ignore | ||
userSelectionTelegram(user, menu); | ||
userSelectionTelegram(user.name, menu, user.chatID); | ||
}); | ||
checkCheckbox(menu, userListe, userinGroup); | ||
}); | ||
return userListWithChatID; | ||
} | ||
@@ -347,8 +332,8 @@ | ||
* | ||
* @param {Array} checkbox Entrys with Checkbox Values | ||
* @param {Array} checkboxes Entrys with Checkbox Values | ||
*/ | ||
// @ts-ignore | ||
function setCheckbox(checkbox) { | ||
Object.keys(checkbox).forEach((key) => { | ||
if (checkbox[key]) { | ||
function setCheckbox(checkboxes) { | ||
Object.keys(checkboxes).forEach((key) => { | ||
if (checkboxes[key]) { | ||
$(`#${key}`).prop("checked", true); | ||
@@ -383,9 +368,7 @@ } else $(`#${key}`).prop("checked", false); | ||
//TODO - Submenu Trigger | ||
//ANCHOR - Trigger erstellen | ||
// @ts-ignore | ||
function generateSelectTrigger(activeMenu, menus) { | ||
const submenu = checkSubMenu(activeMenu); | ||
let list = []; | ||
let usedAndNotUsedTrigger = {}; | ||
if (submenu) { | ||
@@ -406,6 +389,7 @@ const activeUserList = getAllCheckedUserInMenu(activeMenu); | ||
list = list.concat(splitTextInArray(menu)); | ||
const usedAndNotUsedTrigger = splitUsedUnusedTrigger(list, menu); | ||
list = usedAndNotUsedTrigger.triggers; | ||
// @ts-ignore | ||
list = deleteDoubleEntrysInArray(list); | ||
list = deleteUnnessesaryElements(list); | ||
const usedAndNotUsedTrigger = removeUsedTrigger(list, menu); | ||
list = usedAndNotUsedTrigger.triggers; | ||
usedAndNotUsedTrigger.usedTriggers.forEach(function (element) { | ||
@@ -419,3 +403,2 @@ if (usedTriggers.includes(element)) { | ||
if (!triggerInUse) { | ||
console.log(usedTriggers); | ||
if (usedTriggers.length != 0) usedTriggers.concat(usedAndNotUsedTrigger.usedTriggers); | ||
@@ -430,9 +413,11 @@ else usedTriggers = usedAndNotUsedTrigger.usedTriggers; | ||
}); | ||
} else list = splitTextInArray(activeMenu); | ||
list = deleteDoubleEntrysInArray(list); | ||
list = deleteUnnessesaryElements(list); | ||
const usedAndNotUsedTrigger = removeUsedTrigger(list, activeMenu); | ||
list = usedAndNotUsedTrigger.triggers; | ||
} else { | ||
list = splitTextInArray(activeMenu); | ||
usedAndNotUsedTrigger = splitUsedUnusedTrigger(list, activeMenu); | ||
list = usedAndNotUsedTrigger.triggers; | ||
// @ts-ignore | ||
list = deleteDoubleEntrysInArray(list); | ||
list = deleteUnnessesaryElements(list); | ||
} | ||
// @ts-ignore | ||
list = sortArray(list); | ||
@@ -446,5 +431,2 @@ // HTML Elemente löschen und neu aufbauen | ||
function deleteDoubleEntrysInArray(arr) { | ||
return arr.filter((item, index) => arr.indexOf(item) === index); | ||
} | ||
function deleteUnnessesaryElements(list) { | ||
@@ -455,3 +437,2 @@ const newlist = []; | ||
if (e.includes("menu:")) e = e.split(":")[2]; | ||
newlist.push(e); | ||
@@ -462,21 +443,3 @@ } | ||
} | ||
/** | ||
* | ||
* @param {any[]} arr | ||
* @returns Sorted Array | ||
*/ | ||
function sortArray(arr) { | ||
arr.sort((a, b) => { | ||
// @ts-ignore | ||
const lowerCaseA = a.toLowerCase(); | ||
// @ts-ignore | ||
const lowerCaseB = b.toLowerCase(); | ||
if (lowerCaseA < lowerCaseB) return -1; | ||
if (lowerCaseA > lowerCaseB) return 1; | ||
return 0; | ||
}); | ||
return arr; | ||
} | ||
// @ts-ignore | ||
@@ -483,0 +446,0 @@ function fillTable(id, data, newTableRow_Nav, users) { |
{ | ||
"common": { | ||
"name": "telegram-menu", | ||
"version": "0.6.4", | ||
"news": { | ||
"0.6.4": { | ||
"en": "Trigger check, used triggers are no longer available in action, in nav it is visualized that the trigger is already in use", | ||
"de": "Trigger-Check, verwendete Trigger sind nicht mehr in Aktion, in nav wird visualisiert, dass der Trigger bereits im Einsatz ist", | ||
"ru": "Проверка Trigger, используемые триггеры больше не доступны в действии, в nav визуализируется, что триггер уже используется", | ||
"pt": "Verificação de gatilho, gatilhos usados não estão mais disponíveis em ação, nav é visualizado que o gatilho já está em uso", | ||
"nl": "Trigger controle, gebruikte triggers zijn niet meer beschikbaar in actie, in Nav is het gevisualiseerd dat de trekker al gebruikt is", | ||
"fr": "Trigger check, triggers utilisés ne sont plus disponibles en action, dans nav il est visualisé que le trigger est déjà en service", | ||
"it": "Controllo del trigger, i trigger utilizzati non sono più disponibili in azione, in nav è visualizzato che il trigger è già in uso", | ||
"es": "Comprobación del desencadenante, los disparadores usados ya no están disponibles en acción, en nav se visualiza que el gatillo ya está en uso", | ||
"pl": "Kontrola Triggera nie jest już dostępna w akcji, w nav jest wizualizowana, że wyzwalanie jest już w użyciu", | ||
"uk": "Перевірка тригера, використовувані тригери більше не доступні в дії, в нав він візуалізований, що тригер вже в використанні", | ||
"zh-cn": "突然的检查不再可供采取行动,在无知的情况下,触发者已经使用。" | ||
}, | ||
"0.6.3": { | ||
"en": "user check, least one user must be checked", | ||
"de": "benutzerüberprüfung, mindestens ein benutzer muss überprüft werden", | ||
"ru": "проверка пользователя, хотя бы один пользователь должен быть проверен", | ||
"pt": "verificação do usuário, pelo menos um usuário deve ser verificado", | ||
"nl": "eén gebruiker moet gecontroleerd worden", | ||
"fr": "contrôle utilisateur, le moins d'un utilisateur doit être vérifié", | ||
"it": "controllo utente, almeno un utente deve essere controllato", | ||
"es": "control de usuario, al menos un usuario debe ser revisado", | ||
"pl": "wskaźnik użytkownika musi być sprawdzany przynajmniej jeden użytkownik", | ||
"uk": "перевірка користувачів, принаймні один користувач повинен перевіряти", | ||
"zh-cn": "用户检查,至少必须检查一名用户。" | ||
}, | ||
"0.6.2": { | ||
"en": "Active Menu Output fixed\nchange instance, user will be load from new instance", | ||
"de": "Aktive Menüausgabe fest\nänderungsinstanz, benutzer wird aus neuer instanz geladen", | ||
"ru": "Активное меню Выход фиксированный\nизменить пример, пользователь будет загружаться из нового экземпляра", | ||
"pt": "Saída do menu ativo fixo\ninstância de mudança, o usuário será carregado de nova instância", | ||
"nl": "Active Menu Output gerepareerd\nverandering instance, gebruiker zal worden geladen van nieuwe instanties", | ||
"fr": "Active Menu Sortie fixe\nchangement d'instance, l'utilisateur sera chargé de la nouvelle instance", | ||
"it": "Uscita menu attivo fisso\ncambiamento istanza, l'utente verrà caricato da nuova istanza", | ||
"es": "Juego de menú activo\ninstancia de cambio, el usuario será cargado desde nueva instancia", | ||
"pl": "Aktywny Menu Output\nna przykład, użytkownik może być obciążony nowymi instancjami", | ||
"uk": "Активне меню Вихід фіксований\nзміна екземпляра, користувач буде завантажуватися з нового екземпляра", | ||
"zh-cn": "积极产出\n例如,用户将从新情况中负荷" | ||
}, | ||
"0.6.1": { | ||
"en": "bug fixed style", | ||
"de": "fehler behoben stil", | ||
"ru": "баг фиксированный стиль", | ||
"pt": "bug estilo fixo", | ||
"nl": "quality over quantity (qoq) releases vertaling:", | ||
"fr": "bug fixed style", | ||
"it": "bug stile fisso", | ||
"es": "estilo fijo", | ||
"pl": "styl gry", | ||
"uk": "виправлений стиль помилок", | ||
"zh-cn": "b 固定格式" | ||
}, | ||
"0.6.0": { | ||
"en": "checkbox for Telegram Users\nstyling\nsmall fixes\nAdd Row Button in Nav for every Row\nMore Groups with the same User\nTrigger generates without saving", | ||
"de": "checkbox für Telegram-Benutzer\nstyling\nkleine fixierungen\nFügen Sie Row Button in Nav für jede Row\nWeitere Gruppen mit demselben Benutzer\nTrigger erzeugt ohne Speicher", | ||
"ru": "checkbox для пользователей Telegram\nстайлинг\nнебольшие исправления\nДобавьте Row Button в Nav для каждого Row\nБольше групп с тем же пользователем\nTrigger генерирует без экономии", | ||
"pt": "caixa de seleção para Usuários de Telegram\nestilo\npequenas correções\nAdicionar botão de linha em Nav para cada linha\nMais Grupos com o mesmo Usuário\nTrigger gera sem salvar", | ||
"nl": "controlebox van Telegram Users\nstyling\nkleine fixes\nAdd Row Button voor elke Row\nMeer groepen met dezelfde User\nTrigger genereert zonder spaargeld", | ||
"fr": "case à cocher pour les utilisateurs de télégramme\nstyling\npetites corrections\nAjouter Row Button en Nav pour chaque Row\nPlus de groupes avec le même Utilisateur\nTrigger génère sans sauver", | ||
"it": "casella di controllo per utenti Telegram\nstile\npiccole correzioni\nAggiungi pulsante di riga in Nav per ogni riga\nAltri gruppi con lo stesso utente\nTrigger genera senza salvare", | ||
"es": "checkbox for Telegram Users\nstyling\npequeños accesorios\nAñadir Row Button en Nav para cada fila\nMás Grupos con el mismo Usuario\nTrigger genera sin salvar", | ||
"pl": "okładka\nstylistyka\ndrobne rozwiązanie\nAdd Row Button (ang.)\nWięcej grup z tymi samymi grupami User\nTrigger generuje bez oszczędzania", | ||
"uk": "поштова скринька для користувачів Telegram\nстрахування\nмаленькі кріплення\nДодати кнопку Row в Nav для кожного рядка\nБільше груп з тим самим Користувачем\nТригер генерує без збереження", | ||
"zh-cn": "电报用户检查箱\n处理\n小型配件\n增加纳维州的Row Button\n与同一用户的更多集团\n不节约的漏洞" | ||
}, | ||
"0.5.1": { | ||
"en": "sent to the wrong instance, fixed", | ||
"de": "an die falsche instanz gesendet, fixiert", | ||
"ru": "отправлено в неправильный экземпляр, исправлено", | ||
"pt": "enviado para a instância errada, corrigido", | ||
"nl": "verzonden naar de verkeerde instantie", | ||
"fr": "envoyé à la mauvaise instance, fixe", | ||
"it": "inviato all'istanza sbagliata, fisso", | ||
"es": "enviado al caso equivocado, fijo", | ||
"pl": "wysłany do niewłaściwej instancji, ustalony", | ||
"uk": "відправлений на неправильний екземпляр, фіксований", | ||
"zh-cn": "向错误案件发出的固定通知" | ||
}, | ||
"0.5.0": { | ||
"en": "trigger avoid duplicate entries and sort alphabetical\nadapter stops responding after some time, fixed #42\ngenerate Trigger in Action, fixed\nmath value for getstate\nsettings instance #41, menus, fixed\nno spellcheck for input fields\nmenu go back to last Sides", | ||
"de": "trigger vermeiden doppelte einträge und sortieren alphabetisch\nadapter stoppt nach einiger zeit, fixiert #42\ntrigger in Aktion generieren, fixiert\nmath wert für getstate\neinstellungen instanz #41, menüs, fixiert\nkeine rechtschreibprüfung für eingabefelder\nmenü zurück zu den letzten Seiten", | ||
"ru": "триггер избегает дублирования записей и сортировать алфавитный\nадаптер останавливается после некоторого времени, фиксированный #42\nгенерировать триггер в действии, фиксированный\nматематическое значение для getstate\nнастройки экземпляра #41, меню, фиксированные\nбез орфографии для входящих полей\nменю вернуться к последним Сторонам", | ||
"pt": "gatilho evitar entradas duplicadas e classificar alfabético\nadaptador pára de responder após algum tempo, fixo #42\ngerar gatilho em Ação, fixo\nvalor de matemática para getstate\nsetting instance #41, menus, fixo\nsem verificação ortográfica para campos de entrada\nmenu voltar para os últimos lados", | ||
"nl": "de trekker ontwijkt duplicaat en alfabetische\nadapter stopt met reageren na enige tijd, gerepareerd #42\ngenereerde Trigger in Actie, gerepareerd\nwiskunde waarde voor onroerend goed\nvertaling:\ngeen spellcheck voor input velden\nmenu gaat terug naar de laatste Sides", | ||
"fr": "déclencheur éviter les doubles entrées et trier alphabétique\nadaptateur s'arrête après un certain temps, fixe #42\ngénérer Trigger en action, fixe\nmath value for getstate\nparamètres instance #41, menus, fixe\npas de sortcheck pour les champs d'entrée\nmenu retourner aux derniers côtés", | ||
"it": "trigger evitare voci duplicate e ordinare alfabetico\nadattatore smette di rispondere dopo qualche tempo, fisso #42\ngenerare Trigger in Azione, fisso\nvalore matematico per getstate\nimpostazioni istanza #41, menu, fisso\nnessun spellcheck per i campi di input\nmenu torna all'ultimo lato", | ||
"es": "gatillo evitar entradas duplicadas y ordenar entradas alfabéticas\nadaptador deja de responder después de algún tiempo, fijo #42\ngenerar Trigger en Acción, fijo\nvalor matemático para getstate\nconfiguración instancia #41, menús, fijo\nno hechizo para campos de entrada\nmenu go back to last Sides", | ||
"pl": "wykorzystywanie wyjściowe unikanie duplikacji wpisów i alfabetyzacji\npo pewnym czasie przerwy reagują na stałe #42\ngeneruje Triggera w akcji\nwartość matrycowa\nna przykład #41, menus, ustawiony\nzaklęcie dla pól wejściowych\nmenu wraca do ostatniej strony", | ||
"uk": "уникнути дублікатів записів і сортування алфавіту\nадаптер припиняє реагувати на деякий час, фіксований #42\nгенерувати Трігер в дії, фіксований\nматематичне значення для getstate\nзамість налаштувань #41, меню, фіксовані\nвідсутність орцепції для вхідних полів\nім'я користувача", | ||
"zh-cn": "2. 避免重复物品和名称\n适应者在一段时间后停止作出反应,固定的编号为42\na. 行动的三倍,固定\n获取国产值\n例如第41号、男性、固定地点\n没有对投入领域进行明确的检查\n男子回到最后的Sides。" | ||
} | ||
}, | ||
"titleLang": { | ||
"en": "Telegram Menu", | ||
"de": "Telegramm-Menü", | ||
"ru": "Меню телеграммы", | ||
"pt": "Menu Telegram", | ||
"nl": "Telegram-menu", | ||
"fr": "Menu Télégramme", | ||
"it": "Menù telegramma", | ||
"es": "Menú de telegramas", | ||
"pl": "menu telegramu", | ||
"zh-cn": "电报菜单", | ||
"uk": "Меню Telegram" | ||
}, | ||
"desc": { | ||
"en": "Easily create Telegram Menus", | ||
"de": "Erstellen Sie ganz einfach Telegrammmenüs", | ||
"ru": "Легко создавать меню Telegram", | ||
"pt": "Crie facilmente menus de telegrama", | ||
"nl": "Maak eenvoudig Telegram-menu's", | ||
"fr": "Créez facilement des menus de télégramme", | ||
"it": "Crea facilmente menu di Telegram", | ||
"es": "Crea fácilmente menús de Telegram", | ||
"pl": "Z łatwością twórz menu telegramu", | ||
"zh-cn": "轻松创建电报菜单", | ||
"uk": "Легко створюйте меню Telegram" | ||
}, | ||
"authors": [ | ||
"MiRo1310 <michael.roling@gmx.de>" | ||
], | ||
"keywords": [ | ||
"telegram", | ||
"menu" | ||
], | ||
"license": "MIT", | ||
"platform": "Javascript/Node.js", | ||
"main": "main.js", | ||
"icon": "telegram-menu.png", | ||
"enabled": true, | ||
"messagebox": true, | ||
"extIcon": "https://raw.githubusercontent.com/MiRo1310/ioBroker.telegram-menu/main/admin/telegram-menu.png", | ||
"readme": "https://github.com/MiRo1310/ioBroker.telegram-menu/blob/main/README.md", | ||
"loglevel": "info", | ||
"mode": "daemon", | ||
"type": "messaging", | ||
"compact": true, | ||
"connectionType": "local", | ||
"dataSource": "poll", | ||
"adminUI": { | ||
"config": "materialize" | ||
}, | ||
"dependencies": [ | ||
{ | ||
"js-controller": ">=3.3.22" | ||
} | ||
], | ||
"globalDependencies": [ | ||
{ | ||
"admin": ">=5.0.0", | ||
"telegram": ">=1.15.0" | ||
} | ||
] | ||
}, | ||
"native": { | ||
"nav": {}, | ||
"instance": "", | ||
"data": {}, | ||
"checkbox": [], | ||
"usersForGlobal": "", | ||
"users": [], | ||
"startsides": [], | ||
"tokenGrafana": "", | ||
"directory": "", | ||
"userActiveCheckbox": [], | ||
"usersInGroup": {}, | ||
"textNoEntry": "" | ||
}, | ||
"objects": [], | ||
"instanceObjects": [ | ||
{ | ||
"_id": "info", | ||
"type": "channel", | ||
"common": { | ||
"name": "Information" | ||
}, | ||
"native": {} | ||
}, | ||
{ | ||
"_id": "info.connection", | ||
"type": "state", | ||
"common": { | ||
"role": "indicator.connected", | ||
"name": "Device or service connected", | ||
"type": "boolean", | ||
"read": true, | ||
"write": false, | ||
"def": false | ||
}, | ||
"native": {} | ||
} | ||
] | ||
"common": { | ||
"name": "telegram-menu", | ||
"version": "0.6.5", | ||
"news": { | ||
"0.6.5": { | ||
"en": "get user by chatID and send back to this chatID", | ||
"de": "benutzer per chatID ermitteln und zurück senden an diese chatID", | ||
"ru": "получить пользователя по чатID и отправить обратно в этот чатID", | ||
"pt": "obter usuário por chatID e enviar de volta para este chatID", | ||
"nl": "haal gebruiker van chatID en stuur terug naar dit chatID", | ||
"fr": "obtenir utilisateur par chatID et renvoyer à ce chatID", | ||
"it": "ottenere l'utente da chatID e tornare a questo chatID", | ||
"es": "obtener usuario por chatID y enviar de nuevo a este chatID", | ||
"pl": "użytkowanie przez czat i wysyłane do tego czatID", | ||
"uk": "отримати користувач по chatID і відправити назад в цей чатID", | ||
"zh-cn": "被混乱者利用,然后再送给这一混乱的裁研所。" | ||
}, | ||
"0.6.4": { | ||
"en": "Trigger check, used triggers are no longer available in action, in nav it is visualized that the trigger is already in use", | ||
"de": "Trigger-Check, verwendete Trigger sind nicht mehr in Aktion, in nav wird visualisiert, dass der Trigger bereits im Einsatz ist", | ||
"ru": "Проверка Trigger, используемые триггеры больше не доступны в действии, в nav визуализируется, что триггер уже используется", | ||
"pt": "Verificação de gatilho, gatilhos usados não estão mais disponíveis em ação, nav é visualizado que o gatilho já está em uso", | ||
"nl": "Trigger controle, gebruikte triggers zijn niet meer beschikbaar in actie, in Nav is het gevisualiseerd dat de trekker al gebruikt is", | ||
"fr": "Trigger check, triggers utilisés ne sont plus disponibles en action, dans nav il est visualisé que le trigger est déjà en service", | ||
"it": "Controllo del trigger, i trigger utilizzati non sono più disponibili in azione, in nav è visualizzato che il trigger è già in uso", | ||
"es": "Comprobación del desencadenante, los disparadores usados ya no están disponibles en acción, en nav se visualiza que el gatillo ya está en uso", | ||
"pl": "Kontrola Triggera nie jest już dostępna w akcji, w nav jest wizualizowana, że wyzwalanie jest już w użyciu", | ||
"uk": "Перевірка тригера, використовувані тригери більше не доступні в дії, в нав він візуалізований, що тригер вже в використанні", | ||
"zh-cn": "突然的检查不再可供采取行动,在无知的情况下,触发者已经使用。" | ||
}, | ||
"0.6.3": { | ||
"en": "user check, least one user must be checked", | ||
"de": "benutzerüberprüfung, mindestens ein benutzer muss überprüft werden", | ||
"ru": "проверка пользователя, хотя бы один пользователь должен быть проверен", | ||
"pt": "verificação do usuário, pelo menos um usuário deve ser verificado", | ||
"nl": "eén gebruiker moet gecontroleerd worden", | ||
"fr": "contrôle utilisateur, le moins d'un utilisateur doit être vérifié", | ||
"it": "controllo utente, almeno un utente deve essere controllato", | ||
"es": "control de usuario, al menos un usuario debe ser revisado", | ||
"pl": "wskaźnik użytkownika musi być sprawdzany przynajmniej jeden użytkownik", | ||
"uk": "перевірка користувачів, принаймні один користувач повинен перевіряти", | ||
"zh-cn": "用户检查,至少必须检查一名用户。" | ||
}, | ||
"0.6.2": { | ||
"en": "Active Menu Output fixed\nchange instance, user will be load from new instance", | ||
"de": "Aktive Menüausgabe fest\nänderungsinstanz, benutzer wird aus neuer instanz geladen", | ||
"ru": "Активное меню Выход фиксированный\nизменить пример, пользователь будет загружаться из нового экземпляра", | ||
"pt": "Saída do menu ativo fixo\ninstância de mudança, o usuário será carregado de nova instância", | ||
"nl": "Active Menu Output gerepareerd\nverandering instance, gebruiker zal worden geladen van nieuwe instanties", | ||
"fr": "Active Menu Sortie fixe\nchangement d'instance, l'utilisateur sera chargé de la nouvelle instance", | ||
"it": "Uscita menu attivo fisso\ncambiamento istanza, l'utente verrà caricato da nuova istanza", | ||
"es": "Juego de menú activo\ninstancia de cambio, el usuario será cargado desde nueva instancia", | ||
"pl": "Aktywny Menu Output\nna przykład, użytkownik może być obciążony nowymi instancjami", | ||
"uk": "Активне меню Вихід фіксований\nзміна екземпляра, користувач буде завантажуватися з нового екземпляра", | ||
"zh-cn": "积极产出\n例如,用户将从新情况中负荷" | ||
}, | ||
"0.6.1": { | ||
"en": "bug fixed style", | ||
"de": "fehler behoben stil", | ||
"ru": "баг фиксированный стиль", | ||
"pt": "bug estilo fixo", | ||
"nl": "quality over quantity (qoq) releases vertaling:", | ||
"fr": "bug fixed style", | ||
"it": "bug stile fisso", | ||
"es": "estilo fijo", | ||
"pl": "styl gry", | ||
"uk": "виправлений стиль помилок", | ||
"zh-cn": "b 固定格式" | ||
}, | ||
"0.6.0": { | ||
"en": "checkbox for Telegram Users\nstyling\nsmall fixes\nAdd Row Button in Nav for every Row\nMore Groups with the same User\nTrigger generates without saving", | ||
"de": "checkbox für Telegram-Benutzer\nstyling\nkleine fixierungen\nFügen Sie Row Button in Nav für jede Row\nWeitere Gruppen mit demselben Benutzer\nTrigger erzeugt ohne Speicher", | ||
"ru": "checkbox для пользователей Telegram\nстайлинг\nнебольшие исправления\nДобавьте Row Button в Nav для каждого Row\nБольше групп с тем же пользователем\nTrigger генерирует без экономии", | ||
"pt": "caixa de seleção para Usuários de Telegram\nestilo\npequenas correções\nAdicionar botão de linha em Nav para cada linha\nMais Grupos com o mesmo Usuário\nTrigger gera sem salvar", | ||
"nl": "controlebox van Telegram Users\nstyling\nkleine fixes\nAdd Row Button voor elke Row\nMeer groepen met dezelfde User\nTrigger genereert zonder spaargeld", | ||
"fr": "case à cocher pour les utilisateurs de télégramme\nstyling\npetites corrections\nAjouter Row Button en Nav pour chaque Row\nPlus de groupes avec le même Utilisateur\nTrigger génère sans sauver", | ||
"it": "casella di controllo per utenti Telegram\nstile\npiccole correzioni\nAggiungi pulsante di riga in Nav per ogni riga\nAltri gruppi con lo stesso utente\nTrigger genera senza salvare", | ||
"es": "checkbox for Telegram Users\nstyling\npequeños accesorios\nAñadir Row Button en Nav para cada fila\nMás Grupos con el mismo Usuario\nTrigger genera sin salvar", | ||
"pl": "okładka\nstylistyka\ndrobne rozwiązanie\nAdd Row Button (ang.)\nWięcej grup z tymi samymi grupami User\nTrigger generuje bez oszczędzania", | ||
"uk": "поштова скринька для користувачів Telegram\nстрахування\nмаленькі кріплення\nДодати кнопку Row в Nav для кожного рядка\nБільше груп з тим самим Користувачем\nТригер генерує без збереження", | ||
"zh-cn": "电报用户检查箱\n处理\n小型配件\n增加纳维州的Row Button\n与同一用户的更多集团\n不节约的漏洞" | ||
}, | ||
"0.5.1": { | ||
"en": "sent to the wrong instance, fixed", | ||
"de": "an die falsche instanz gesendet, fixiert", | ||
"ru": "отправлено в неправильный экземпляр, исправлено", | ||
"pt": "enviado para a instância errada, corrigido", | ||
"nl": "verzonden naar de verkeerde instantie", | ||
"fr": "envoyé à la mauvaise instance, fixe", | ||
"it": "inviato all'istanza sbagliata, fisso", | ||
"es": "enviado al caso equivocado, fijo", | ||
"pl": "wysłany do niewłaściwej instancji, ustalony", | ||
"uk": "відправлений на неправильний екземпляр, фіксований", | ||
"zh-cn": "向错误案件发出的固定通知" | ||
} | ||
}, | ||
"titleLang": { | ||
"en": "Telegram Menu", | ||
"de": "Telegramm-Menü", | ||
"ru": "Меню телеграммы", | ||
"pt": "Menu Telegram", | ||
"nl": "Telegram-menu", | ||
"fr": "Menu Télégramme", | ||
"it": "Menù telegramma", | ||
"es": "Menú de telegramas", | ||
"pl": "menu telegramu", | ||
"zh-cn": "电报菜单", | ||
"uk": "Меню Telegram" | ||
}, | ||
"desc": { | ||
"en": "Easily create Telegram Menus", | ||
"de": "Erstellen Sie ganz einfach Telegrammmenüs", | ||
"ru": "Легко создавать меню Telegram", | ||
"pt": "Crie facilmente menus de telegrama", | ||
"nl": "Maak eenvoudig Telegram-menu's", | ||
"fr": "Créez facilement des menus de télégramme", | ||
"it": "Crea facilmente menu di Telegram", | ||
"es": "Crea fácilmente menús de Telegram", | ||
"pl": "Z łatwością twórz menu telegramu", | ||
"zh-cn": "轻松创建电报菜单", | ||
"uk": "Легко створюйте меню Telegram" | ||
}, | ||
"authors": ["MiRo1310 <michael.roling@gmx.de>"], | ||
"keywords": ["telegram", "menu"], | ||
"license": "MIT", | ||
"platform": "Javascript/Node.js", | ||
"main": "main.js", | ||
"icon": "telegram-menu.png", | ||
"enabled": true, | ||
"messagebox": true, | ||
"extIcon": "https://raw.githubusercontent.com/MiRo1310/ioBroker.telegram-menu/main/admin/telegram-menu.png", | ||
"readme": "https://github.com/MiRo1310/ioBroker.telegram-menu/blob/main/README.md", | ||
"loglevel": "info", | ||
"mode": "daemon", | ||
"type": "messaging", | ||
"compact": true, | ||
"connectionType": "local", | ||
"dataSource": "poll", | ||
"adminUI": { | ||
"config": "materialize" | ||
}, | ||
"dependencies": [ | ||
{ | ||
"js-controller": ">=3.3.22" | ||
} | ||
], | ||
"globalDependencies": [ | ||
{ | ||
"admin": ">=5.0.0", | ||
"telegram": ">=1.15.0" | ||
} | ||
] | ||
}, | ||
"native": { | ||
"nav": {}, | ||
"instance": "", | ||
"data": {}, | ||
"checkbox": [], | ||
"usersForGlobal": "", | ||
"users": [], | ||
"startsides": [], | ||
"tokenGrafana": "", | ||
"directory": "", | ||
"userActiveCheckbox": [], | ||
"usersInGroup": {}, | ||
"textNoEntry": "", | ||
"userListWithChatID": [] | ||
}, | ||
"objects": [], | ||
"instanceObjects": [ | ||
{ | ||
"_id": "info", | ||
"type": "channel", | ||
"common": { | ||
"name": "Information" | ||
}, | ||
"native": {} | ||
}, | ||
{ | ||
"_id": "info.connection", | ||
"type": "state", | ||
"common": { | ||
"role": "indicator.connected", | ||
"name": "Device or service connected", | ||
"type": "boolean", | ||
"read": true, | ||
"write": false, | ||
"def": false | ||
}, | ||
"native": {} | ||
} | ||
] | ||
} |
@@ -86,3 +86,13 @@ const sendToTelegram = require("./telegram").sendToTelegram; | ||
*/ | ||
const idBySelector = async (_this, selector, text, userToSend, newline) => { | ||
const idBySelector = async ( | ||
_this, | ||
selector, | ||
text, | ||
userToSend, | ||
newline, | ||
telegramInstance, | ||
one_time_keyboard, | ||
resize_keyboard, | ||
userListWithChatID, | ||
) => { | ||
let text2Send = ""; | ||
@@ -127,3 +137,12 @@ try { | ||
sendToTelegram(_this, userToSend, text2Send); | ||
sendToTelegram( | ||
_this, | ||
userToSend, | ||
text, | ||
undefined, | ||
telegramInstance, | ||
one_time_keyboard, | ||
resize_keyboard, | ||
userListWithChatID, | ||
); | ||
}) | ||
@@ -156,3 +175,2 @@ .catch((e) => { | ||
}; | ||
_this.log.debug("elementVal " + JSON.stringify(element.value)); | ||
}); | ||
@@ -159,0 +177,0 @@ return obj; |
@@ -6,3 +6,3 @@ const sendToTelegram = require("./telegram").sendToTelegram; | ||
function getstate(_this, part, userToSend, telegramInstance) { | ||
function getstate(_this, part, userToSend, telegramInstance, one_time_keyboard, resize_keyboard, userListWithChatID) { | ||
try { | ||
@@ -17,3 +17,13 @@ let text = ""; | ||
// const selector = id.replace(/\"/g, ""); | ||
idBySelector(_this, id, element.text, userToSend, element.newline); | ||
idBySelector( | ||
_this, | ||
id, | ||
element.text, | ||
userToSend, | ||
element.newline, | ||
telegramInstance, | ||
one_time_keyboard, | ||
resize_keyboard, | ||
userListWithChatID, | ||
); | ||
} else { | ||
@@ -55,3 +65,13 @@ _this.getForeignStateAsync(element.id).then((value) => { | ||
_this.log.debug("User to send: " + JSON.stringify(userToSend)); | ||
if (userToSend) sendToTelegram(_this, userToSend, text, undefined, telegramInstance); | ||
if (userToSend) | ||
sendToTelegram( | ||
_this, | ||
userToSend, | ||
text, | ||
undefined, | ||
telegramInstance, | ||
one_time_keyboard, | ||
resize_keyboard, | ||
userListWithChatID, | ||
); | ||
} | ||
@@ -58,0 +78,0 @@ i++; |
@@ -15,3 +15,12 @@ const setstate = require("./setstate").setstate; | ||
*/ | ||
function subMenu(_this, text, groupData, userToSend, instanceTelegram, resize_keyboard, one_time_keyboard) { | ||
function subMenu( | ||
_this, | ||
text, | ||
groupData, | ||
userToSend, | ||
instanceTelegram, | ||
resize_keyboard, | ||
one_time_keyboard, | ||
userListWithChatID, | ||
) { | ||
const splittetText = JSON.stringify(text).split(`"`)[1].split(":"); | ||
@@ -157,2 +166,3 @@ const callbackData = splittetText[1]; | ||
one_time_keyboard, | ||
userListWithChatID, | ||
); | ||
@@ -159,0 +169,0 @@ } |
@@ -19,2 +19,3 @@ /** | ||
one_time_keyboard = true, | ||
userListWithChatID, | ||
) { | ||
@@ -24,2 +25,6 @@ _this.log.debug("Send this Value : " + JSON.stringify(value)); | ||
_this.log.debug("Instance : " + JSON.stringify(instance)); | ||
let chatId = ""; | ||
userListWithChatID.forEach((element) => { | ||
if (element.name === user) chatId = element.chatID; | ||
}); | ||
if (keyboard.length == 0) { | ||
@@ -31,3 +36,3 @@ _this.sendTo( | ||
text: value, | ||
user: user, | ||
chatId: chatId, | ||
}, | ||
@@ -43,3 +48,3 @@ function (res) { | ||
{ | ||
user: user, | ||
chatId: chatId, | ||
text: value, | ||
@@ -58,6 +63,10 @@ reply_markup: { | ||
} | ||
function sendToTelegramSubmenu(_this, name, text, keyboard, instance = "telegram.0") { | ||
function sendToTelegramSubmenu(_this, user, text, keyboard, instance = "telegram.0", userListWithChatID) { | ||
let chatId = ""; | ||
userListWithChatID.forEach((element) => { | ||
if (element.name === user) chatId = element.chatID; | ||
}); | ||
_this.sendTo(instance, "send", { | ||
// chatId: chatId, | ||
name: name, | ||
chatId: chatId, | ||
// name: user, | ||
text: text, | ||
@@ -64,0 +73,0 @@ reply_markup: keyboard, |
54
main.js
@@ -71,2 +71,3 @@ "use strict"; | ||
const textNoEntryFound = this.config.textNoEntry; | ||
const userListWithChatID = this.config.userListWithChatID; | ||
const menu = { | ||
@@ -130,2 +131,3 @@ data: {}, | ||
backMenuFuc(this, startside, null, user); | ||
this.log.debug("User List " + JSON.stringify(userListWithChatID)); | ||
sendToTelegram( | ||
@@ -139,2 +141,3 @@ _this, | ||
one_time_keyboard, | ||
userListWithChatID, | ||
); | ||
@@ -154,3 +157,15 @@ }); | ||
const value = state.val; | ||
const user = value.slice(1, value.indexOf("]")); | ||
const chatID = await this.getForeignStateAsync( | ||
`${instanceTelegram}.communicate.requestChatId`, | ||
); | ||
let user; | ||
if (chatID) { | ||
this.log.debug("ChatID: " + JSON.stringify(chatID.val)); | ||
userListWithChatID.forEach((element) => { | ||
this.log.debug("element " + JSON.stringify(element)); | ||
if (element.chatID == chatID.val) user = element.name; | ||
this.log.debug("user " + JSON.stringify(user)); | ||
}); | ||
} | ||
const calledValue = value.slice(value.indexOf("]") + 1, value.length); | ||
@@ -187,3 +202,12 @@ this.log.debug( | ||
if (!dataFound && checkboxNoEntryFound) { | ||
sendToTelegram(this, userToSend, textNoEntryFound, undefined, instanceTelegram); | ||
sendToTelegram( | ||
this, | ||
userToSend, | ||
textNoEntryFound, | ||
undefined, | ||
instanceTelegram, | ||
resize_keyboard, | ||
one_time_keyboard, | ||
userListWithChatID, | ||
); | ||
} | ||
@@ -234,2 +258,5 @@ | ||
instanceTelegram, | ||
resize_keyboard, | ||
one_time_keyboard, | ||
userListWithChatID, | ||
); | ||
@@ -279,2 +306,3 @@ // Die Elemente auf die Reagiert wurde entfernen | ||
one_time_keyboard, | ||
userListWithChatID, | ||
); | ||
@@ -290,3 +318,11 @@ return true; | ||
} else if (part.getData) { | ||
getstate(_this, part, userToSend, instanceTelegram); | ||
getstate( | ||
_this, | ||
part, | ||
userToSend, | ||
instanceTelegram, | ||
one_time_keyboard, | ||
resize_keyboard, | ||
userListWithChatID, | ||
); | ||
return true; | ||
@@ -326,3 +362,12 @@ } else if (part.sendPic) { | ||
_this.log.debug("Send Pic to Telegram"); | ||
sendToTelegram(_this, userToSend, path, undefined, instanceTelegram); | ||
sendToTelegram( | ||
_this, | ||
userToSend, | ||
path, | ||
undefined, | ||
instanceTelegram, | ||
resize_keyboard, | ||
one_time_keyboard, | ||
userListWithChatID, | ||
); | ||
@@ -364,2 +409,3 @@ let timeoutToClear = {}; | ||
one_time_keyboard, | ||
userListWithChatID, | ||
); | ||
@@ -366,0 +412,0 @@ if (subMenuData && subMenuData[3]) setStateIdsToListenTo = subMenuData[3]; |
{ | ||
"name": "iobroker.telegram-menu", | ||
"version": "0.6.4", | ||
"version": "0.6.5", | ||
"description": "Easily create Telegram Menus", | ||
@@ -27,3 +27,3 @@ "author": { | ||
"devDependencies": { | ||
"@alcalzone/release-script": "^3.5.9", | ||
"@alcalzone/release-script": "^3.6.0", | ||
"@alcalzone/release-script-plugin-iobroker": "^3.6.0", | ||
@@ -45,11 +45,11 @@ "@alcalzone/release-script-plugin-license": "^3.5.9", | ||
"chai-as-promised": "^7.1.1", | ||
"eslint": "^8.44.0", | ||
"eslint": "^8.48.0", | ||
"eslint-config-prettier": "^8.9.0", | ||
"eslint-plugin-prettier": "^4.2.1", | ||
"mocha": "^10.2.0", | ||
"prettier": "^3.0.0", | ||
"prettier": "^3.0.3", | ||
"proxyquire": "^2.1.3", | ||
"sinon": "^15.2.0", | ||
"sinon-chai": "^3.7.0", | ||
"typescript": "~5.1.6" | ||
"typescript": "~5.2.2" | ||
}, | ||
@@ -56,0 +56,0 @@ "main": "main.js", |
@@ -36,2 +36,7 @@ ![Logo](admin/telegram-menu.png) | ||
--> | ||
### 0.6.5 (2023-09-01) | ||
- get user by chatID and send back to this chatID | ||
### 0.6.4 (2023-08-20) | ||
@@ -38,0 +43,0 @@ |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
33
3225
163
266614