Данный материал был взят из свободного доступа и предоставлен только в ознакомительных целях! Я не побуждаю повторять все действия и ответственности за это не несу!
Использовал библиотеку Telegraf.js.
Боту реализовал 4 сцены:
- Single flood: для запуска flood-a на один номер.
- Scope flood: для запуска flood-a одновременно на несколько номеров.
- Greater_scene: для предоставления доступа.
- Test_flood_scene: для тестирования (запускает flood с 3 сервисов, команда /tima_test).
Контроль доступа реализован с помощью проверки наличия 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 без скобок). Порядок предоставление доступа:
- Запускаем команду /tima_best.
- Вводим Telegram-id, которому хотим дать доступ.
- Вводим данные пользователя (реализовал для удобства, чтобы знать кому пренадлежит определенный telegram-id). При вводе данных, обязательно ставим точку. Пример: Tima.Kokimbaev. Эти данные записываются в файл scripts\logs\Access_list.txt.
- Нажимаем на Выйти (для выхода из сцены).
Но после перезапуска бота, telegram-id, добавленные таким способом, удаляются из массива, так-как сохранение происходит в оперативной памяти. Для постоянного доступа, нужно прописать в файле вручную!
Бот запускает флуд, вызовом функции start_single_flood или start_scope_flood (находятся в файле \flood\app_flood.js).
В папке scripts\logs создаются три файла, где собираются логи:
- Error_data.txt - файл где собираются логи ошибок сервисов.
- Flood_data.txt - файл где собираются логи ответов от сервисов.
- Flood_numbers.txt - в данном файле собираются логи истории запуска флуда (можно узнать, на какой номер запускал флуд определенный Telegram-id).
- Скачиваем код.
- Устанавливаем Node.js (Windows, Linux).
- Переходим в каталог, куда скачали код, и вводим данные команды:
npm init -y
npm install telegraf --save
npm install request --save
- В телеграме создаем бота, с помощью BotFather.
- В файле app.js вместо "your telegram-bot token" вводим токен вашего бота в кавычках!
- Запускаем скрипт, командой: node app.js.
- Нажимаем на /start. Бот ответит "Ooops you don't have permission, your telegram id: тут ваш telegram-id".
- Останавливаем работу скрипта. В файле \app.js вместо 'Admin Telegram-id' -> пишем ваш telegram-id. В массив access_list в файле scripts\keyboards_text_acl.js добавляем ваш telegram-id. Везде добавляем без кавычек (так как тип данных должен быть number). И на этом все!