californiamountainsnake/longmantelegrambot-inlinemenu

该软件包已被 弃用 并不再维护。未建议替代软件包。

longman/telegram-bot 库的内置菜单!

1.3.0 2021-03-15 14:29 UTC

This package is auto-updated.

Last update: 2022-05-15 16:50:43 UTC


README

这是 longman/telegram-bot 库的内置菜单!

功能

  • 带有子菜单的内置菜单。
  • 通过内置按钮调用机器人命令。
  • 提示信息!

安装

使用 Composer 需求此软件包

通过 Composer 安装此软件包。编辑您的项目 composer.json 文件以需求 californiamountainsnake/longmantelegrambot-inlinemenu

{
    "name": "yourproject/yourproject",
    "type": "project",
    "require": {
        "php": "^7.3.1",
        "californiamountainsnake/longmantelegrambot-inlinemenu": "*"
    }
}

并运行 composer update

在您的命令行中运行此命令

composer require californiamountainsnake/longmantelegrambot-inlinemenu

用法

  1. 从 InlineMenuTelegram 扩展您的 Telegram 类(或将 InlineMenuTelegramTrait 包含到您现有的 Telegram 类中)
<?php
// Create your own Telegram class:
class MyTelegram extends InlineMenuTelegram
{

}

// somewhere in the webhook.php:
$telegram = new MyTelegram($bot_api_key, $bot_username);
  1. 创建您的菜单对象
<?php
$menu = new Menu('Top root menu', 'root', [
    [
        InlineButton::startCommand('Help!', 'help'),
        InlineButton::url('It\'s google', 'https://google.ru'),
    ],
    [
        InlineButton::toast('toast_identifier', 'Toast text!'),
        new Menu('Sub menu', 'submenu', [
            InlineButton::toast('sub_menu_toast', 'Submenu toast!'),
            InlineButton::menuSection('<< Back', Menu::path('root'))
        ]),
    ]
]);

// You must call this method once only on the your TOP level menu object.
$menu->buildPathsFromThisRoot();
  1. 从 InlineMenuCallbackqueryCommand 扩展您的标准 CallbackqueryCommand 并实现抽象方法
<?php
class CallbackqueryCommand extends InlineMenuCallbackqueryCommand
{
    protected function getRootMenu(): Menu
    {
        // return the Menu object from the previous step
        return new Menu (...);
    }
}
  1. 获取标准的 Longman\TelegramBot\Entities\InlineKeyboard 对象并在您的命令中使用 Request::sendMessage ()
<?php
$menu = new Menu (...);
$menu->buildPathsFromThisRoot();
$inlineKeyboard = $menu->getInlineKeyboard();

Request::sendMessage([
    'chat_id' => 'some_chat_id',
    'text' => 'This is menu!',
    'reply_markup' => $inlineKeyboard,
]);