кнопка в чате
alexeydg opened this issue · 6 comments
Добрый день, подскажите реально ли сделать такое с вашим плагином, чтобы бот в чате выводил кнопку которая бы ссылалась на выполнение команды бота с параметром. например у бота есть команда /search бот выводит 10 результатов поиска, а их всего 20, под результатами он выводит кнопку "искать еще", которая бы ссылалась на команду /search page:2 ???
Конечно можно, вы же все на стороне сервера обрабатываете. Например (вырвано из контекста, но суть ясна):
//...
} else {
$res = $command->queryAll();
if ($res) {
$keyboard[] = ["Еще фото"];
$dbUser->action = 'more_photos';
$dbUser->param = $items[0]['ID'];
}
$description = str_replace('<hr>', "\n\n", $items[0]['descr']);
$data['text'] =
"\n\n" . $items[0]['fullname'] .
"\n\nКатегория: " . $items[0]['podcat'] .
$description .
"\n\nГарантия: " . $items[0]['guarant'];
if (file_exists(Yii::getAlias('@webroot') . '/catalog/' . $items[0]['photo'])) {
$mainPhoto = Yii::getAlias('@webroot') . '/catalog/' . $items[0]['photo'];
}
}
//...
На сервере обрабатываете как вам нужно:
//...
case 'more_photos':
$command = $connection->createCommand("SELECT * FROM repo_photos WHERE item_id = :id");
$command->bindValues(['id' => $dbUser->param]);
$res = $command->queryAll();
if ($res) {
$photos = ArrayHelper::getColumn($res, 'photo');
}
$data['text'] = "Выберите действие";
$dbUser->param = null;
$dbUser->action = null;
if (!empty($photos)) {
foreach ($photos as $photo) {
$file = Yii::getAlias('@webroot') . '/catalog/' . $photo;
if (file_exists($file)) {
Request::sendPhoto(['chat_id' => $chatId], $file);
}
}
}
break;
//...
спасибо за оперативность, про обработку на сервере понятно) я не про то, я про то как мне с помощью вашего плагина в чат послать кнопочку которая ведет на вызов команды с параметрами
Я же написал пример как слать
$keyboard[] = ["Еще фото"];
$dbUser->action = 'more_photos';
$dbUser->param = $items[0]['ID'];
Почитайте доки https://github.com/php-telegram-bot/core
судя по докам надо юзать https://github.com/php-telegram-bot/core/blob/master/src/Entities/InlineKeyboard.php а при установке вашего пакета такого файла там нет
в общем проблема в том что ваш плагин тянет старую версию
- Installation request for onmotion/yii2-telegram ^0.8.6 -> satisfiable by onmotion/yii2-telegram[v0.8.6].
- onmotion/yii2-telegram v0.8.6 requires longman/telegram-bot ^0.35.0 -> satisfiable by longman/telegram-bot[0.35] but these conflict with your requirements or minimum-stability., текущая версия longman/telegram-bot (0.54.1) вы можете это поправить?
Это не проблема, а зависимость. Я это делал 2 года назад и тестировалось только на версии 0.35.0. Сделайте форк, модифицируйте как вам нужно.