Socket
Socket
Sign inDemoInstall

@grammyjs/auto-chat-action

Package Overview
Dependencies
13
Maintainers
2
Versions
2
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @grammyjs/auto-chat-action

A plugin for automatic sending a chat action


Version published
Weekly downloads
1.3K
increased by20.49%
Maintainers
2
Install size
23.4 kB
Created
Weekly downloads
 

Readme

Source

Auto Chat Action plugin for grammY

This plugin provides a middleware to automatically send an appropriate chat action.
For example sends the "sending video" chat action when sendVideo is called.

Installation

Node

npm i @grammyjs/auto-chat-action

Deno

import { autoChatAction } from "https://deno.land/x/grammy_auto_chat_action/mod.ts";

Install plugin

import {
  autoChatAction,
  AutoChatActionFlavor,
} from "@grammyjs/auto-chat-action";

// Extend the context
const bot = new Bot<Context & AutoChatActionFlavor>("");

// Install the plugin
bot.use(autoChatAction());

Usage

import { Bot, Context } from "grammy";
import {
  autoChatAction,
  AutoChatActionFlavor,
} from "@grammyjs/auto-chat-action";

type MyContext = Context & AutoChatActionFlavor;

// Create a bot.
const bot = new Bot<MyContext>("token");

// Install the plugin
bot.use(autoChatAction());

bot.command("start", (ctx) => {
  // Starts sending "typing" chat action in a loop
  ctx.chatAction = "typing";

  // Some long-running operations...

  return ctx.reply("42!");
});

bot.command("photo", (ctx) => {
  // Sending the "upload_photo" chat action until the media is uploaded
  return ctx.replyWithPhoto(
    new InputFile("/tmp/picture.jpg"),
  );
});

bot.start();

Automatic Action Sending

Automatic sending of a chat action starts under the following conditions:

  1. Request method from the list:
    • sendPhoto
    • sendAudio
    • sendDocument
    • sendVideo
    • sendAnimation
    • sendVoice
    • sendVideoNote
    • sendSticker
    • sendMediaGroup
  2. Request payload contains InputFile
  3. Request payload contains a chat ID.

Sending of a chat action stops under one of the following conditions:

  1. Update processing is complete.
  2. Request which requires the chat action is complete.
  3. sendChatAction request caused an error.

Manual Action Sending

Sending chat action with context
// Set the action to be sent until the update is processed
ctx.chatAction = "typing";

// To stop sending, simply set the chat action to null
ctx.chatAction = null;

// You can change the chat action during update processing
ctx.chatAction = "choose_sticker";

Sending other requests that require sending a chat action will interrupt the sending of the current chat action.

ctx.chatAction = "typing";

await ctx.reply("Hi!");

// Sends "upload_photo" while file is uploading
await ctx.replyWithPhoto(
  new InputFile("/tmp/kitten.png"),
);

// Now there is no sending chat action
// ctx.chatAction is null
Sending chat action with middleware
import { chatAction } from "@grammyjs/auto-chat-action";

bot.command("start", chatAction("typing"), (ctx) => {
  // Some long-running operations...

  return ctx.reply("42!");
});
Using with Conversations

You need to pass bot.api explicitly to use the plugin with conversations.

// Pass API instance to the plugin
bot.use(autoChatAction(bot.api));

async function greeting(conversation: Conversation<Context>, ctx: Context) {
  await ctx.reply("Hi there! What is your name?");

  const { message } = await conversation.wait();
  ctx.chatAction = "typing";
  await conversation.sleep(1000);
  await ctx.reply(`Welcome to the chat, ${message.text}!`);
}

Keywords

FAQs

Last updated on 27 Mar 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc