Надсилання та отримання повідомлень
Після запуску бота за допомогою bot
, grammY надасть вашим обробникам повідомлення, які користувачі надсилають вашому боту, і ви легко зможете обробити їх за допомогою методів, наданих grammY.
Отримання повідомлень
Це найпростіший спосіб обробляти повідомлення
bot.on("message", async (ctx) => {
const message = ctx.message; // обʼєкт повідомлення
});
2
3
Однак також є низка інших варіантів.
// Оброблюємо команди, такі як /start.
bot.command("start", async (ctx) => {/* ... */});
// Зіставляємо текст повідомлення з рядком або регулярним виразом.
bot.hears(/echo *(.+)?/, async (ctx) => {/* ... */});
2
3
4
5
Ви можете скористатися автодоповненням у своєму редакторі коду, щоб побачити всі доступні параметри, або переглянути всі методи класу Composer
.
Докладніше про фільтрування певних типів повідомлень за допомогою
bot
..on()
Надсилання повідомлень
Усі методи, які можуть використовувати боти (важливий список), доступні в обʼєкті bot
.
// Надсилаємо текстове повідомлення користувачу з id 12345.
await bot.api.sendMessage(12345, "Привіт!");
// За бажанням ми можемо передати обʼєкт параметрів.
await bot.api.sendMessage(12345, "Привіт!", {/* додаткові параметри */});
// Переглядаємо обʼєкт повідомлення надісланого повідомлення.
const message = await bot.api.sendMessage(12345, "Привіт!");
console.log(message.message_id);
// Отримуємо інформацію про самого бота.
const me = await bot.api.getMe();
// тощо
2
3
4
5
6
7
8
9
10
11
12
Кожен метод приймає необовʼязковий обʼєкт параметрів типу Other
, який дозволяє вам встановлювати додаткові параметри для викликів API. Ці обʼєкти параметрів точно відповідають параметрам, які ви можете знайти в списку методів, наведеному вище. Ви також можете скористатися автодоповненням у своєму редакторі коду, щоб побачити всі доступні параметри, або переглянути всі методи класу Api
. Далі на цій сторінці показано кілька прикладів для цього.
Також перегляньте наступний розділ, щоб дізнатися, як обʼєкт контексту в обробниках спрощує надсилання повідомлень!
Надсилання повідомлень із відповіддю
Ви можете скористатися методом відповіді Telegram, вказавши ідентифікатор повідомлення, на яке потрібно відповісти, за допомогою reply
.
bot.hears("ping", async (ctx) => {
// `reply` — це псевдонім для `sendMessage` у тому самому чаті (дивіться наступний розділ).
await ctx.reply("pong", {
// `reply_parameters` встановлює власне відповідь на повідомлення.
reply_parameters: { message_id: ctx.msg.message_id },
});
});
2
3
4
5
6
7
Зауважте, що надсилання повідомлення через
ctx
НЕ означає, що ви автоматично встановлюєте відповідь на отримане повідомлення. Ви повинні вказати.reply reply
для цього. Метод_parameters ctx
— це лише псевдонім для.reply ctx
, дивіться наступний розділ..api .send Message
Параметри відповіді також дозволяють вам відповідати на повідомлення в інших чатах, а також цитувати частини повідомлення, або навіть і те, і інше одночасно! Ознайомтеся з документацією Bot API параметрів відповіді.
Надсилання повідомлення з форматуванням
Перегляньте розділ про параметри форматування у довіднику Telegram Bot API, створеному командою Telegram.
Ви можете надсилати повідомлення жирним шрифтом або курсивом, використовувати URL-адреси тощо. Є два способи зробити це, як описано в розділі про параметри форматування, а саме: Markdown і HTML.
Markdown
Також перегляньте https://
core .telegram .org /bots /api #markdownv2 -style
Надішліть своє повідомлення з розміткою Markdown в тексті та вкажіть parse
.
await bot.api.sendMessage(
12345,
"*Привіт\\!* _Ласкаво просимо_ до [grammY](https://grammy.dev)\\.",
{ parse_mode: "MarkdownV2" },
);
2
3
4
5
HTML
Також перегляньте https://
core .telegram .org /bots /api #html -style
Надішліть своє повідомлення з елементами HTML у тексті та вкажіть parse
.
await bot.api.sendMessage(
12345,
'<b>Привіт!</b> <i>Ласкаво просимо</i> до <a href="https://grammy.dev">grammY</a>.',
{ parse_mode: "HTML" },
);
2
3
4
5
Надсилання файлів
Обробка файлів пояснюється більш детально в пізнішому розділі.
Примусова відповідь
Це може бути корисно, якщо ваш бот працює в режимі конфіденційності у групових чатах.
Коли ви надсилаєте повідомлення, ви можете зробити так, щоб клієнт Telegram користувача автоматично вказував відповідь на це повідомлення. Це означає, що користувач автоматично відповість на повідомлення вашого бота, якщо він не видалить відповідь вручну. Унаслідок цього ваш бот отримуватиме повідомлення користувача навіть під час роботи в режимі конфіденційності у групових чатах.
Ви можете примусово встановити відповідь наступним чином:
bot.command("start", async (ctx) => {
await ctx.reply(
"Привіт! Я можу читати лише ті повідомлення, у яких я маю відповідь!",
// Робимо так, щоб клієнти Telegram автоматично показували користувачеві інтерфейс відповіді.
{ reply_markup: { force_reply: true } },
);
});
2
3
4
5
6
7