Skip to content

Commit dfcd12b

Browse files
committed
Merge remote-tracking branch 'origin/main'
2 parents 26db925 + c3386e9 commit dfcd12b

3 files changed

Lines changed: 491 additions & 127 deletions

File tree

llms-full-raw.txt

Lines changed: 254 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,257 @@
1+
---
2+
url: 'https://zenithgram.github.io/classes/button.md'
3+
description: Вспомогательный класс для создания кнопок.
4+
---
5+
6+
# **Button**
7+
8+
Вспомогательный класс для генерации кнопок. Поддерживает все актуальные типы кнопок Telegram API.
9+
10+
## Импорт
11+
12+
Для использования класса необходимо его импортировать через конструкцию `use`. Если вы планируете использовать цветные кнопки, также импортируйте перечисление `ButtonStyle`.
13+
14+
```php
15+
use ZenithGram\ZenithGram\Button;
16+
use ZenithGram\ZenithGram\Enums\ButtonStyle;
17+
```
18+
19+
## Стили и Эмодзи (Общие параметры)
20+
21+
Абсолютно **все** методы класса `Button` принимают два дополнительных опциональных параметра: `$style` и `$customEmojiId`. Для удобства рекомендуется использовать именованные аргументы PHP 8.
22+
23+
* **Стили** поддерживают 4 цвета: `Primary` (Синий), `Success` (Зеленый), `Danger` (Красный) и стандартный цвет Telegram.
24+
* **Эмодзи** работают, если у бота есть юзернейм с Fragment или у получателя есть Telegram Premium.
25+
26+
```php
27+
Button::cb(
28+
text: 'Удалить',
29+
data: 'del_123',
30+
style: ButtonStyle::Danger,
31+
customEmojiId: '5368324170671202286'
32+
);
33+
```
34+
35+
## Комплексный пример использования класса
36+
37+
```php
38+
<?php
39+
// 1. Необходимые импорты
40+
use ZenithGram\ZenithGram\Bot;
41+
use ZenithGram\ZenithGram\ZG;
42+
use ZenithGram\ZenithGram\Button;
43+
use ZenithGram\ZenithGram\Enums\ButtonStyle;
44+
use ZenithGram\ZenithGram\Enums\MessageParseMode;
45+
46+
$tg = ZG::create("BOT_TOKEN");
47+
$bot = new Bot($tg);
48+
49+
// Inline-клавиатура
50+
$bot->onBotCommand('menu', '/menu')
51+
->func(function(ZG $tg) {
52+
53+
// Формируем массив рядов
54+
$inlineKeyboard = [
55+
// Первый ряд: 3 кнопки со всеми доступными стилями
56+
[
57+
Button::cb('Отмена', 'cancel', ButtonStyle::Danger),
58+
Button::cb('Ок', 'confirm', ButtonStyle::Success),
59+
Button::cb('Инфо', 'info', ButtonStyle::Primary)
60+
],
61+
// Второй ряд: 2 кнопки (Ссылка и Копирование текста с кастомным эмодзи)
62+
[
63+
Button::url('Наш сайт', 'https://example.com'),
64+
Button::copyText(
65+
text: 'Промокод',
66+
textToCopy: 'SALE-2025',
67+
customEmojiId: '5368324170671202286' // ID эмодзи
68+
)
69+
],
70+
// Третий ряд: 1 кнопка на всю ширину (Инлайн режим)
71+
[
72+
Button::switchInlineCurrent('🔎 Поиск по каталогу', 'найти ')
73+
]
74+
];
75+
76+
$tg->msg("🗂 <b>Главное меню</b>\nВыберите нужное действие:")
77+
->parseMode(MessageParseMode::HTML)
78+
->inlineKbd($inlineKeyboard)
79+
->send();
80+
});
81+
82+
// Reply-клавиатура
83+
$bot->onBotCommand('tools', '/tools')
84+
->func(function(ZG $tg) {
85+
86+
$replyKeyboard = [
87+
// Первый ряд: запросы пользователей и чатов
88+
[
89+
Button::requestUsers('👥 Выбрать 2-х юзеров', requestId: 1, options: ['max_quantity' => 2]),
90+
Button::requestChat('📢 Выбрать канал', requestId: 2, chatIsChannel: true)
91+
],
92+
// Второй ряд: локация и создание опроса
93+
[
94+
Button::location('📍 Моя геопозиция'),
95+
Button::poll('📊 Сделать опрос', type: 'regular')
96+
],
97+
// Третий ряд: обычный текст для закрытия
98+
[
99+
Button::text('❌ Закрыть меню')
100+
]
101+
];
102+
103+
$tg->msg("🛠 <b>Инструменты</b>\nВоспользуйтесь функциями ниже:")
104+
->parseMode(MessageParseMode::HTML)
105+
->kbd($replyKeyboard, resize: true)
106+
->send();
107+
});
108+
109+
$bot->run();
110+
```
111+
112+
## text
113+
114+
Обычная текстовая кнопка (Reply)
115+
116+
```php
117+
Button::text('Текст кнопки');
118+
```
119+
120+
## cb
121+
122+
Inline кнопка с Callback Data
123+
124+
```php
125+
Button::cb('Текст кнопки', 'callbackData');
126+
```
127+
128+
## url
129+
130+
Inline кнопка-ссылка
131+
132+
```php
133+
Button::url('Текст кнопки', 'https://example.com');
134+
```
135+
136+
## webApp
137+
138+
Кнопка для запуска WebApp (Поддерживается как для Inline, так и для Reply)
139+
140+
```php
141+
Button::webApp('Открыть приложение', 'https://app.url');
142+
```
143+
144+
## contact
145+
146+
Кнопка запроса контакта (Reply)
147+
148+
```php
149+
Button::contact('Отправить контакт');
150+
```
151+
152+
## location
153+
154+
Кнопка запроса геолокации (Reply)
155+
156+
```php
157+
Button::location('Отправить геопозицию');
158+
```
159+
160+
## copyText
161+
162+
Inline кнопка для копирования заданного текста в буфер обмена пользователя
163+
164+
```php
165+
Button::copyText('Скопировать промокод', 'PROMO-2025');
166+
```
167+
168+
## switchInline
169+
170+
Inline кнопка, переводящая пользователя в другой чат с активацией инлайн-режима бота
171+
172+
```php
173+
Button::switchInline('Поиск в другом чате', 'текст запроса');
174+
```
175+
176+
## switchInlineCurrent
177+
178+
Inline кнопка, активирующая инлайн-режим бота в текущем чате
179+
180+
```php
181+
Button::switchInlineCurrent('Искать здесь', 'текст запроса');
182+
```
183+
184+
## switchInlineChosen
185+
186+
Inline кнопка для активации инлайн-режима с предварительным выбором типа чата (группы, каналы, лс)
187+
188+
```php
189+
Button::switchInlineChosen('Выбрать чат', [
190+
'query' => 'запрос',
191+
'allow_group_chats' => true
192+
]);
193+
```
194+
195+
## loginUrl
196+
197+
Inline кнопка для беспарольной авторизации на сайте через Telegram
198+
199+
```php
200+
Button::loginUrl('Войти через Telegram', ['url' => 'https://example.com/login']);
201+
```
202+
203+
## requestUsers
204+
205+
Кнопка запроса выбора одного или нескольких пользователей/ботов (Reply)
206+
207+
```php
208+
Button::requestUsers('Выбрать 2-х Premium юзеров', requestId: 1, options: [
209+
'user_is_premium' => true,
210+
'max_quantity' => 2
211+
]);
212+
```
213+
214+
## requestChat
215+
216+
Кнопка запроса выбора группы или канала по заданным критериям (Reply)
217+
218+
```php
219+
Button::requestChat('Выбрать канал', requestId: 2, chatIsChannel: true, options: [
220+
'chat_has_username' => true
221+
]);
222+
```
223+
224+
## requestManagedBot
225+
226+
Кнопка запроса на создание управляемого бота (Reply)
227+
228+
```php
229+
Button::requestManagedBot('Создать бота', requestId: 3, options: [
230+
'suggested_name' => 'Мой новый бот'
231+
]);
232+
```
233+
234+
## poll
235+
236+
Кнопка, предлагающая пользователю создать опрос или викторину и отправить боту (Reply)
237+
238+
```php
239+
Button::poll('Создать викторину', 'quiz'); // 'regular', 'quiz' или null
240+
```
241+
242+
## pay
243+
244+
Inline кнопка для оплаты счетов (включая Telegram Stars)
245+
::: warning Важно
246+
Эту кнопку **нельзя** прикрепить к обычному текстовому сообщению. Она должна быть первой кнопкой в первом ряду и отправляться исключительно через метод API `sendInvoice`.
247+
:::
248+
249+
```php
250+
Button::pay('Оплатить 100⭐');
251+
```
252+
253+
---
254+
1255
---
2256
url: 'https://zenithgram.github.io/classes/actionMethods/access.md'
3257
description: Ограничивает доступ к маршруту по ID пользователя (белый список).
@@ -723,73 +977,6 @@ $bot->run();
723977

