-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
71 lines (68 loc) · 2.43 KB
/
index.js
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// Импорт Telegraf и Markup
const { Telegraf, Markup } = require("telegraf");
// Импорт dotenv для защиты API токена
require("dotenv").config();
// Импорт нашего модуля с константами
const my_const = require("./const");
// Инициализация бота с помощью Telegraf
const bot = new Telegraf(process.env.BOT_TOKEN);
// Обработка команды /start
bot.start((ctx) =>
ctx.reply(
`Привет ${
ctx.message.from.first_name ? ctx.message.from.first_name : "незнакомец"
}!`
)
);
// Обработка команды /help
bot.help((ctx) => ctx.reply(my_const.commands));
// Обработка команды /course
bot.command("course", async (ctx) => {
try {
await ctx.replyWithHTML(
"<b>Курсы</b>",
Markup.inlineKeyboard([
[
Markup.button.callback("Редакторы", "btn_1"),
Markup.button.callback("Обзоры", "btn_2"),
Markup.button.callback("JS", "btn_3"),
],
])
);
} catch (e) {
console.error(e);
}
});
/**
* Функция для отправки сообщения ботом
* @param {String} id_btn Идентификатор кнопки для обработки
* @param {String} src_img Путь к изображению, или false чтобы отправить только текст
* @param {String} text Текстовое сообщение для отправки
* @param {Boolean} preview Блокировать превью у ссылок или нет, true - блокировать, false - нет
*/
function addActionBot(id_btn, src_img, text, preview) {
bot.action(id_btn, async (ctx) => {
try {
await ctx.answerCbQuery();
if (src_img !== false) {
await ctx.replyWithPhoto({
source: src_img,
});
}
await ctx.replyWithHTML(text, {
disable_web_page_preview: preview,
});
} catch (e) {
console.error(e);
}
});
}
// Обработчик кнопок с помощью функции
addActionBot("btn_1", "./img/1.jpg", my_const.text1, true);
addActionBot("btn_2", "./img/2.jpg", my_const.text2, true);
addActionBot("btn_3", false, my_const.text3, false);
// Запустить бота
bot.launch();
// Включить плавную остановку
process.once("SIGINT", () => bot.stop("SIGINT"));
process.once("SIGTERM", () => bot.stop("SIGTERM"));