• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Бот для размещения файлов в Telegram (Aiogram 3, sqlite3)

rand

CooL-Lamer
Эксперт
Регистрация
24.05.2023
Сообщения
581
Реакции
1 152
Депозит
0.07 Ł и др.
Уникально для: xss.pro
Написал: rand

Здравствуйте, написал бота для размещения файлов. Все подробно указано в коде. БД в архиве. Потом можно подписку прикрутить в версии 0.2.

Код:
pip install aiogram

bot.py:
Python:
import logging
from aiogram import Bot, Dispatcher, types
from aiogram.filters.command import Command
from aiogram.filters import Filter
from aiogram.types import Message
from db import Database


#Работа с БД
db = Database('database.db')
#Работа с БД


class TextHandler(Filter):
    def __init__(self, my_text: str) -> None:
        self.my_text = my_text

    async def __call__(self, message: Message) -> bool:
        return message.text == self.my_text


# Включаем логирование, чтобы не пропустить важные сообщения
logging.basicConfig(level=logging.INFO)
# Объект бота
bot = Bot(token="7205615990:AAGNnnF4EtdMc3X0sho1nR2Xi8mTBeyg555") # Сюда вставляем токен от BotFather
# Диспетчер
dp = Dispatcher()


# Основные разделы бота

@dp.message(Command("start"))
async def cmd_start(message: types.Message):
    #Создание клавиатуры
    kb = [
        [
            types.KeyboardButton(text="Аудио, Звук"),
            types.KeyboardButton(text="Web-разработка"),
            types.KeyboardButton(text="Безопасность"),
            types.KeyboardButton(text="Видео"),
            types.KeyboardButton(text="Профиль"),
            types.KeyboardButton(text="Подписка")
        ],
    ]
    #Работа с БД
    if(not db.user_exists(message.from_user.id)):
        db.add_user(message.from_user.id)
        await bot.send_message(message.from_user.id, "Укажите Ваш ник")
    else:
        await bot.send_message(message.from_user.id, "Вы зарегистрированы как: " + db.get_nickname(message.from_user.id), reply_markup=types.ReplyKeyboardMarkup(
        keyboard=kb,
        resize_keyboard=True,
        input_field_placeholder="Выберите раздел с софтом"))
    #Работа с БД


# Основные разделы бота

#Регистрация пользователя, работа с БД

