DTO
DTO (Data Transfer Object) - простой объект, хранящий в себе необходимые данные.
UserDto
Объект, содержащий информацию о пользователе.
Параметры
| Параметр | Тип | Описание |
|---|---|---|
| id | int | Идентификатор пользователя |
| isBot | bool | Является ли пользователь ботом |
| firstName | string | Имя пользователя |
| lastName | string|null | Фамилия пользователя |
| username | string|null | @ пользователя |
| languageCode | string|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
Объект, содержащий информацию о чате. Это может быть личный чат, группа, супергруппа или канал.
Параметры
| Параметр | Тип | Описание |
|---|---|---|
| id | int | Уникальный идентификатор чата |
| type | string | Тип чата. Может быть private, group, supergroup или channel |
| title | string|null | Название чата (для групп, супергрупп и каналов) |
| username | string|null | Username чата (для личных чатов, супергрупп и каналов) |
| firstName | string|null | Имя собеседника в личном чате |
| lastName | string|null | Фамилия собеседника в личном чате |
| description | string|null | Описание чата (для групп, супергрупп и каналов) |
| inviteLink | string|null | Основная пригласительная ссылка в чат |
| isForum | bool|null | true, если супергруппа является форумом с темами (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. Это может быть текстовое сообщение, медиафайл, системное уведомление о входе пользователя и т.д.
Параметры
| Параметр | Тип | Описание |
|---|---|---|
| messageId | int | Уникальный идентификатор сообщения |
| date | int | Дата отправки сообщения (Unix timestamp) |
| chat | ChatDto | Объект чата, в который было отправлено сообщение |
| messageThreadId | int|null | ID темы (для форумов) или ID сообщения, на которое отвечают |
| from | UserDto|null | Отправитель сообщения (может отсутствовать в каналах) |
| senderChat | ChatDto|null | Отправитель-чат (для каналов или анонимных админов) |
| replyToMessage | MessageDto|null | Объект сообщения, на которое дан ответ (рекурсивно) |
| pinnedMessage | MessageDto|null | Закрепленное сообщение (если это системное сообщение о закрепе) |
| text | string|null | Текст сообщения (для текстовых сообщений) |
| caption | string|null | Подпись к медиафайлу |
| entities | array|null | Массив специальных сущностей в тексте (ссылки, жирный шрифт и т.д.) |
| captionEntities | array|null | Массив специальных сущностей в подписи |
| dice | array|null | Инфо об анимированном эмодзи (['emoji' => '🎲', 'value' => 6]) |
| photo | array|null | Массив размеров фото |
| sticker | array|null | Информация о стикере |
| video | array|null | Информация о видео |
| audio | array|null | Информация об аудио |
| voice | array|null | Информация о голосовом сообщении |
| document | array|null | Информация о документе |
| isTopicMessage | bool|null | true, если сообщение является сервисным сообщением о создании топика |
| newChatMembers | array|null | Массив объектов UserDto новых участников чата |
| leftChatMember | UserDto|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();