Перейти к содержимому

DTO

DTO (Data Transfer Object) - простой объект, хранящий в себе необходимые данные.

UserDto

Объект, содержащий информацию о пользователе.

Параметры

ПараметрТипОписание
idintИдентификатор пользователя
isBotboolЯвляется ли пользователь ботом
firstNamestringИмя пользователя
lastNamestring|nullФамилия пользователя
usernamestring|null@ пользователя
languageCodestring|nullКод языка

Пример

php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use ZenithGram\ZenithGram\ZG;
use ZenithGram\ZenithGram\Bot;

$tg = ZG::create(BOT_TOKEN);
$bot = new Bot($tg);

$bot->onCommand('/userdto')
    ->func(function (ZG $tg) {
    
        $user = $tg->getUser();
    
        $id = $user->id;
        $isBot = $user->isBot;
        $firstName = $user->firstName;
        $lastName = $user->lastName;
        $username = $user->username;
        $languageCode = $user->languageCode;
    
        $tg->msg(
            "Вся информация о пользователе:\n" .
            "ID: $id\n" .
            "Является ботом: " . ($isBot ? 'да' : 'нет') . "\n" .
            "Имя: $firstName\n" .
            "Фамилия: " . ($lastName ?? 'отсутствует') . "\n" .
            "Username: " . $username . "\n" .
            "Код языка: " . ($languageCode ?? 'не указан'),
        )->send();
        
});

$bot->run();

ChatDto

Объект, содержащий информацию о чате. Это может быть личный чат, группа, супергруппа или канал.

Параметры

ПараметрТипОписание
idintУникальный идентификатор чата
typestringТип чата. Может быть private, group, supergroup или channel
titlestring|nullНазвание чата (для групп, супергрупп и каналов)
usernamestring|nullUsername чата (для личных чатов, супергрупп и каналов)
firstNamestring|nullИмя собеседника в личном чате
lastNamestring|nullФамилия собеседника в личном чате
descriptionstring|nullОписание чата (для групп, супергрупп и каналов)
inviteLinkstring|nullОсновная пригласительная ссылка в чат
isForumbool|nulltrue, если супергруппа является форумом с темами (topics)

Пример

php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use ZenithGram\ZenithGram\ZG;
use ZenithGram\ZenithGram\Bot;

$tg = ZG::create(BOT_TOKEN);
$bot = new Bot($tg);

$bot->onCommand('/chatdto')
    ->func(function (ZG $tg) {
    
        $chat = $tg->getChat();
    
        $id = $chat->id;
        $type = $chat->type;
        $title = $chat->title;
        $username = $chat->username;
        $firstName = $chat->firstName;
        $lastName = $chat->lastName;
        $description = $chat->description;
        $inviteLink = $chat->inviteLink;
        $isForum = $chat->isForum;
    
        $tg->msg(
            "Вся информация о чате:\n" .
            "ID: $id\n" .
            "Тип: $type\n" .
            "Название: " . ($title ?? 'отсутствует') . "\n" .
            "Username: @" . ($username ?? 'отсутствует') . "\n" .
            "Имя (для ЛС): " . ($firstName ?? 'не применимо') . "\n" .
            "Фамилия (для ЛС): " . ($lastName ?? 'не применимо') . "\n" .
            "Описание: " . ($description ?? 'отсутствует') . "\n" .
            "Ссылка-приглашение: " . ($inviteLink ?? 'отсутствует') . "\n" .
            "Является форумом: " . $isForum,
        )->send();
        
    });

$bot->run();

MessageDto

Объект, представляющий сообщение из Telegram API. Это может быть текстовое сообщение, медиафайл, системное уведомление о входе пользователя и т.д.

Параметры

ПараметрТипОписание
messageIdintУникальный идентификатор сообщения
dateintДата отправки сообщения (Unix timestamp)
chatChatDtoОбъект чата, в который было отправлено сообщение
messageThreadIdint|nullID темы (для форумов) или ID сообщения, на которое отвечают
fromUserDto|nullОтправитель сообщения (может отсутствовать в каналах)
senderChatChatDto|nullОтправитель-чат (для каналов или анонимных админов)
replyToMessageMessageDto|nullОбъект сообщения, на которое дан ответ (рекурсивно)
pinnedMessageMessageDto|nullЗакрепленное сообщение (если это системное сообщение о закрепе)
textstring|nullТекст сообщения (для текстовых сообщений)
captionstring|nullПодпись к медиафайлу
entitiesarray|nullМассив специальных сущностей в тексте (ссылки, жирный шрифт и т.д.)
captionEntitiesarray|nullМассив специальных сущностей в подписи
dicearray|nullИнфо об анимированном эмодзи (['emoji' => '🎲', 'value' => 6])
photoarray|nullМассив размеров фото
stickerarray|nullИнформация о стикере
videoarray|nullИнформация о видео
audioarray|nullИнформация об аудио
voicearray|nullИнформация о голосовом сообщении
documentarray|nullИнформация о документе
isTopicMessagebool|nulltrue, если сообщение является сервисным сообщением о создании топика
newChatMembersarray|nullМассив объектов UserDto новых участников чата
leftChatMemberUserDto|nullОбъект UserDto участника, покинувшего чат

Полезные методы

Класс MessageDto содержит встроенные методы для удобной работы с данными:

  • getEffectiveText(): ?string — Возвращает текст сообщения. Если текста нет, возвращает подпись (caption).
  • isReply(): bool — Возвращает true, если сообщение является ответом на другое сообщение.
  • getDiceEmoji(): ?string — Возвращает эмодзи кубика (например, 🎲), если сообщение является dice.

Пример

php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use ZenithGram\ZenithGram\ZG;
use ZenithGram\ZenithGram\Bot;

$tg = ZG::create(BOT_TOKEN);
$bot = new Bot($tg);

$bot->onCommand('/msginfo')
    ->func(function (ZG $tg) {
        $msg = $tg->getMessage(); 

        $id = $msg->messageId;
        $chatTitle = $msg->chat->title ?? 'Личный чат';
        $senderName = $msg->from?->firstName ?? 'Аноним';
        
        $content = $msg->getEffectiveText() ?? '[Медиа без подписи]';
        
        $replyStatus = $msg->isReply() 
            ? "Это ответ на сообщение ID: " . $msg->replyToMessage->messageId 
            : "Это не ответ";

        $tg->msg(
            "📨 <b>Инфо о сообщении:</b>\n" .
            "🆔 ID: $id\n" .
            "📅 Дата: " . date('d.m.Y H:i', $msg->date) . "\n" .
            "💬 Чат: $chatTitle\n" .
            "👤 От: $senderName\n" .
            "📄 Контент: $content\n" .
            "🔗 $replyStatus"
        )->send();
    });

$bot->run();

Опубликовано под лицензией MIT.