Ігри
Вступ
Ігри Telegram — це дуже цікава функція, яку дуже весело використовувати. Що ви можете з нею робити? За допомогою цієї функції ви можете надати користувачам Telegram будь-яку гру на HTML5, яку ви розробили. Так, це означає, що вам доведеться розробити справжню гру на вебсайті, яка є загальнодоступною в Інтернеті, перш ніж ви зможете інтегрувати її у свого бота Telegram.
Налаштування гри з вашим ботом через @BotFather
Для простоти припустимо, що на даний момент ви вже налаштували бота та повʼязану з ним гру в @Bot
Примітка: ми вивчатимемо лише розробку бота. Розробка гри повністю залежить від розробника. Все, що нам тут потрібно, — це посилання на гру, зроблену на HTML5 та розміщену в Інтернеті.
Надсилання гри через бота
Ми можемо надіслати гру в grammY за допомогою методу reply
, який приймає назву гри, яку ви створили за допомогою BotFather, як аргумент. Крім того, ми також можемо використати метод api
, адже grammY надає всі офіційні методи Bot API. Перевага використання методу api
полягає в тому, що ви можете вказати chat
конкретного користувача, якому потрібно надіслати гру.
Надсилання гри через
reply
With Game ts// Використовуємо команду start для виклику методу відповіді грою. bot.command("start", async (ctx) => { // Передаємо назву гри, яку ми створили в BotFather: наприклад, "моя-гра". await ctx.replyWithGame("моя-гра"); });
1
2
3
4
5Надсилання гри через
api
.send Game tsbot.command("start", async (ctx) => { // Отримаємо ідентифікатор чату користувача, якому потрібно надіслати гру, за допомогою `ctx.from.id`, // який повертає ідентифікатор чату користувача, який відправив команду start. const chatId = ctx.from.id; await ctx.api.sendGame(chatid, "моя-гра"); });
1
2
3
4
5
6
Памʼятайте, що ви можете вказати додаткові параметри під час надсилання повідомлень за допомогою обʼєкта параметрів типу
Other
.
Ви також можете вказати спеціальну вбудовану клавіатуру, щоб у грі відображалися кнопки. Її буде надіслано разом із кнопкою з написом Запустити моя
, де моя-гра — це назва вашої гри.
// Визначаємо нову вбудовану клавіатуру. Ви можете написати будь-який текст,
// який буде показано на кнопці, але переконайтеся, що перша кнопка завжди є
// кнопкою запуску гри!
const keyboard = new InlineKeyboard().game("Запустити моя-гра");
// Зверніть увагу, що ми використали game() на відміну від звичайної вбудованої клавіатури
// де ми використовуємо url() або text()
// Надсилаємо за допомогою методу `replyWithGame`
await ctx.replyWithGame("моя-гра", { reply_markup: keyboard });
// Надсилаємо за допомогою методу `api.sendGame`
await ctx.api.sendGame(chatId, "моя-гра", { reply_markup: keyboard });
2
3
4
5
6
7
8
9
10
11
12
13
14
Оброблення зворотного виклику нашої ігрової кнопки
Для надання логіки кнопці при її натисканні та для перенаправлення наших користувачів до нашої гри та ще багато чого іншого, ми обробляємо подію callback
, яка повідомляє нам, що користувач натиснув кнопку гри. Усе, що нам потрібно зробити, це:
// Передаємо тут URL-адресу гри, яка вже має бути розміщена в Інтернеті.
bot.on("callback_query:game_short_name", async (ctx) => {
await ctx.answerCallbackQuery({ url: "посилання на гру" });
});
2
3
4
5
Наш остаточний код має виглядати приблизно так
bot.on("callback_query:game_short_name", async (ctx) => {
await ctx.answerCallbackQuery({ url: "посилання на гру" });
});
bot.command("start", async (ctx) => {
await ctx.replyWithGame("моя-гра", {
reply_markup: keyboard,
// Або ми можемо скористатися тут методом API відповідно до наших потреб.
});
});
2
3
4
5
6
7
8
9
10
Не забудьте додати правильну обробку помилок до свого бота перед тим, як запускати його.
У майбутньому ми можемо розширити цю статтю додатковими розширеними розділами та поширеними запитаннями, але це вже все, що вам потрібно, щоб запустити гру в Telegram. Веселої гри! 👾