Ігри
Вступ
Ігри Telegram — це дуже цікава функція, яку дуже весело використовувати. Що ви можете з нею робити? За допомогою цієї функції ви можете надати користувачам Telegram будь-яку гру на HTML5, яку ви розробили. Так, це означає, що вам доведеться розробити справжню гру на вебсайті, яка є загальнодоступною в Інтернеті, перш ніж ви зможете інтегрувати її у свого бота Telegram.
Налаштування гри з вашим ботом через @BotFather
Для простоти припустимо, що на даний момент ви вже налаштували бота та повʼязану з ним гру в @Bot
Примітка: ми вивчатимемо лише розробку бота. Розробка гри повністю залежить від розробника. Все, що нам тут потрібно, — це посилання на гру, зроблену на HTML5 та розміщену в Інтернеті.
Надсилання гри через бота
Ми можемо надіслати гру в grammY за допомогою методу reply, який приймає назву гри, яку ви створили за допомогою BotFather, як аргумент. Крім того, ми також можемо використати метод api, адже grammY надає всі офіційні методи Bot API. Перевага використання методу api полягає в тому, що ви можете вказати chat конкретного користувача, якому потрібно надіслати гру.
Надсилання гри через
replyWith 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. Веселої гри! 👾