Skip to content

Отрывки исходного кода бота AntiRiadBot для понимания структур

Notifications You must be signed in to change notification settings

Blix-Platform/AntiRaidBot---Database

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

🛡️ AntiRaidBot Open Source

Обзор проекта

AntiRaidBot — это Discord-бот, разработанный с целью защиты серверов от рейдов и несанкционированных действий. В данном репозитории мы показываем отрывки исходного кода и структуру базы данных для лучшего понимания архитектуры бота.

На данный момент бот поддерживает работу на 75 серверах, используя SQLite3 как основную систему хранения данных. Несмотря на доступность асинхронной версии (aiosqlite), её использование не даёт преимущества в производительности на текущем уровне нагрузки.


🗂 Структура базы данных

Таблица Назначение
protection_status Хранит информацию о включённой/выключенной защите на сервере
action_limits Установленные лимиты по количеству действий в день
premium_codes Генерируемые премиум-коды
premium_status Информация о премиум-пользователях
blacklisted_roles Роли, запрещённые к добавлению
trusted_users Список доверенных пользователей
channel_permissions Временные разрешения на каналы
server_images URL изображений для кастомизации эмбедов

Пример асинхронной функции

async def interaction_check(self, interaction: discord.Interaction) -> bool:
    if interaction.user.id != self.owner_id:
        embed = discord.Embed(
            title=f"{EMOJI['error']} Ошибка доступа",
            description="Только владелец сервера может управлять настройками!",
            color=SECONDARY_COLOR,
            timestamp=datetime.now()
        )
        embed.set_footer(text="Anti Raid Bot • Ограниченный доступ")
        await interaction.response.send_message(embed=embed, ephemeral=True)
        return False

    guild = interaction.guild
    bot_member = guild.me
    required_permissions = discord.Permissions()
    required_permissions.update(
        manage_roles=True,
        manage_channels=True,
        view_audit_log=True,
        send_messages=True,
        embed_links=True,
        use_application_commands=True
    )

    missing_perms = [
        perm for perm, value in required_permissions if value and not getattr(bot_member.guild_permissions, perm)
    ]
    if missing_perms:
        missing_perms_list = "\n".join([f"- `{PERMISSIONS_RU.get(perm, perm)}`" for perm in missing_perms])
        embed = discord.Embed(
            title=f"{EMOJI['error']} Недостающие права бота",
            description=f"Бот не может выполнить действие, так как ему не хватает следующих прав:\n{missing_perms_list}",
            color=SECONDARY_COLOR,
            timestamp=datetime.now()
        )
        embed.set_footer(text="Anti Raid Bot • Проверка прав")
        await interaction.response.send_message(embed=embed, ephemeral=True)
        return False

    if not is_highest_role(bot_member):
        embed = discord.Embed(
            title=f"{EMOJI['error']} Низкая позиция роли бота",
            description="Роль бота не является самой высокой на сервере. Это ограничивает его способность управлять сервером.",
            color=SECONDARY_COLOR,
            timestamp=datetime.now()
        )
        embed.set_footer(text="Anti Raid Bot • Проверка ролей")
        await interaction.response.send_message(embed=embed, ephemeral=True)
        return False

    return True

📝 Статистика

  • Количество строк кода: около 3000
  • Проверенная производительность: работает без проблем на ~75 серверах
  • Используемая БД: SQLite (без aiosqlite, так как не требуется для текущего масштаба)

🙌 Поддержка

Если у вас есть вопросы или вы хотите помочь с развитием проекта — присоединяйтесь к нашему серверу поддержки:

👉 Присоединиться к серверу Discord


Спасибо за просмотр! Возможно, я буду обновлять этот репозиторий в будущем.

© Antiraidbot.ru

About

Отрывки исходного кода бота AntiRiadBot для понимания структур

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages