Режим форматування (parse-mode
)
Цей плагін надає перетворювач для встановлення стандартного parse
, а також проміжний обробник для гідратації Context
звичними варіантами методу reply
, а саме: reply
, reply
тощо.
Використання (покращення досвіду форматування)
ts
import { Bot, Context } from "grammy";
import { bold, fmt, hydrateReply, italic, link } from "@grammyjs/parse-mode";
import type { ParseModeFlavor } from "@grammyjs/parse-mode";
const bot = new Bot<ParseModeFlavor<Context>>("");
// Встановлюємо плагін.
bot.use(hydrateReply);
bot.command("demo", async (ctx) => {
await ctx.replyFmt(fmt`${bold("жирний!")}
${bold(italic("жирний курсив!"))}
${bold(fmt`жирний ${link("жирне посилання", "example.com")} жирний`)}`);
// `fmt` також можна викликати як будь-яку іншу функцію.
await ctx.replyFmt(
fmt(
["", " і ", " і ", ""],
fmt`${bold("жирний")}`,
fmt`${bold(italic("жирний курсив"))}`,
fmt`${italic("курсив")}`,
),
);
});
bot.start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
js
const { Bot, Context } = require("grammy");
const { bold, fmt, hydrateReply, italic, link } = require(
"@grammyjs/parse-mode",
);
const bot = new Bot("");
// Встановлюємо плагін.
bot.use(hydrateReply);
bot.command("demo", async (ctx) => {
await ctx.replyFmt(fmt`${bold("жирний!")}
${bold(italic("жирний курсив!"))}
${bold(fmt`жирний ${link("жирне посилання", "example.com")} жирний`)}`);
// `fmt` також можна викликати як будь-яку іншу функцію.
await ctx.replyFmt(
fmt(
["", " і ", " і ", ""],
fmt`${bold("жирний")}`,
fmt`${bold(italic("жирний курсив"))}`,
fmt`${italic("курсив")}`,
),
);
});
bot.start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
ts
import { Bot, Context } from "https://deno.land/x/grammy@v1.30.0/mod.ts";
import {
bold,
fmt,
hydrateReply,
italic,
link,
} from "https://deno.land/x/grammy_parse_mode@1.10.0/mod.ts";
import type { ParseModeFlavor } from "https://deno.land/x/grammy_parse_mode@1.10.0/mod.ts";
const bot = new Bot<ParseModeFlavor<Context>>("");
// Встановлюємо плагін.
bot.use(hydrateReply);
bot.command("demo", async (ctx) => {
await ctx.replyFmt(fmt`${bold("жирний!")}
${bold(italic("жирний курсив!"))}
${bold(fmt`жирний ${link("жирне посилання", "example.com")} жирний`)}`);
// `fmt` також можна викликати як будь-яку іншу функцію.
await ctx.replyFmt(
fmt(
["", " і ", " і ", ""],
fmt`${bold("жирний")}`,
fmt`${bold(italic("жирний курсив"))}`,
fmt`${italic("курсив")}`,
),
);
});
bot.start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Використання (типовий режим форматування та методи відповіді)
ts
import { Bot, Context } from "grammy";
import { hydrateReply, parseMode } from "@grammyjs/parse-mode";
import type { ParseModeFlavor } from "@grammyjs/parse-mode";
const bot = new Bot<ParseModeFlavor<Context>>("");
// Встановлюємо плагін.
bot.use(hydrateReply);
// Встановлюємо типовий режим форматування для `ctx.reply`
bot.api.config.use(parseMode("MarkdownV2"));
bot.command("demo", async (ctx) => {
await ctx.reply("*Це* `форматування` _за_ замовчуванням");
await ctx.replyWithHTML(
"<b>Це</b> <code>форматування</code> методу <i>withHTML</i> ",
);
await ctx.replyWithMarkdown("*Це* `форматування` методу _withMarkdown_");
await ctx.replyWithMarkdownV1("*Це* `форматування` методу _withMarkdownV1_");
await ctx.replyWithMarkdownV2("*Це* `форматування` методу _withMarkdownV2_");
});
bot.start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
js
const { Bot, Context } = require("grammy");
const { hydrateReply, parseMode } = require("@grammyjs/parse-mode");
const bot = new Bot("");
// Встановлюємо плагін.
bot.use(hydrateReply);
// Встановлюємо типовий режим форматування для `ctx.reply`
bot.api.config.use(parseMode("MarkdownV2"));
bot.command("demo", async (ctx) => {
await ctx.reply("*Це* `форматування` _за_ замовчуванням");
await ctx.replyWithHTML(
"<b>Це</b> <code>форматування</code> методу <i>withHTML</i> ",
);
await ctx.replyWithMarkdown("*Це* `форматування` методу _withMarkdown_");
await ctx.replyWithMarkdownV1("*Це* `форматування` методу _withMarkdownV1_");
await ctx.replyWithMarkdownV2("*Це* `форматування` методу _withMarkdownV2_");
});
bot.start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ts
import { Bot, Context } from "https://deno.land/x/grammy@v1.30.0/mod.ts";
import {
hydrateReply,
parseMode,
} from "https://deno.land/x/grammy_parse_mode@1.10.0/mod.ts";
import type { ParseModeFlavor } from "https://deno.land/x/grammy_parse_mode@1.10.0/mod.ts";
const bot = new Bot<ParseModeFlavor<Context>>("");
// Встановлюємо плагін.
bot.use(hydrateReply);
// Встановлюємо типовий режим форматування для `ctx.reply`
bot.api.config.use(parseMode("MarkdownV2"));
bot.command("demo", async (ctx) => {
await ctx.reply("*Це* `форматування` _за_ замовчуванням");
await ctx.replyWithHTML(
"<b>Це</b> <code>форматування</code> методу <i>withHTML</i> ",
);
await ctx.replyWithMarkdown("*Це* `форматування` методу _withMarkdown_");
await ctx.replyWithMarkdownV1("*Це* `форматування` методу _withMarkdownV1_");
await ctx.replyWithMarkdownV2("*Це* `форматування` методу _withMarkdownV2_");
});
bot.start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27