for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Sysbot\Telegram\ExtendedTypes;
use Sysbot\Telegram\Exceptions\InvalidArgumentException;
use Sysbot\Telegram\Types\KeyboardButton;
trait ReplyKeyboardMarkup
{
/**
* @param int $row
* @param KeyboardButton $button
* @param bool $first
* @return $this
*/
public function addButton(int $row, KeyboardButton $button, bool $first = false): static
if (empty($this->keyboard[$row])) {
throw new InvalidArgumentException('Row not found');
}
if ($first) {
array_unshift($this->keyboard[$row], $button);
return $this;
array_push($this->keyboard[$row], $button);
* @param int $index
public function removeButton(int $row, int $index): static
if (empty($this->keyboard[$row][$index] ?? null)) {
unset($this->keyboard[$row][$index]);
$this->keyboard[$row] = array_values($this->keyboard[$row]);
* @param KeyboardButton[] $buttons
public function addRow(array $buttons, bool $first = false): static
array_unshift($this->keyboard, $buttons);
array_push($this->keyboard, $buttons);
public function removeRow(int $index): static
if (empty($this->keyboard[$index])) {
unset($this->keyboard[$index]);