@dp.message(TextHandler)
async def bot_message(message: types.Message):
    kb = [
        [
            types.KeyboardButton(text="Аудио, Звук"),
            types.KeyboardButton(text="Web-разработка"),
            types.KeyboardButton(text="Безопасность"),
            types.KeyboardButton(text="Видео"),
            types.KeyboardButton(text="Профиль"),
            types.KeyboardButton(text="Подписка")
        ],
    ]
    if message.chat.type == "private":
        if message.text == 'Профиль':
            user_nickname = "Ваш ник: " + db.get_nickname(message.from_user.id)
            await bot.send_message(message.from_user.id, user_nickname)
        #Подразделы основных разделов бота
        elif message.text == 'Аудио, Звук':
            kb = [
                [
                    types.KeyboardButton(text="DJ Студиии, микшеры"),
                    types.KeyboardButton(text="Tag редакторы"),
                    types.KeyboardButton(text="Грабберы, Рипперы"),
                    types.KeyboardButton(text="Караоке"),
                    types.KeyboardButton(text="Кодеки, декодеры"),
                    types.KeyboardButton(text="Конверторы"),
                    types.KeyboardButton(text="Плееры"),
                    types.KeyboardButton(text="Редакторы аудио"),
                    types.KeyboardButton(text="Утилиты, Плагины"),
                    types.KeyboardButton(text="Другое")
                ],
            ]
            keyboard = types.ReplyKeyboardMarkup(
                keyboard=kb,
                resize_keyboard=True,
                input_field_placeholder="Выберите подраздел с софтом"
            )
            await message.answer("Какой подраздел Вас интересует? Или нажмите /start чтобы вернуться в главное меню",
                                 reply_markup=keyboard)
        elif message.text == 'Web-разработка':
            kb = [
                [
                    types.KeyboardButton(text="ASP, PHP, Perl, CGI"),
                    types.KeyboardButton(text="CMS"),
                    types.KeyboardButton(text="Flash"),
                    types.KeyboardButton(text="HTML"),
                    types.KeyboardButton(text="Java, JavaScript"),
                    types.KeyboardButton(text="XML, RSS, CSS"),
                    types.KeyboardButton(text="SEO"),
                    types.KeyboardButton(text="Редакторы"),
                    types.KeyboardButton(text="Скрипты"),
                    types.KeyboardButton(text="Другое")
                ],
            ]
            keyboard = types.ReplyKeyboardMarkup(
                keyboard=kb,
                resize_keyboard=True,
                input_field_placeholder="Выберите подраздел с софтом"
            )
            await message.answer("Какой подраздел Вас интересует? Или нажмите /start чтобы вернуться в главное меню",
                                 reply_markup=keyboard)

        elif message.text == 'Безопасность':
            kb = [
                [
                    types.KeyboardButton(text="Firewalls"),
                    types.KeyboardButton(text="USB-Антивирусы"),
                    types.KeyboardButton(text="Антивирусы"),
                    types.KeyboardButton(text="Антишпионы"),
                    types.KeyboardButton(text="Загрузочные диски"),
                    types.KeyboardButton(text="Защита данных"),
                    types.KeyboardButton(text="Комплексная защита"),
                    types.KeyboardButton(text="Контроль доступа"),
                    types.KeyboardButton(text="Мониторинг, Анализ"),
                    types.KeyboardButton(text="Пароли"),
                    types.KeyboardButton(text="Шифрование"),
                    types.KeyboardButton(text="Другое")
                ],
            ]
            keyboard = types.ReplyKeyboardMarkup(
                keyboard=kb,
                resize_keyboard=True,
                input_field_placeholder="Выберите подраздел с софтом"
            )
            await message.answer("Какой подраздел Вас интересует? Или нажмите /start чтобы вернуться в главное меню",
                                 reply_markup=keyboard)

        elif message.text == 'Видео':
            kb = [
                [
                    types.KeyboardButton(text="Видео захват"),
                    types.KeyboardButton(text="Грабберы, Рипперы"),
                    types.KeyboardButton(text="Кодеки, декодеры"),
                    types.KeyboardButton(text="Конверторы"),
                    types.KeyboardButton(text="Плееры"),
                    types.KeyboardButton(text="Потоковое видео"),
                    types.KeyboardButton(text="Редакторы")
                ],
            ]
            keyboard = types.ReplyKeyboardMarkup(
                keyboard=kb,
                resize_keyboard=True,
                input_field_placeholder="Выберите подраздел с софтом"
            )
            await message.answer("Какой подраздел Вас интересует? Или нажмите /start чтобы вернуться в главное меню",
                                 reply_markup=keyboard)
        #Подразделы основных разделов бота

        #Разделы с файлами Видео
        elif message.text == 'Видео захват':
            await message.answer_document(
                document="BQACAgIAAxkBAAEr6vZmZ9YY2Av38FQU-h1lw6qX2G1icQACuEQAAluoQEtyxDUfl0jIrjUE",
                caption="Лучший брутофорс version 999.0",
                show_caption_above_media=True
            )

        elif message.text == 'Грабберы, Рипперы':
            await message.answer_document(
                document="BQACAgIAAxkBAAEr6vZmZ9YY2Av38FQU-h1lw6qX2G1icQACuEQAAluoQEtyxDUfl0jIrjUE",
                caption="Лучший брутофорс version 999.0",
                show_caption_above_media=True
            )

        elif message.text == 'Кодеки, декодеры':
            await message.answer_document(
                document="BQACAgIAAxkBAAEr6vZmZ9YY2Av38FQU-h1lw6qX2G1icQACuEQAAluoQEtyxDUfl0jIrjUE",
                caption="Лучший брутофорс version 999.0",
                show_caption_above_media=True
            )

        elif message.text == 'Конверторы':
            await message.answer_document(
                document="BQACAgIAAxkBAAEr6vZmZ9YY2Av38FQU-h1lw6qX2G1icQACuEQAAluoQEtyxDUfl0jIrjUE",
                caption="Лучший брутофорс version 999.0",
                show_caption_above_media=True
            )

        elif message.text == 'Плееры':
            await message.answer_document(
                document="BQACAgIAAxkBAAEr6vZmZ9YY2Av38FQU-h1lw6qX2G1icQACuEQAAluoQEtyxDUfl0jIrjUE",
                caption="Лучший брутофорс version 999.0",
                show_caption_above_media=True
            )

        elif message.text == 'Потоковое видео':
            await message.answer_document(
                document="BQACAgIAAxkBAAEr6vZmZ9YY2Av38FQU-h1lw6qX2G1icQACuEQAAluoQEtyxDUfl0jIrjUE",
                caption="Лучший брутофорс version 999.0",
                show_caption_above_media=True
            )

        elif message.text == 'Редакторы':
            await message.answer_document(
                document="BQACAgIAAxkBAAEr6vZmZ9YY2Av38FQU-h1lw6qX2G1icQACuEQAAluoQEtyxDUfl0jIrjUE",
                caption="Лучший брутофорс version 999.0",
                show_caption_above_media=True
            )
            await message.answer_document(
                document="BQACAgIAAxkBAAEr6vZmZ9YY2Av38FQU-h1lw6qX2G1icQACuEQAAluoQEtyxDUfl0jIrjUE",
                caption="Лучший брутофорс version 999.0",
                show_caption_above_media=True
            )
            await message.answer_document(
                document="BQACAgIAAxkBAAEr6vZmZ9YY2Av38FQU-h1lw6qX2G1icQACuEQAAluoQEtyxDUfl0jIrjUE",
                caption="Лучший брутофорс version 999.0",
                show_caption_above_media=True
            )
            await message.answer_document(
                document="BQACAgIAAxkBAAEr6vZmZ9YY2Av38FQU-h1lw6qX2G1icQACuEQAAluoQEtyxDUfl0jIrjUE",
                caption="Лучший брутофорс version 999.0",
                show_caption_above_media=True
            )

        #Разделы с файлами Видео


        # Регистрация пользователя, работа с БД
        else:
            if db.get_signup(message.from_user.id) == "setnickname":
                if len(message.text) > 15:
                    await bot.send_message(message.from_user.id, "Никнейм не должен превышать 15 символов")
                elif '@' in message.text or '/' in message.text:
                    await bot.send_message(message.from_user.id, "Вы ввели запрещенный символ")
                else:
                    db.set_nickname(message.from_user.id, message.text)
                    db.set_signup(message.from_user.id, "done")
                    await bot.send_message(message.from_user.id, "Регистрация прошла успешно!", reply_markup=types.ReplyKeyboardMarkup(
                                                                                                    keyboard=kb,
                                                                                                    resize_keyboard=True,
                                                                                                    input_field_placeholder="Выберите раздел с софтом"))
            else:
                await bot.send_message(message.from_user.id, "Не понимаю что Вы написали?")

        #Регистрация пользователя, работа с БД







