DEF STUDIO srl

Installation & Configuration

You can install the package via composer:

composer require defstudio/telegraph

Set up

In order to work, Telegraph needs you to run its migrations:

php artisan vendor:publish --tag="telegraph-migrations"
php artisan migrate

Configuration

You can publish the config file with:

php artisan vendor:publish --tag="telegraph-config"

here's an example of what you'll find:

return [
    /*
     * Telegram api base url, it can be overridden
     * for self-hosted servers
     */
    'telegram_api_url' => 'https://api.telegram.org/',

    /*
     * Sets Telegraph messages default parse mode
     * allowed values: html|markdown|MarkdownV2
     */
    'default_parse_mode' => Telegraph::PARSE_HTML,

    'webhook' => [
        /*
         * Sets the webhook URL that will be exposed by the server,
         * this can be customized or entirely disabled (by setting it to NULL)
         */
        'url' => '/telegraph/{token}/webhook',

        /*
         * Sets the handler to be used when Telegraph
         * receives a new webhook call.
         *
         * For reference, see https://docs.defstudio.it/telegraph/v1/webhooks/overview
         */
        'handler' => DefStudio\Telegraph\Handlers\EmptyWebhookHandler::class,

        /*
         * Middleware to be applied to the webhook route
         */
        'middleware' => [],

        /*
         * Sets a custom domain when registering a webhook. This will allow a local telegram bot api server
         * to reach the webhook. Disabled by default
         *
         * For reference, see https://core.telegram.org/bots/api#using-a-local-bot-api-server
         */
        // 'domain' => 'http://my.custom.domain',

        /*
         * If enabled, unknown webhook commands are
         * reported as exception in application logs
         */
        'report_unknown_commands' => true,

        /*
         * If enabled, Telegraph dumps received
         * webhook messages to logs
         */
        'debug' => false,
    ],
    
    /*
     * Sets HTTP request timeout when interacting with Telegram servers
     */
    'http_timeout' => 30,
    
     /*
     * Sets HTTP connection request timeout when interacting with Telegram servers
     */
    'http_connection_timeout' => 10,

    'security' => [
        /*
         * if enabled, allows callback queries from unregistered chats
         */
        'allow_callback_queries_from_unknown_chats' => false,

        /*
         * if enabled, allows messages and commands from unregistered chats
         */
        'allow_messages_from_unknown_chats' => false,

        /*
         * if enabled, store unknown chats as new TelegraphChat models
         */
        'store_unknown_chats_in_db' => false,
    ],

    /*
     * Set model class for both TelegraphBot and TelegraphChat,
     * to allow more customization.
     *
     * Bot model must be or extend `DefStudio\Telegraph\Models\TelegraphBot::class`
     * Chat model must be or extend `DefStudio\Telegraph\Models\TelegraphChat::class`
     */
    'models' => [
        'bot' => DefStudio\Telegraph\Models\TelegraphBot::class,
        'chat' => DefStudio\Telegraph\Models\TelegraphChat::class,
    ],

    'storage' => [
        /**
         * Default storage driver to be used for Telegraph data
         */
        'default' => 'file',

        'stores' => [
            'file' => [
                /**
                 * Telegraph cache driver to be used, must implement
                 * DefStudio\Telegraph\Contracts\StorageDriver contract
                 */
                'driver' => \DefStudio\Telegraph\Storage\FileStorageDriver::class,

                /*
                 * Laravel Storage disk to use. See /config/filesystems/disks for available disks
                 * If 'null', Laravel default store will be used,
                 */
                'disk' => 'local',

                /**
                 * Folder inside filesystem to be used as root for Telegraph storage
                 */
                'root' => 'telegraph',
            ],
            'cache' => [
                /**
                 * Telegraph cache driver to be used, must implement
                 * DefStudio\Telegraph\Contracts\StorageDriver contract
                 */
                'driver' => \DefStudio\Telegraph\Storage\CacheStorageDriver::class,

                /*
                 * Laravel Cache store to use. See /config/cache/stores for available stores
                 * If 'null', Laravel default store will be used,
                 */
                'store' => null,

                /*
                 * Prefix to be prepended to cache keys
                 */
                'key_prefix' => 'tgph',
            ],
        ],
    ],

    /**
     * Attachment validation rules, Telegram bot API defaults are set
     * can be changed to match higher limits when using a local bot
     * API server (ref. https://core.telegram.org/bots/api#using-a-local-bot-api-server)
     */
    'attachments' => [
        'thumbnail' => [
            'max_size_kb' => 200,
            'max_height_px' => 320,
            'max_width_px' => 320,
            'allowed_ext' => ['jpg'],
        ],
        'photo' => [
            'max_size_mb' => 10,
            'max_ratio' => 20,
            'height_width_sum_px' => 10000,
        ],
        'animation' => [
            'max_size_mb' => 50,
        ],
        'video' => [
            'max_size_mb' => 50,
        ],
        'audio' => [
            'max_size_mb' => 50,
        ],
        'document' => [
            'max_size_mb' => 50,
        ],
    ],
];

New bot creation

In order to interact with Telegram, a new bot should be created and associated with a Telegram bot. Follow the quickstart guide for an overview of this.

Suggest a change
Last updated 02 December 2024