From 9b96bad68d7caaa4369366cf22676ba150a30d8d Mon Sep 17 00:00:00 2001 From: Roman Khabarov Date: Tue, 9 Jul 2024 22:38:29 +0200 Subject: [PATCH] chore: docs --- docs/content/interactions/_category_.yml | 4 ++ .../interactions/interaction-components.md | 51 ++++++++++++++++++ docs/static/img/content/button.jpg | Bin 0 -> 27152 bytes examples/inline-keyboard/src/app.service.ts | 4 +- 4 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 docs/content/interactions/_category_.yml create mode 100644 docs/content/interactions/interaction-components.md create mode 100644 docs/static/img/content/button.jpg diff --git a/docs/content/interactions/_category_.yml b/docs/content/interactions/_category_.yml new file mode 100644 index 0000000..5f6bf0c --- /dev/null +++ b/docs/content/interactions/_category_.yml @@ -0,0 +1,4 @@ +label: 'Interactions' +position: 4 +collapsible: true +collapsed: false diff --git a/docs/content/interactions/interaction-components.md b/docs/content/interactions/interaction-components.md new file mode 100644 index 0000000..55c3baa --- /dev/null +++ b/docs/content/interactions/interaction-components.md @@ -0,0 +1,51 @@ +--- +id: message-interactions + +title: Message Interactions + +sidebar_position: 3 +--- + +**Message interactions** — we'll call them "interaction" moving forward—are a framework for adding interactive elements to the messages your app or bot sends. They're accessible, customizable, and easy to use. + +There are several different types of interactions; this documentation will outline the basics of this new framework and each example. + +## Button + +**Buttons** are interactive components that render on messages. They can be clicked by users, and send an interaction to your app when clicked. + +Buttons + +```typescript title="src/app.components.ts" +import { Injectable } from '@nestjs/common'; +import { Context, Button, ButtonContext, ComponentParam, On, TextCommandContext } from '@nestgramjs/core'; +import { Markup, Telegraf } from 'telegraf'; + +@Injectable() +export class AppService { + @TextCommand({ + name: 'start', + description: 'Displays this help message.', + }) + onStart(@Context() [ctx]: TextCommandContext) { + const inlineKeyboard = Markup.inlineKeyboard([ + { + text: 'Button 1', + callback_data: 'nestgram/button1', + }, + { + text: 'Button 2', + callback_data: 'nestgram/button2', + }, + ]) + + ctx.reply('Start message', inlineKeyboard); + } + + @Button('nestgram/:name') + async handleClickButton(@Context() ctx: ButtonContext, @ComponentParam('name') name: string) { + await ctx.reply(`clicked on ${name}`); + } +} +``` + diff --git a/docs/static/img/content/button.jpg b/docs/static/img/content/button.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3916b26390c6cf9ac1e0731ee896c8b0e108c374 GIT binary patch literal 27152 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