# Пример приклепления файлов, создаешь свой канал туда прикрепляешь дистрибутивы, в document вписывается fileid загруженного файла в телеграм, file id можно узнать переслав файл боту из канала, бот: https://t.me/RawDataBot

@dp.message(TextHandler("Bruteforce"))
async def send_gif(message: Message):
    await message.answer_document(
        document="BQACAgIAAxkBAAEr6vZmZ9YY2Av38FQU-h1lw6qX2G1icQACuEQAAluoQEtyxDUfl0jIrjUE",
        caption="Лучший брутофорс version 999.0",
        show_caption_above_media=True
    )
    await message.answer_document(
        document="BQACAgIAAxkBAAEr6xNmZ9zWw6qlSQTpPmBXJFWX5TKdjAAC5EQAAluoQEumchavnYEjCzUE",
        caption="Лучший loader по версии XSS",
        show_caption_above_media=True
    )
    await message.answer_document(
        document="BQACAgIAAxkBAAEr6xNmZ9zWw6qlSQTpPmBXJFWX5TKdjAAC5EQAAluoQEumchavnYEjCzUE",
        caption="Лучший loader по версии XSS",
        show_caption_above_media=True
    )
    await message.answer_document(
        document="BQACAgIAAxkBAAEr6xNmZ9zWw6qlSQTpPmBXJFWX5TKdjAAC5EQAAluoQEumchavnYEjCzUE",
        caption="Лучший loader по версии XSS",
        show_caption_above_media=True
    )
    await message.answer_document(
        document="BQACAgIAAxkBAAEr6xNmZ9zWw6qlSQTpPmBXJFWX5TKdjAAC5EQAAluoQEumchavnYEjCzUE",
        caption="Лучший loader по версии XSS",
        show_caption_above_media=True
    )


