Страница 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 камер
- Возможность испытать удачу (мини игра, подбрасывает кубик)
- Интерактивная клавиатура
Как выглядит меню:
Как сделать также:
- Скачиваем архив
- Импортируем в события файлы .txt
- Включаем галочки у всех событий (если у чего-нибудь выключены).
- Добавляем команду "Меню" с пустым содержанием.
- Создаём группу(или канал) в telegram'е.
- Добавляем туда нашего бота.
- Пишем команду /start.
- В настройках бота добавляем группе права администратора.
- Импортируем в сценарии файл.json
- В сценарии изменяем id на тот, что у вашего канала.
Готово!
Чтобы запустить меню, напишите "Меню".
P.S Все настройки меню легко можно изменять под себя, т.к. каждая функция лежит в отдельном ивенте.
P.S.S Это новая версия с переделанной структурой для более лёгкой настройки кода.
Что планируется сделать:
- Возможность получения и просмотра информации о луне. (Готово)
- Возможность запустить любой сценарий. (Готово)
- Возможность просматривать устройства online. (Готово)
- Получение случаенных цицат. (Готово)
- Получение новостей из RSS каналов. (Готово)
- Добавить другие игры с использованием других смайликов с рандомом (игровой автомат, баскетбол, дротик). (Готово)
- Сделать управление простыми устройствами.
- Возможность простого добавления собственных команд с аргументами.
- Получение любого графика из модуля Charts.
- И что-нибудь ещё.. ( предлагайте идеи )
Спасибо, хорошая менюшка, но есть вопрос:
не получилось автоматически удалять сообщения, например сообщение ввода команды "назад"
вот например так
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
попробуй )))