什么是一个插件?

我们想 grammY 是简明扼要的,但可扩展的。 为什么? 因为不是所有人都会使用所有的东西! 插件被设计为添加到上述软件的额外功能。

grammY 中的插件

大部分 bot 都需要的插件被直接内置到 grammY 核心库中。 这让新用户更容易使用它们,避免了需要额外安装一个新的软件包。

官方插件是和 grammY 的核心包一起发布的。 它们从 npm 上的 @grammyjs/* 安装,并在 GitHub 的 @grammyjsopen in new window 组织下发布。 官方插件与 grammY 同步发布,确保插件与 grammY 的运行一致性。 官方插件文档的每一节标题中都有软件包(即插件)的名称。 举个例子,grammY runner 插件(runner)需要通过 npm install @grammyjs/runner 来安装。 (如果你在使用 Deno 而不是 Node.js,你应该从 https://deno.land/xopen in new window 中导入插件,也就是从 grammy_runner 模块的 mod.ts 文件中导入)

还有一些第三方插件。 任何人都可以发布它们。 我们不保证它们是最新的、文档齐全的或与其他插件一起工作的。 如果你愿意,你自己的第三方插件也可以列在网站上,让更多的人知道。

概述

我们为你编制了一个简洁的概述,并为每个插件提供了简短的描述。 安装插件既有趣又简单,我们希望你了解我们为你准备的内容。

点击任何包名称以了解有关相应插件的更多信息

插件描述
Sessions内置将用户数据存储在你的数据库中
Inline and Custom Keyboards内置简化构建 inline 和 custom keyboards
Auto-retryauto-retry自动处理速率限制
Conversationsconversations构建强大的对话界面和对话
Emojiemoji简化在代码中使用 Emoji
Filesfiles轻松的文件处理
Hydrationhydrate对从 API 调用返回的对象调用方法
Internationalizationi18n 或者 fluent让你的机器人说多种语言
Interactive Menusmenu设计具有灵活导航的动态按钮菜单
Parse Modeparse-mode简化消息格式化
Rate Limiterratelimiter自动限制向你的机器人发送垃圾消息的用户
Routerrouter将消息路由到代码的不同部分
Runnerrunner大规模并发长轮询
Stateless Questionstateless-question创建没有数据存储的对话
Flood Controltransformer-throttler自动排队 API 调用以防止洪水等待

我们还有一些第三方插件! 您可以在导航菜单 插件 > 第三方 下找到它们。 一定要看一看!

grammY 中的插件类型

所有闪闪发光的东西都是金子,对吧? 好吧,一种不同的金子! grammY 可以利用两种类型的插件:中间件插件转换器插件。 简单地说,grammY 中的插件要么返回一个中间件函数,要么返回一个转换器函数。 让我们来谈谈其中的区别。

类型 I: 中间件插件

中间件 是一个处理各种形式传入数据的函数。 中间件插件是作为——嗯,你猜对了——中间件,被喂给 bot 的插件。 这意味着你可以通过 bot.use 来安装它们。

类型 II: 转换器插件

转换器函数 与中间件相反! 它是一个处理传出数据的函数。 转换器插件是作为——你没疯!你又猜对了——转换器函数,被喂给 bot 的插件。 这意味着你可以通过 bot.api.config.use 来安装它们。

创建你自己的插件

如果你想开发一个插件并且和其他用户分享(甚至是在官方的 grammY 网站上发布的),你可以查看这个 有用的指南

关于更多插件的想法

我们正在 GitHub 上的这个 issueopen in new window 中收集更多的关于新插件的想法。