Страница 183 из 191

Re: [Модуль] Telegram (telegram)

Добавлено: Пн мар 28, 2022 11:52 pm
vitosmaxim80sad145
Здраствуйте подскажите как сделать чтобы приходя в магазин , приходил список покупок и в нём отмечать уже купленные товары, такая возможность в самом модуле есть ,но как сделать команду в телегу я не знаю

Re: [Модуль] Telegram (telegram)

Добавлено: Сб апр 02, 2022 11:34 pm
sandrey
Добрый день уважаемые знатоки. Есть необходимость получать и анализировать сообщения с телеграм канала.
Добавляю ID канала в список пользователей, иконка и описание подгружается, но сообщения не получаю. Подозреваю надо подписаться на канал. Прошу помощи как решить данный вопрос.

Re: [Модуль] Telegram (telegram)

Добавлено: Пт май 27, 2022 8:07 pm
pasha413
RomanAndr писал(а):
Чт фев 10, 2022 12:39 am
pasha413 писал(а):
Ср дек 22, 2021 3:30 pm
RomanAndr писал(а):
Пн мар 01, 2021 4:52 pm
Всем привет, хочу поделится моим вариантом меню.
Меню включает в себя:
  • Получение погоды (модуль openwethermap)
  • Получение графика температуры (любое свойство с историей (модуль Charts))
  • Курс валют (получение / обновление курсов валют (модуль ExchangeRates))
  • Управление online radio (включение / выключение радиостанций, управление громкостью проигрывания (модуль Online Radio))
  • Возможность просмотра и обновление информации о луне. (MoonPhase)
  • Получение случаенных цитат (Quotes)
  • Получение новостей с RSS каналов(RSS Channels)
  • Возможность просматривать статус хостов. (модуль Устройства Online)
  • Управление освещением (включение различных методов объектов (turnOn, turnOff, switch))
  • Возможность запустить любой сценарий (список берётся из ваших сценариев).
  • Просмотр состояний светильников (объектов со свойством status)
  • Получение свойств любого объекта
  • Получение изображений с ip камер
  • Возможность испытать удачу (мини игра, подбрасывает кубик)
  • Интерактивная клавиатура
Как выглядит меню:
Фотографии менюПоказать
МенюПоказать
Изображение
ПогодаПоказать
Список погодыПоказать
Изображение
На сегодняПоказать
Изображение
На завтраПоказать
Изображение
На послезавтраПоказать
Изображение
УправлениеПоказать
Изображение
ДругоеПоказать
Список функцийПоказать
Изображение
Активность в туалетеПоказать
Изображение
График температурыПоказать
Изображение
Курс валютПоказать
Изображение
РадиоПоказать
Управление радиостанциямиПоказать
Изображение
Управление звукомПоказать
Изображение
Статус устройствПоказать
Изображение
КамерыПоказать
Изображение
Фаза луныПоказать
Изображение
СценарииПоказать
Выбор сценарияПоказать
ИгрыПоказать
1Показать
Изображение
Изображение
Изображение
2Показать
Изображение
Изображение
Изображение
3Показать
Изображение
Изображение
Изображение
4Показать
Изображение
Изображение
Изображение
ЦитатыПоказать
Изображение
Изображение
ПользовательскиеПоказать
Изображение
НовостиПоказать
Изображение
Изображение
Изображение
Как сделать также:
ТуториалПоказать
Функции ботаПоказать
  1. Скачиваем архив
    ФайлПоказать
    TeleramMenu.zip
  2. Импортируем в события файлы .txt
    Панель импорта событийПоказать
    Изображение
  3. Включаем галочки у всех событий (если у чего-нибудь выключены).
  4. Добавляем команду "Меню" с пустым содержанием.
    Команда "Меню"Показать
    Изображение
RSS каналПоказать
  1. Создаём группу(или канал) в telegram'е.
    Создание группы в teleram'еПоказать
    Изображение
  2. Добавляем туда нашего бота.
    Добавление ботаПоказать
    Изображение
  3. Пишем команду /start.
  4. В настройках бота добавляем группе права администратора.
    Добавление прав администратораПоказать
    Изображение
    Изображение
  5. Импортируем в сценарии файл.json
    Панель импорта сценариевПоказать
    Изображение
  6. В сценарии изменяем id на тот, что у вашего канала.
    Изменение idПоказать
    Изображение
Готово!
Чтобы запустить меню, напишите "Меню".
P.SПоказать
P.S Все настройки меню легко можно изменять под себя, т.к. каждая функция лежит в отдельном ивенте.
P.S.S Это новая версия с переделанной структурой для более лёгкой настройки кода.
Что планируется сделать:
ПланыПоказать
  • Возможность получения и просмотра информации о луне. (Готово)
  • Возможность запустить любой сценарий. (Готово)
  • Возможность просматривать устройства online. (Готово)
  • Получение случаенных цицат. (Готово)
  • Получение новостей из RSS каналов. (Готово)
  • Добавить другие игры с использованием других смайликов с рандомом (игровой автомат, баскетбол, дротик). (Готово)
  • Сделать управление простыми устройствами.
  • Возможность простого добавления собственных команд с аргументами.
  • Получение любого графика из модуля Charts.
  • И что-нибудь ещё.. ( :idea: предлагайте идеи :idea: )
