Emoji 插件(emoji
)
有了这个插件,你可以轻松地在你的回复中插入搜索到的 emoji,而不是在你的代码中手动复制和粘贴网络上的一个 emoji。
我为什么要使用它?
为什么不呢?人们总是在他们的代码中使用 emoji,以更好地说明他们愿意传递的信息或组织事情。 但是每次你需要一个新的 emoji 时,你就不能专注在写代码上,比如:
- 你停止编码来搜索一个特定的 emoji。
- 你去 Telegram 中,花了 ~6 秒(可能还会更多)搜索你想要的表情符号。
- 你把它们复制粘贴到你的代码中,并重新开始写代码,但失去了你的注意力。
有了这个插件,你就不用停止写代码,也不会失去你的注意力。 也有一些糟糕的系统和/或编辑器不喜欢也不显示 emoji,所以你最后只能粘贴一个白色的方块,就像这个悲哀的、小的、安静的信息:I'm so happy □
。
这个插件旨在解决这些问题,为你处理所有系统中解析 emoji 的艰巨任务,并让你只用简单的方式搜索它们(可以使用自动完成)。 现在,上述步骤可以减少到一个:
- 在你的代码中描述你想要的 emoji 并使用它。就这么简单。
这是妖术吗?
不,它被称为模板字符串。 你可以在 这里 阅读更多关于它们的信息。
安装和示例
你可以在你的 bot 上安装这个插件,像这样:
ts
import { Bot, Context } from "grammy";
import { EmojiFlavor, emojiParser } from "@grammyjs/emoji";
// 这个被称为上下文调味剂
// 你可以在这里阅读更多关于它们的信息:
// https://grammy.dev/zh/guide/context#转换式上下文调味剂
type MyContext = EmojiFlavor<Context>;
const bot = new Bot<MyContext>("");
bot.use(emojiParser());
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
js
const { Bot } = require("grammy");
const { emojiParser } = require("@grammyjs/emoji");
const bot = new Bot("");
bot.use(emojiParser());
1
2
3
4
5
6
2
3
4
5
6
ts
import { Bot, Context } from "https://deno.land/x/grammy@v1.27.0/mod.ts";
import {
EmojiFlavor,
emojiParser,
} from "https://deno.land/x/grammy_emoji@v1.2.0/mod.ts";
// 这个被称为上下文调味剂
// 你可以在这里阅读更多关于它们的信息:
// https://grammy.dev/zh/guide/context#转换式上下文调味剂
type MyContext = EmojiFlavor<Context>;
const bot = new Bot<MyContext>("");
bot.use(emojiParser());
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
现在你可以通过它们的名字来获得 emoji:
js
bot.command("start", async (ctx) => {
const parsedString = ctx.emoji`Welcome! ${"smiling_face_with_sunglasses"}`; // => Welcome! 😎
await ctx.reply(parsedString);
});
1
2
3
4
2
3
4
或者,你也可以使用 reply
方法直接回复:
js
bot.command("ping", async (ctx) => {
await ctx.replyWithEmoji`Pong ${"ping_pong"}`; // => Pong 🏓
});
1
2
3
2
3
请牢记
ctx
和 ctx
总是使用模板字符串。 如果你不熟悉这种语法,你可以在 这里 阅读更多关于它的信息。
有用的反应数据
当你在 bot 中使用 反应 时,你还必须使用表情符号进行大量编程! 这同样令人烦恼,由于这个插件是你所有 emoji 使用的得力助手,它也可以帮助你做出反应。
你可以从该插件导入 Reactions
,然后按如下方式使用它。
ts
bot.on("message", (ctx) => ctx.react(Reactions.thumbs_up));
1
夺棒!