PHPackages                             php-brasil/telegram - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. php-brasil/telegram

ActiveLibrary

php-brasil/telegram
===================

0.0.6(8y ago)525MITPHP

Since Jan 28Pushed 5y ago4 watchersCompare

[ Source](https://github.com/brasil-php/telegram)[ Packagist](https://packagist.org/packages/php-brasil/telegram)[ RSS](/packages/php-brasil-telegram/feed)WikiDiscussions main Synced 2mo ago

READMEChangelog (6)Dependencies (3)Versions (6)Used By (0)

Telegram Bot API
================

[](#telegram-bot-api)

Este projeto visa criar uma estrutura de recursos para utilizar a API de bots do Telegram.

Como usar
---------

[](#como-usar)

Para entregar uma API simplificada o SDK possui uma classe que agrega as features para o bot.

```
use PhpBrasil\Telegram\Bot;

$telegram = new Bot(env('BOT_TOKEN'));
```

Com estas instruções acima temos uma instância do Bot disponível para adicionar os comandos.

### Gerar Log

[](#gerar-log)

O trecho abaixo mostra um exemplo de como gerar um log de uma requisição no webhook. O bot suporta todos os níveis de logs propostos pelas [PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md).

```
$input = File::read('php://input');
$body = JSON::decode($input, true);

$telegram = new Bot(environment('APP_TOKEN'));

if (environment('APP_DEBUG')) {
    $telegram->info(
        get($body, 'message.message_id'),
        $body
    );
}
```

### Adcionar Regras Regex nas Mensagens

[](#adcionar-regras-regex-nas-mensagens)

O exemplo abaixo mostra como podemos adicionar um comando para o Bot para ao receber uma mensagem que comece com `Hello` ou `Hi` ele responda `Nice to meet you`.

```
$bot->on('text', '^Hello|^Hi', function($bot, $match) {
    $message = $match->get('$message');
    $chatId = get($message, 'chat.id');
    /** @var Bot $bot */
    return $bot->apiRequest(
        'sendMessage', ['chat_id' => $chatId, "text" => 'Nice to meet you']
    );
});
```

O bot conta com métodos para lidar com os tipos de mensagem de forma separada.

```
$input = File::read('php://input');
$body = JSON::decode($input, true);

// add actions to bot
$bot->text(/* regex over message */, /* callable */);
$bot->text(/* regex over message */, /* callable */);

// apply the actions
$telegram->handleText($body);
```

### Lidando com mensages tipo `text`

[](#lidando-com-mensages-tipo-text)

O método add suporta qualquer callable (php.net/callable) facilitando a criação dos comandos e permitindo uma organização das instruções.

#### Class &amp; \_\_invoke

[](#class--__invoke)

A instrução abaixo adiciona o listener ao comando `/start`

```
$bot->text('/start', Start::class);
```

Relacionando-o à classe Start

```
/**
 * Class Start
 */
class Start
{
    /**
     * @param Bot $bot
     * @param Match $match
     * @param array $message
     * @throws Exception
     * @SuppressWarnings(Unused)
     */
    function __invoke($bot, $match, $message)
    {
        $chatId = get($message, 'chat.id');
        $parameters = [
            'chat_id' => $chatId,
            "text" => 'Hello',
            'reply_markup' => ['keyboard' => [['Hello', 'Hi']], 'one_time_keyboard' => true, 'resize_keyboard' => true]
        ];
        $bot->answer($parameters);
    }
}
```

#### Actions File

[](#actions-file)

Também é possível adicionar um arquivo que contenha uma função para adicionar as ações

```
$telegram->actions(dirname(__DIR__) . '/actions/text.php');
```

Onde o arquivo `actions/text.php` é algo como

```