Спасибо, хорошая менюшка, но есть вопрос:
не получилось автоматически удалять сообщения, например сообщение ввода команды "назад"
вот например так https://disk.yandex.ru/i/DfZggjGA4pD93g - видосик как работает у меня автоудаление. могу скинуть код.
Спасибо! Как я понял сообщения удаляются через некоторый интервал после отправки, можете отправить код, в моём случае я бы сделал так, что при отправке нового сообщения боту, его предыдущее и моё отправленное удаляется, типо будет только одно активное сообщение для чистоты чата.
Здравствуйте. извините, давно не заходил, не видел сообщение.
допустим код команды с удалением предыдущео сообщения и самой команды (как в начале видео)

Код: Выделить всё

$sm1 = json_decode('"'.'\ud83c\udf11'.'"');
$climate="Баня:".hex2bin('f09f8ca1').gg('TempHum_Banya.value')."°C, ".hex2bin('F09F92A6').gg('TempHum_Banya.valueHumidity')."%,".hex2bin('F09F948B').gg('BattTemp_Banya.value')."%;";
$climate.="\r\nУлица:".hex2bin('f09f8ca1').gg('TempHum_Ulica.value')."°C, ".hex2bin('F09F92A6').gg('TempHum_Ulica.valueHumidity')."%,".hex2bin('F09F948B').gg('BattTemp_Ulica.value')."%;";
$climate.="\r\nТеплица:".hex2bin('f09f8ca1').gg('TempHum_Teplica.value')."°C, ".hex2bin('F09F92A6').gg('TempHum_Teplica.valueHumidity')."%,".hex2bin('F09F948B').gg('BattTemp_Teplica.value')."%;";
$climate.="\r\nАтмосферное давление:".hex2bin('F09F92AA').gg('Press_Ulica.value')."мм.рт.ст;";
//return $climate;

$this->sendAction($chat_id,"typing");
//$this->sendMessageToUser($chat_id,$climate); // заменяем на код с автоудалением предыдущих сообщений
$res = $this->sendMessageToUser($chat_id, $climate);
if ($message_id = $res['result']['message_id']) { //ид ответа на команду 
 $message_id_old = registeredEventDetails('tlg/command/climate'); //ид предыдущего ответа на команду (по аналогии меняем climate и копируем на остальные команды)
 $this->deleteMessage($chat_id, $message_id_old); //удаляем предыдущий ответ
 registerEvent('tlg/command/climate', $message_id, 1); //регистрируем ид текущего ответа (см. выше)
 $this->deleteMessage($chat_id, $data['message']['message_id']); //удаляем команду Климат
}
а вот код с автоудалением через определенное время команды и сообщения

Код: Выделить всё

include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
//формируем массив названий кнопок, далее нужное по аналогии добавить здесь
$scripts = array('restart cycles',
                 'reboot system',
                 'reboot router',
                 'shutDown');

$total = count($scripts);
for($i = 0; $i < $total; $i++) {
//формируем массив кнопок с настройками, $i = 0 соответствует первой кнопке
 $option[] = $this->buildInlineKeyboardButton($scripts[$i], '', 'CallbackScripts_' . $i, '');
}

//количество кнопок в строке
$count_row = 3;
$option = array_chunk($option, $count_row);
$keyb = $this->buildInlineKeyBoard($option);
$content = array('chat_id' => $chat_id, 'text' => 'Выберите сценарий:', 'reply_markup' => $keyb);
//$this->sendContent($content);

$res = $telegram_module->sendContent($content);
$message_id = $res["result"]["message_id"];
echo '<pre>';
print_r($res);
echo '</pre>';
sleep(5); // через 5 секунд удаляем сообщение и команду
$res = $telegram_module->deleteMessage($chat_id, $message_id);
$this->deleteMessage($chat_id, $data['message']['message_id']);
echo '<pre>';
print_r($res);
echo '</pre>';
и событие CallbackScripts_ на команду:

Код: Выделить всё

//у всех каллбеков, т.к. они вызываются все определяем условие по которому сработает нужный
if (strpos($callback, 'CallbackScripts_') !== false) {
 $skip = true; //не перебираем далее остальные каллбеки
 //определяем параметр переданный с нажатия кнопки
 $scripts = substr($callback, 16);
 switch ($scripts) {
  case '0':
   //соответствует первой кнопке
   $script = 'restartCycles';
   break;
  case '1':
   $script = 'rebootSystem';
   break;
  case '2':
   $script = 'rebootRoter';
   break;
  case '3':
   $script = 'shutDown';
   break;

   break;
  case '4':

   break;
  default:

 }
 //формируем всплывающее сообщение с названием скрипта
 $this->sendAnswerCallbackQuery($callback_id, $script, false);
 //выполняем заданный скрипт
 runScriptSafe($script);
}
если удастся внедрить автоудаление предыдущих сообщений, было бы очень круто!
все вышеизложенное взято в том числе и здесь:
https://connect.smartliving.ru/profile/ ... gramm.html

