diff --git a/frontend/admin/src/stores/settings.js b/frontend/admin/src/stores/settings.js index a2cf8a2..cee5dae 100644 --- a/frontend/admin/src/stores/settings.js +++ b/frontend/admin/src/stores/settings.js @@ -50,6 +50,11 @@ export const useSettingsStore = defineStore('settings', { text_empty_cart: '', text_order_created_success: '', zero_price_text: '', + start_image: '', + start_message: '', + start_button: { + text: '', + }, }, sliders: { diff --git a/frontend/admin/src/views/TextsView.vue b/frontend/admin/src/views/TextsView.vue index 554e1c6..ddf8e21 100644 --- a/frontend/admin/src/views/TextsView.vue +++ b/frontend/admin/src/views/TextsView.vue @@ -16,11 +16,32 @@ Текст, который будет выводиться вместо цены, в случае если цена = 0. Если текст отсутствует, то будет выводиться нулевая цена по умолчанию. + + + Изображение, которое будет использоваться в приветственном сообщении покупателю (когда он + запустит бота через `/start`). + + + + Сообщение, которое выводится в приветственном сообщении покупателю (когда он + запустит бота через `/start`). Можно использовать HTML разметку, которую + + поддерживает Telegram + . Можно использовать + эмодзи + . + + + + Текст на кнопке приветственного сообщения, которая открывает магазин. + diff --git a/module/oc_telegram_shop/upload/oc_telegram_shop/configs/app.php b/module/oc_telegram_shop/upload/oc_telegram_shop/configs/app.php index 82f9c5d..b132baf 100755 --- a/module/oc_telegram_shop/upload/oc_telegram_shop/configs/app.php +++ b/module/oc_telegram_shop/upload/oc_telegram_shop/configs/app.php @@ -59,7 +59,19 @@ TEXT, 'texts' => [ 'text_no_more_products' => 'Это всё по текущему запросу. Попробуйте уточнить фильтры или поиск.', 'text_empty_cart' => 'Ваша корзина пуста.', - 'text_order_created_success' => 'Ваш заказ успешно оформлен и будет обработан в ближайшее время.' + 'text_order_created_success' => 'Ваш заказ успешно оформлен и будет обработан в ближайшее время.', + 'start_message' => <<Добро пожаловать! + +Вы находитесь в официальном магазине. +Здесь вы можете ознакомиться с товарами, узнать подробности и оформить заказ прямо в Telegram. + +Нажмите кнопку ниже, чтобы перейти в каталог. +HTML, + 'start_image' => null, + 'start_button' => [ + 'text' => '🛍 Перейти в каталог', + ], ], 'orders' => [ diff --git a/module/oc_telegram_shop/upload/oc_telegram_shop/framework/Telegram/Commands/StartCommand.php b/module/oc_telegram_shop/upload/oc_telegram_shop/framework/Telegram/Commands/StartCommand.php index 0b3146c..75af2a8 100755 --- a/module/oc_telegram_shop/upload/oc_telegram_shop/framework/Telegram/Commands/StartCommand.php +++ b/module/oc_telegram_shop/upload/oc_telegram_shop/framework/Telegram/Commands/StartCommand.php @@ -2,14 +2,37 @@ namespace Openguru\OpenCartFramework\Telegram\Commands; +use Openguru\OpenCartFramework\Config\Settings; +use Openguru\OpenCartFramework\Telegram\Enums\ChatAction; +use Openguru\OpenCartFramework\Telegram\TelegramBotStateManager; +use Openguru\OpenCartFramework\Telegram\TelegramService; + class StartCommand extends TelegramCommand { + private Settings $settings; + + public function __construct(TelegramService $telegram, TelegramBotStateManager $stateManager, Settings $settings) + { + parent::__construct($telegram, $stateManager); + $this->settings = $settings; + } + public function handle(array $update): void { $chatId = $update['message']['chat']['id']; - $message = 'Добро пожаловать в Telecart \- интернет магазин в Telegram\.'; + $message = $this->settings->get('texts.start_message', 'Welcome to Telecart - Telegram e-commerce solution.'); + $buttons = [ + 'inline_keyboard' => [ + [ + [ + 'text' => $this->settings->get('texts.start_button.text', 'Open Mini App'), + 'url' => $this->telegram->getMiniAppUrl(), + ], + ], + ], + ]; - $this->telegram->sendMessage($chatId, $message); + $this->telegram->sendMessage($chatId, $message, $buttons, ChatAction::TYPING, 'html'); } } diff --git a/module/oc_telegram_shop/upload/oc_telegram_shop/framework/Telegram/TelegramService.php b/module/oc_telegram_shop/upload/oc_telegram_shop/framework/Telegram/TelegramService.php index 49ae3ef..27055ed 100755 --- a/module/oc_telegram_shop/upload/oc_telegram_shop/framework/Telegram/TelegramService.php +++ b/module/oc_telegram_shop/upload/oc_telegram_shop/framework/Telegram/TelegramService.php @@ -220,4 +220,11 @@ class TelegramService return null; } + + public function getMiniAppUrl(): string + { + $me = $this->getMe(); + + return sprintf('https://t.me/%s?startapp', $me['username']); + } }