Skip to content
Tom Schneider edited this page Jan 23, 2018 · 8 revisions

Small chunks of code to help us develop bots faster and better

Feel free to add your own ;)

Helpers class (for dummies)

Sometimes we need some helping functions (like a dumper below) accessible in any command. Create your own Helpers class to keep your custom code together and easily accessible.

Step 1.

Create Helpers.php anywhere inside your project, adding this code to it:

<?php
namespace Longman\TelegramBot;

class Helpers {
}

Step 2.

Open your hook.php and add this code somewhere, to include it (setting your respective path):

include_once '/path/to/Helpers.php';

Step 3.

Now you're ready to use your Helpers class. Open any command file and add a new use statement to the use section.

use Longman\TelegramBot\Helpers;

Hooray! Now you can call you custom functions stored in your Helpers class in any command like this:

Helpers::yourFunction();

Useful functions snippets

Add them to your Helpers class and use when needed.

Dumper

Use this function to get the value of any variable during command execution. Very helpful for debugging purposes. The value will be written to the debug log (if enabled) and sent to the chat passed through the $chat_id parameter.

Note: Alternatively, you can create a private static variable called $dump_chat_id, which will be used if no chat ID is passed to the function. (e.g. private static $dump_chat_id = 123;)

/**
 * Dumper, to send variable contents to the passed chat_id.
 *
 * Used to log and send variable dump (var_export) to the developer or any Telegram chat ID provided.
 * Will return ServerResponse object for later use.
 * 
 * @param mixed $data
 * @param int   $chat_id
 *
 * @return \Longman\TelegramBot\Entities\ServerResponse
 * @throws \Longman\TelegramBot\Exception\TelegramException
 */
public static function dump($data, $chat_id = null)
{
    $dump = var_export($data, true);

    // Write the dump to the debug log, if enabled.
    TelegramLog::debug($dump);

    // Send the dump to the passed chat_id.
    if ($chat_id !== null || (property_exists(self::class, 'dump_chat_id') && $chat_id = self::$dump_chat_id)) {
        $result = Request::sendMessage([
            'chat_id'                  => $chat_id,
            'text'                     => $dump,
            'disable_web_page_preview' => true,
            'disable_notification'     => true,
        ]);

        if ($result->isOk()) {
            return $result;
        }

        TelegramLog::error('Var not dumped to chat_id %s; %s', $chat_id, $result->printError());
    }

    return Request::emptyResponse();
}