Re: [Модуль] Telegram (telegram)

Добавлено: Сб май 28, 2022 9:32 am
Logrus
т.к. чат с ботом для каждого юзера уникальный
то так будет правильней, изначально не учел (в тлг курилке не раз подробно расписывалось)

Код: Выделить всё

if ($message_id = $res['result']['message_id']) {
 $message_id_old = registeredEventDetails('tlg/events/' . $chat_id);
 $this->deleteMessage($chat_id, $message_id_old);
 registerEvent('tlg/events/' . $chat_id, $message_id);
 $this->deleteMessage($chat_id, $data['message']['message_id']);
}
ну и не забывать про ограничение в тлг на удаление не старше 2 суток
в блоге был пример для скрипта его можно через таймер
(можно добавить к выше или отдельно)

Код: Выделить всё

setTimeout('preduprezhdeniya', "rs('tlg_deleteMessage',array('chat_id'=>$chat_id,'message_id'=>$message_id));",86400);
(сам скрипт tlg_deleteMessage)

Код: Выделить всё

if (isset($params['chat_id']) && isset($params['message_id'])) {
 include_once(DIR_MODULES . 'telegram/telegram.class.php');
 $telegram_module = new telegram();
 $telegram_module->deleteMessage($params['chat_id'], $params['message_id']);
}

Re: [Модуль] Telegram (telegram)

Добавлено: Вс май 29, 2022 7:53 pm
Aleksandr_A
Коллеги, а как можно отредактировать сообщение с картинкой (и инлайн клавиатурой)? Необходимо обновлять картинку по нажатию на кнопку.

Re: [Модуль] Telegram (telegram)

Добавлено: Вс май 29, 2022 7:56 pm
Logrus
Aleksandr_A писал(а):
Вс май 29, 2022 7:53 pm
Коллеги, а как можно отредактировать сообщение с картинкой (и инлайн клавиатурой)? Необходимо обновлять картинку по нажатию на кнопку.
картинку никак, через удаление и репостинг, хотя попробуй
текст можно и с клавиатурой editMessage

Re: [Модуль] Telegram (telegram)

Добавлено: Вс май 29, 2022 8:08 pm
Aleksandr_A
Logrus писал(а):
Вс май 29, 2022 7:56 pm
Aleksandr_A писал(а):
Вс май 29, 2022 7:53 pm
Коллеги, а как можно отредактировать сообщение с картинкой (и инлайн клавиатурой)? Необходимо обновлять картинку по нажатию на кнопку.
картинку никак, через удаление и репостинг, хотя попробуй
текст можно и с клавиатурой editMessage
Судя по документации методом editMessageMedia можно изменить сообщение с изображением, но не совсем пойму как его использовать в модуле.

Re: [Модуль] Telegram (telegram)

Добавлено: Вс май 29, 2022 8:10 pm
Logrus
Aleksandr_A писал(а):
Вс май 29, 2022 8:08 pm
Logrus писал(а):
Вс май 29, 2022 7:56 pm
Aleksandr_A писал(а):
Вс май 29, 2022 7:53 pm
Коллеги, а как можно отредактировать сообщение с картинкой (и инлайн клавиатурой)? Необходимо обновлять картинку по нажатию на кнопку.
картинку никак, через удаление и репостинг, хотя попробуй
текст можно и с клавиатурой editMessage
Судя по документации методом editMessageMedia можно изменить сообщение с изображением, но не совсем пойму как его использовать в модуле.
наверное добавить его поддержку как едитмессаджтекст

Re: [Модуль] Telegram (telegram)

Добавлено: Вс май 29, 2022 8:13 pm
Aleksandr_A
Logrus писал(а):
Вс май 29, 2022 8:10 pm
Aleksandr_A писал(а):
Вс май 29, 2022 8:08 pm
Logrus писал(а):
Вс май 29, 2022 7:56 pm
Aleksandr_A писал(а):
Вс май 29, 2022 7:53 pm
Коллеги, а как можно отредактировать сообщение с картинкой (и инлайн клавиатурой)? Необходимо обновлять картинку по нажатию на кнопку.
картинку никак, через удаление и репостинг, хотя попробуй
текст можно и с клавиатурой editMessage
Судя по документации методом editMessageMedia можно изменить сообщение с изображением, но не совсем пойму как его использовать в модуле.
наверное добавить его поддержку как едитмессаджтекст
Я вот думаю, а не получится это сделать через sendContent? Вроде там можно указывать метод?

Re: [Модуль] Telegram (telegram)

Добавлено: Вс май 29, 2022 8:18 pm
Logrus
попробуй )))