Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. tinick

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    T
    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 5
    • Best 0
    • Groups 0

    tinick

    @tinick

    0
    Reputation
    8
    Profile views
    5
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    tinick Follow

    Latest posts made by tinick

    • RE: Драйвер Telegram Adapter

      @Haba:

      tinick код скрипта напиши сюда `

      ! on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) {
      ! //log(obj.state.val);
      ! command = obj.state.val.substring(obj.state.val.indexOf(']')+1);
      ! user = obj.state.val.substring(obj.state.val.indexOf('[')+1,obj.state.val.indexOf(']'));
      ! if (command ==="меню") { // ждем сообщение от пользователя "меню"
      ! sendTo('telegram', {
      ! user: user,
      ! text: 'Выберите кнопку',
      ! reply_markup: {
      ! inline_keyboard: [
      ! [{ text: 'Кнопка', callback_data: 'OK' }],
      ! ],
      ! }
      ! });
      ! }
      ! if (command ==="OK") { // нажата кнопка
      ! sendTo('telegram', {
      ! user: user,
      ! text: 'Конец',
      ! editMessageText: {
      ! options: {
      ! chat_id: getState("telegram.0.communicate.requestChatId").val,
      ! message_id: getState("telegram.0.communicate.requestMessageId").val,
      ! }
      ! }
      ! });
      ! }
      ! });
      При нажатии на кнопку высвечиваются часы, но дальнейшая команда не проходит. В телеграмме висит команда "меню"
      1226_______1.png
      1226_______2.png

      posted in ioBroker драйвера
      T
      tinick
    • RE: Драйвер Telegram Adapter

      @Haba:

      Пример скрипта для inline кнопок

      ! ````
      on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) {
      //log(obj.state.val);
      command = obj.state.val.substring(obj.state.val.indexOf(']')+1);
      user = obj.state.val.substring(obj.state.val.indexOf('[')+1,obj.state.val.indexOf(']'));

      if (command ==="меню") { // ждем сообщение от пользователя "меню"
          sendTo('telegram', {
              user: user,
              text:   'Выберите кнопку',
              reply_markup: {
                  inline_keyboard: [
                      [{ text: '\u{2714} Button 1_1', callback_data: '1_1' }, { text: '\u{2705} Button 1_2', callback_data: '1_2' }],
                      [{ text: 'Button 1_3', callback_data: '1_3' }],
                  ],
              }
          }); 
      }
      if (command ==="1_1") { // нажата кнопка Button 1_1
          log("message_id = " + getState("telegram.0.communicate.requestMessageId").val);
          sendTo('telegram', {
              user: user,
              text:   'Замена кнопок',
              editMessageReplyMarkup: {
                  options: {
                      chat_id: getState("telegram.0.communicate.requestChatId").val, 
                      message_id: getState("telegram.0.communicate.requestMessageId").val
                  },
                  reply_markup: {
                      inline_keyboard: [
                          [{ text: 'button 1', callback_data: '2_1' }],
                          [{ text: 'button 2', callback_data: '2_2' }]
                      ],
                  }
              }
          });
      }
      if (command ==="1_2") { // нажата кнопка Button 1_2
          log("message_id = " + getState("telegram.0.communicate.requestMessageId").val);
          sendTo('telegram', {
              user: user,
              text:   'Кнопка 1_2 нажата',
              answerCallbackQuery: {
                  text: "Есть нажатие!",
                  showAlert: false
              }
          });
      }
      if (command ==="2_1") { // нажата кнопка Button 2_1
          log("message_id = " + getState("telegram.0.communicate.requestMessageId").val);
          sendTo('telegram', {
      

      // user: user,
      text: 'Назад',
      editMessageReplyMarkup: {
      options: {
      chat_id: getState("telegram.0.communicate.requestChatId").val,
      message_id: getState("telegram.0.communicate.requestMessageId").val
      },
      reply_markup: {
      inline_keyboard: [
      [{ text: '\u{2714} Button 1_1', callback_data: '1_1' }, { text: '\u{2705} Button 1_2', callback_data: '1_2' }],
      [{ text: 'Button 1_3', callback_data: '1_3' }],
      ],
      resize_keyboard: true,
      one_time_keyboard: true
      }
      }
      });
      }
      if (command ==="1_3") { // нажата кнопка Button 1_3
      sendTo('telegram', {
      user: user,
      text: 'Конец',
      editMessageText: {
      options: {
      chat_id: getState("telegram.0.communicate.requestChatId").val,
      message_id: getState("telegram.0.communicate.requestMessageId").val,
      }
      }
      });
      }
      });
      ```` `

      Попробовал у себя данный скрипт, но почему у меня не получается вылавливать нажатие inline кнопок…

      posted in ioBroker драйвера
      T
      tinick
    • RE: Драйвер Telegram Adapter

      @spectrekr:

      @tinick:

      @spectrekr:

      Подпишись:

      ! on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) { command = obj.state.val.substring(obj.state.val.indexOf(']')+1); user = obj.state.val.substring(obj.state.val.indexOf('[')+1,obj.state.val.indexOf(']')); prev_command = obj.oldState.val.substring(obj.oldState.val.indexOf(']')+1); }); !
      И смотри что у тебя в command. `

      Отловить нажатие кнопки не получилось. Он отлавливает только то, что я ему пишу. В моем скрипте хотелось бы чтобы он при нажатии на кнопку принимал следующее:

      callback_data: 'Test menu'

      и отрабатывал команду 'Test menu'

      Пока "ломаю" голову… `

      то есть то что ты пишешь? Я вот так использую.

      ! on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) { log(obj.state.val); command = obj.state.val.substring(obj.state.val.indexOf(']')+1); user = obj.state.val.substring(obj.state.val.indexOf('[')+1,obj.state.val.indexOf(']')); prev_command = obj.oldState.val.substring(obj.oldState.val.indexOf(']')+1); switch(command){ case 'включить': break; } }); !
      Клавиатуру шлю так:

      ! sendTo('telegram.0', { user: user, text: 'Что необходимо сделать?', reply_markup: { keyboard: [ ['включить', 'выключить'], ['показать', 'заказы'], ['банк'], ], resize_keyboard: true, // one_time_keyboard: true } }); !
      И все отлично работает. Еще могу предположить что callback_data в драйвере не реализована, поэтому и не работает, точнее скажет только разработчик. `

      Да, с этой клавиатурой я работаю, но хотелось найти выход через callback_data. Возможно Вы и правы, что в драйвере не реализована данная функция.

      Спасибо за попытку помощи. Будем надеяться что может и эту функцию реализуют

      posted in ioBroker драйвера
      T
      tinick
    • RE: Драйвер Telegram Adapter

      @spectrekr:

      Подпишись:

      ! on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) { command = obj.state.val.substring(obj.state.val.indexOf(']')+1); user = obj.state.val.substring(obj.state.val.indexOf('[')+1,obj.state.val.indexOf(']')); prev_command = obj.oldState.val.substring(obj.oldState.val.indexOf(']')+1); }); !
      И смотри что у тебя в command. `

      Отловить нажатие кнопки не получилось. Он отлавливает только то, что я ему пишу. В моем скрипте хотелось бы чтобы он при нажатии на кнопку принимал следующее:

      callback_data: 'Test menu'

      и отрабатывал команду 'Test menu'

      Пока "ломаю" голову…

      posted in ioBroker драйвера
      T
      tinick
    • RE: Драйвер Telegram Adapter

      создал скрипт для работы с кнопками в телеграмм, но не могу найти как можно отловить нажатие кнопки. Может кто уже делал?

      ! var chatname = '[Ник]';
      ! var idTelegramRequest = "telegram.0.communicate.request";
      ! function Klava_4() {
      ! sendTo('telegram.0', { text: 'Тестовая кнопка',
      ! parse_mode: 'markdown',
      ! disable_web_page_preview: false,
      ! reply_markup: JSON.stringify({
      ! inline_keyboard: [
      ! [{ text: 'Knopka', callback_data: 'Test menu' }]]
      ! }) }); }
      ! on(idTelegramRequest, function (obj) {
      ! // Вход*********************************************************************
      ! if (obj.state.val == chatname + "Вход" || obj.state.val == chatname + "/Вход")
      ! {
      ! Klava_4();
      ! }
      ! }
      ! );

      posted in ioBroker драйвера
      T
      tinick
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo