Данный материал был взят из свободного доступа и предоставлен только в ознакомительных целях! Я не побуждаю повторять все действия и ответственности за это не несу!
Использовал библиотеку Telegraf.js.
Боту реализовал 4 сцены:
Контроль доступа реализован с помощью проверки наличия telegram-id в массиве access_list в файле scripts\keyboards_text_acl.js. Пример:
bot.start((ctx) => {
if (keyboard_text.access_list.includes(ctx.from.id)){
my_functions.my_inline_keyboard(ctx, keyboard_text.main_text, keyboard_text.first_keyboard);
} else {
ctx.replyWithMarkdown("Ooops you don't have permission, your telegram id: `" + ctx.from.id + "`")
}
})
После запуска бота (команда /start), проверяется наличие telegram-id в массиве access_list, что в свою очередь выдает true или false. В случае true, происходит вызов inline клавиатуры, что дает возможность выбрать один из разледов Scope flood или Single flood. В случае false, пользователю приходит ответ в виде "Ooops you don't have permission, your telegram id: ваш telegram-id". Такой способ реализован на все команды.
Доступ выдается, добавлением Telegram-id в массив access_list, в файле scripts\keyboards_text_acl.js. Для того, чтобы можно было дать доступ сразу в боте, реализована сцена greater_scene, которая добавляет telegram-id в массив access_list. Переход в greater_scene, происходит с помощью команды /tima_best (можете поменять):
bot.command("tima_best", (ctx) => {
if (ctx.from.id === Admin telegram id) {
ctx.reply('Hello Creator, which id wants to take access?')
ctx.scene.enter('greater_scene')
} else {
ctx.replyWithMarkdown("Ooops you don't have permission, your telegram id: `" + ctx.from.id + "`")
}
})
Вместо "Admin telegram id", нужно ввести ваш telegram-id (пример 987654 без скобок). Порядок предоставление доступа:
Но после перезапуска бота, telegram-id, добавленные таким способом, удаляются из массива, так-как сохранение происходит в оперативной памяти. Для постоянного доступа, нужно прописать в файле вручную!
Бот запускает флуд, вызовом функции start_single_flood или start_scope_flood (находятся в файле \flood\app_flood.js).
В папке scripts\logs создаются три файла, где собираются логи:
npm init -y
npm install telegraf --save
npm install request --save