724978
---
725979

726-
---
727-
url: 'https://zenithgram.github.io/classes/button.md'
728-
description: Вспомогательный класс для создания кнопок.
729-
---
730-
731-
# **Button**
732-
733-
Вспомогательный класс для генерации кнопок
734-
735-
## Импорт
736-
737-
Для использования класса необходимо его импортировать через конструкцию `use`
738-
739-
```php
740-
use ZenithGram\ZenithGram\Button;
741-
```
742-
743-
## text
744-
745-
Обычная текстовая кнопка
746-
747-
```php
748-
Button::text('Текст кнопки');
749-
```
750-
751-
## cb
752-
753-
Inline кнопка
754-
755-
```php
756-
Button::cb('Текст кнопки', 'callbackData');
757-
```
758-
759-
## url
760-
761-
Inline кнопка-ссылка
762-
763-
```php
764-
Button::url('Текст кнопки', 'http://button.url');
765-
```
766-
767-
## webApp
768-
769-
Inline кнопка для WebApp
770-
771-
```php
772-
Button::webApp('Текст кнопки', 'http://app.url');
773-
```
774-
775-
## contact
776-
777-
Кнопка запроса контакта
778-
779-
```php
780-
Button::contact('Текст кнопки');
781-
```
782-
783-
## location
784-
785-
Кнопка запроса геолокации
786-
787-
```php
788-
Button::location('Текст кнопки');
789-
```
790-
791-
---
792-
793980
---
794981
url: 'https://zenithgram.github.io/classes/zenithMethods/callAPI.md'
795982
description: Выполняет произвольный метод Telegram Bot API.

0 commit comments

Comments
 (0)