【问题标题】:How to pass keyboard's dynamic in telegram bot?如何在电报机器人中传递键盘的动态?
【发布时间】:2023-12-08 03:17:01
【问题描述】:

您好,我在为电报机器人创建动态键盘时遇到问题 我想用下图中的键盘创建自己的戒指 enter image description here

我找到了 C# 代码,但无法将其转换为 PHP 代码:

for (var Index = 1; Index < 17; Index++)
{
    cols.Add(new KeyboardButton("" + Index));
    if (Index%4 != 0) continue;
    rows.Add(cols.ToArray());
    cols = new List<KeyboardButton>();
}
rkm.Keyboard = rows.ToArray();

重要提示

我有 40 个数字,我想将连续 40 个按钮分配给 4 个按钮

$reply_markup = array('keyboard' => array(array('1','2','3','4'),  array('5','6','7','8'),....), 'resize_keyboard' => true);

但无论我做什么,我都做不到 谢谢你帮助我

【问题讨论】:

    标签: php bots telegram


    【解决方案1】:

    php 中你必须像这样使用两个循环:

    $rows = 10;
    $columns = 4;
    $keyboard = [];
    for($i = 1;$i<=$rows;$i++){ // loop for create rows.
        $rowKeys = []; // reset row keys
        for($j = 1;$j<=$columns;$j++){ // loop for create columns.
            $rowKeys[] = ['text'=>$i*$j, 'callback_data'=>'key-'.($i*$j)]; // create button with callback data
        }
        $keyboard[] = $rowKeys;
    }
    
    $reply_markup = $keyboard;
    

    【讨论】:

    • 谢谢,PHP注意:试图获取非对象的属性
    • sendMessage($chat_id, $message,json_encode($reply_markup));
    • 我想使用 $reply_markup = array('keyboard' =&gt; array(array('1','2','3','4'), array('5','6','7','8'),....), 'resize_keyboard' =&gt; true);sendMessage($chat_id, $message,json_encode($reply_markup)); 而不是 InlineKeyboard
    • @AbbasMohebbi 这样您就可以将此逻辑用于所需的数组。
    • 谢谢 但是这个区域只能在InlineKeyboard上使用
    最近更新 更多