@grammyjs/conversations
Version:
Conversational interfaces for grammY
60 lines (43 loc) • 1.84 kB
Markdown
---
The grammY conversations plugin lets you create powerful conversational interfaces with ease.
> This is version 2 of the plugin.
> Version 2 is a complete rewrite from scratch.
> If you are still using version 1.x, check out [the migration guide](https://grammy.dev/plugins/conversations#migrating-from-1-x-to-2-x).
> (The old docs are no longer be updated but they can still be found [here](https://6797de6b803511577fcb38ad--grammy.netlify.app/plugins/conversations).)
You should check out [the official documentation](https://grammy.dev/plugins/conversations) of the plugin, but here is a quickstart for you to get up and running.
Run `npm i @grammyjs/conversations` and paste the following code:
```ts
import { Bot, type Context } from "grammy";
import {
type Conversation,
type ConversationFlavor,
conversations,
createConversation,
} from "@grammyjs/conversations";
type MyContext = ConversationFlavor<Context>;
type MyConversationContext = Context;
type MyConversation = Conversation<MyContext, MyConversationContext>;
const bot = new Bot<MyContext>("");
/** Defines the conversation */
async function greeting(
conversation: MyConversation,
ctx: MyConversationContext,
) {
await ctx.reply("Hi there! What is your name?");
const { message } = await conversation.wait();
await ctx.reply(`Welcome to the chat, ${message.text}!`);
}
bot.use(conversations());
bot.use(createConversation(greeting));
bot.command("enter", async (ctx) => {
await ctx.reply("Entering conversation!");
// enter the function "greeting" you declared
await ctx.conversation.enter("greeting");
});
bot.command("start", (ctx) => ctx.reply("Hi! Send /enter"));
bot.use((ctx) => ctx.reply("What a nice update."));
bot.start();
```
Nifty!