@dp.message(TextHandler("Loader"))
async def send_gif(message: Message):
    await message.answer_document(
        document="BQACAgIAAxkBAAEr6xNmZ9zWw6qlSQTpPmBXJFWX5TKdjAAC5EQAAluoQEumchavnYEjCzUE",
        caption="Лучший loader по версии XSS",
        show_caption_above_media=True
    )
    await message.answer_document(
        document="BQACAgIAAxkBAAEr6xNmZ9zWw6qlSQTpPmBXJFWX5TKdjAAC5EQAAluoQEumchavnYEjCzUE",
        caption="Лучший loader по версии XSS",
        show_caption_above_media=True
    )
    await message.answer_document(
        document="BQACAgIAAxkBAAEr6xNmZ9zWw6qlSQTpPmBXJFWX5TKdjAAC5EQAAluoQEumchavnYEjCzUE",
        caption="Лучший loader по версии XSS",
        show_caption_above_media=True
    )
    await message.answer_document(
        document="BQACAgIAAxkBAAEr6xNmZ9zWw6qlSQTpPmBXJFWX5TKdjAAC5EQAAluoQEumchavnYEjCzUE",
        caption="Лучший loader по версии XSS",
        show_caption_above_media=True
    )
    await message.answer_document(
        document="BQACAgIAAxkBAAEr6xNmZ9zWw6qlSQTpPmBXJFWX5TKdjAAC5EQAAluoQEumchavnYEjCzUE",
        caption="Лучший loader по версии XSS",
        show_caption_above_media=True
    )


logging.info("Бот запущен")
dp.run_polling(bot)

# Пример приклепления файлов, создаешь свой канал туда прикрепляешь дистрибутивы, в document вписывается fileid загруженного файла в телеграм, file id можно узнать переслав файл боту из канала, бот: https://t.me/RawDataBot

db.py: (Рега пользователей)
Python:
import sqlite3


#Объявляем нужный класс и функции для работы с БД SQLlite3
class Database:
    def __init__(self, db_file):
        self.connection = sqlite3.connect(db_file)
        self.cursor = self.connection.cursor()

    #Функция добавления пользователя в БД
    def add_user(self, user_id):
        with self.connection:
            return self.cursor.execute("INSERT INTO users (user_id) VALUES (?)", (user_id,))

    #Функция проверки пользователя в БД на данный момент
    def user_exists(self, user_id):
        with self.connection:
            result = self.cursor.execute("SELECT * FROM users WHERE user_id = ?", (user_id,)).fetchall()
            return bool(len(result))

    #Функция регистрации никнейма в БД
    def set_nickname(self, user_id, nickname):
        with self.connection:
            return self.cursor.execute("UPDATE users SET nickname = ? WHERE user_id = ?", (nickname, user_id,))

    #Узнаем на каком этапер регистрации находится пользователь
    def get_signup(self, user_id):
        with self.connection:
            result = self.cursor.execute("SELECT signup FROM users WHERE user_id = ?", (user_id,)).fetchall()
            for row in result:
                signup = str(row[0])
            return signup

    #Функция изменения этапа регистрации пользователя в БД
    def set_signup(self, user_id, signup):
        with self.connection:
            return self.cursor.execute("UPDATE users SET signup = ? WHERE user_id = ?", (signup, user_id,))

    #Профиль в БД
    def get_nickname(self, user_id):
        with self.connection:
            result = self.cursor.execute("SELECT nickname FROM users WHERE user_id = ?", (user_id,)).fetchall()
            for row in result:
                nickname = str(row[0])
            return nickname
 

Вложения

  • FileBotXss.zip
    4.3 КБ · Просмотры: 16
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх