From 2659448373631de608e63b654b23a76ccd10ef17 Mon Sep 17 00:00:00 2001 From: ItsNeil17 Date: Thu, 11 Dec 2025 23:36:00 +0530 Subject: [PATCH] feat: remove unused files Signed-off-by: ItsNeil17 --- config.py | 12 ------ database.py | 108 ---------------------------------------------- main.py | 30 ------------- ticket_handler.py | 65 ---------------------------- ticket_view.py | 43 ------------------ tickets.db | Bin 20480 -> 0 bytes 6 files changed, 258 deletions(-) delete mode 100644 config.py delete mode 100644 database.py delete mode 100644 main.py delete mode 100644 ticket_handler.py delete mode 100644 ticket_view.py delete mode 100644 tickets.db diff --git a/config.py b/config.py deleted file mode 100644 index bafee57..0000000 --- a/config.py +++ /dev/null @@ -1,12 +0,0 @@ -import os -from dotenv import load_dotenv - -load_dotenv() - -TOKEN = os.getenv("BOT_TOKEN") -DB_TYPE = os.getenv("DB_TYPE", "sqlite") # sqlite, mysql, or mongodb -DB_URL = os.getenv("DB_URL", "sqlite+aiosqlite:///tickets.db") - -# Ticket Settings -TICKET_CATEGORY_NAME = "Tickets" -TICKET_LOG_CHANNEL = "ticket-logs" \ No newline at end of file diff --git a/database.py b/database.py deleted file mode 100644 index 18d11e5..0000000 --- a/database.py +++ /dev/null @@ -1,108 +0,0 @@ -from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker -from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column -from sqlalchemy import BigInteger, String, select -from typing import Optional -from config import DB_TYPE, DB_URL - -engine = None -SessionLocal = None - -class Base(DeclarativeBase): - pass - -class Ticket(Base): - __tablename__ = "tickets" - - id: Mapped[int] = mapped_column(primary_key=True) - guild_id: Mapped[int] = mapped_column(BigInteger) - channel_id: Mapped[int] = mapped_column(BigInteger, unique=True) - user_id: Mapped[int] = mapped_column(BigInteger) - ticket_number: Mapped[int] - -class Config(Base): - __tablename__ = "config" - - id: Mapped[int] = mapped_column(primary_key=True) - guild_id: Mapped[int] = mapped_column(BigInteger, unique=True) - panel_channel_id: Mapped[Optional[int]] = mapped_column(BigInteger, nullable=True) - panel_message_id: Mapped[Optional[int]] = mapped_column(BigInteger, nullable=True) - category_id: Mapped[Optional[int]] = mapped_column(BigInteger, nullable=True) - -async def init_db(): - global engine, SessionLocal - - engine = create_async_engine(DB_URL, echo=False) - SessionLocal = async_sessionmaker(engine, class_=AsyncSession, expire_on_commit=False) - - async with engine.begin() as conn: - await conn.run_sync(Base.metadata.create_all) - -def get_session(): - return SessionLocal() - -async def create_ticket(guild_id: int, channel_id: int, user_id: int) -> Ticket: - async with get_session() as session: - result = await session.execute( - select(Ticket).where(Ticket.guild_id == guild_id).order_by(Ticket.ticket_number.desc()) - ) - last_ticket = result.scalars().first() - ticket_num = (last_ticket.ticket_number + 1) if last_ticket else 1 - - ticket = Ticket( - guild_id=guild_id, - channel_id=channel_id, - user_id=user_id, - ticket_number=ticket_num - ) - session.add(ticket) - await session.commit() - await session.refresh(ticket) - - return type('TicketData', (), { - 'ticket_number': ticket.ticket_number, - 'channel_id': ticket.channel_id, - 'user_id': ticket.user_id, - 'guild_id': ticket.guild_id - })() - -async def get_ticket(channel_id: int) -> Optional[Ticket]: - async with get_session() as session: - result = await session.execute( - select(Ticket).where(Ticket.channel_id == channel_id) - ) - return result.scalars().first() - -async def delete_ticket(channel_id: int): - async with get_session() as session: - result = await session.execute( - select(Ticket).where(Ticket.channel_id == channel_id) - ) - ticket = result.scalars().first() - if ticket: - await session.delete(ticket) - await session.commit() - -async def get_config(guild_id: int) -> Optional[Config]: - async with get_session() as session: - result = await session.execute( - select(Config).where(Config.guild_id == guild_id) - ) - return result.scalars().first() - -async def set_config(guild_id: int, **kwargs) -> Config: - async with get_session() as session: - result = await session.execute( - select(Config).where(Config.guild_id == guild_id) - ) - config = result.scalars().first() - - if not config: - config = Config(guild_id=guild_id) - session.add(config) - - for key, value in kwargs.items(): - setattr(config, key, value) - - await session.commit() - await session.refresh(config) - return config \ No newline at end of file diff --git a/main.py b/main.py deleted file mode 100644 index 1df1583..0000000 --- a/main.py +++ /dev/null @@ -1,30 +0,0 @@ -import discord -from discord.ext import commands -import os -from pathlib import Path - -from database import init_db -from config import TOKEN, DB_TYPE, DB_URL - -intents = discord.Intents.default() -intents.message_content = True -intents.guilds = True -intents.members = True - -bot = commands.Bot(command_prefix="!", intents=intents) - -@bot.event -async def on_ready(): - await init_db() - - # Load commands - commands_path = Path("commands") - for file in commands_path.glob("*.py"): - if file.stem != "__init__": - await bot.load_extension(f"commands.{file.stem}") - - # await bot.tree.sync() - print(f"Bot ready as {bot.user}") - -if __name__ == "__main__": - bot.run(TOKEN) \ No newline at end of file diff --git a/ticket_handler.py b/ticket_handler.py deleted file mode 100644 index b09bb99..0000000 --- a/ticket_handler.py +++ /dev/null @@ -1,65 +0,0 @@ -import discord -from database import create_ticket, get_ticket, get_config, get_session, Ticket -from sqlalchemy import select - -async def handle_ticket_create(interaction: discord.Interaction): - for channel in interaction.guild.channels: - if isinstance(channel, discord.TextChannel): - ticket = await get_ticket(channel.id) - if ticket and ticket.user_id == interaction.user.id: - await interaction.response.send_message( - f"❌ You already have an open ticket: {channel.mention}", - ephemeral=True - ) - return - - config = await get_config(interaction.guild_id) - category = None - - if config and config.category_id: - category = interaction.guild.get_channel(config.category_id) - - if not category: - category = discord.utils.get(interaction.guild.categories, name="Tickets") - if not category: - category = await interaction.guild.create_category("Tickets") - - - async with get_session() as session: - result = await session.execute( - select(Ticket).where(Ticket.guild_id == interaction.guild_id).order_by(Ticket.ticket_number.desc()) - ) - last_ticket = result.scalars().first() - ticket_num = (last_ticket.ticket_number + 1) if last_ticket else 1 - - overwrites = { - interaction.guild.default_role: discord.PermissionOverwrite(read_messages=False), - interaction.user: discord.PermissionOverwrite(read_messages=True, send_messages=True), - interaction.guild.me: discord.PermissionOverwrite(read_messages=True, send_messages=True) - } - - channel = await interaction.guild.create_text_channel( - name=f"ticket-{ticket_num}", - category=category, - overwrites=overwrites - ) - - ticket = await create_ticket( - interaction.guild_id, - channel.id, - interaction.user.id - ) - - embed = discord.Embed( - title=f"Ticket #{ticket.ticket_number}", - description=f"Welcome {interaction.user.mention}!\nPlease describe your issue and a staff member will be with you shortly.", - color=discord.Color.green() - ) - - from ticket_view import TicketView - await channel.send(embed=embed, view=TicketView()) - - await interaction.response.send_message( - f"✅ Ticket created: {channel.mention}", - ephemeral=True - ) \ No newline at end of file diff --git a/ticket_view.py b/ticket_view.py deleted file mode 100644 index d70d2d1..0000000 --- a/ticket_view.py +++ /dev/null @@ -1,43 +0,0 @@ -import discord -from database import get_ticket, delete_ticket -import io -from datetime import datetime - -class TicketView(discord.ui.View): - def __init__(self): - super().__init__(timeout=None) - - @discord.ui.button(label="Close", style=discord.ButtonStyle.red, custom_id="close_ticket", emoji="🔒") - async def close_ticket(self, interaction: discord.Interaction, button: discord.ui.Button): - ticket = await get_ticket(interaction.channel_id) - if not ticket: - await interaction.response.send_message("❌ This is not a ticket channel.", ephemeral=True) - return - - if not interaction.user.guild_permissions.manage_channels and interaction.user.id != ticket.user_id: - await interaction.response.send_message("❌ You don't have permission to close this ticket.", ephemeral=True) - return - - await interaction.response.send_message("🔒 Closing ticket and saving transcript...") - - messages = [] - async for msg in interaction.channel.history(limit=None, oldest_first=True): - timestamp = msg.created_at.strftime("%Y-%m-%d %H:%M:%S") - messages.append(f"[{timestamp}] {msg.author}: {msg.content}") - - transcript = "\n".join(messages) - file = discord.File(io.BytesIO(transcript.encode()), filename=f"ticket-{ticket.ticket_number}.txt") - - user = interaction.guild.get_member(ticket.user_id) - if user: - try: - await user.send(f"Your ticket #{ticket.ticket_number} has been closed. Here's the transcript:", file=file) - except: - pass - - await delete_ticket(interaction.channel_id) - - await interaction.channel.delete() - -async def setup(bot): - bot.add_view(TicketView()) \ No newline at end of file diff --git a/tickets.db b/tickets.db deleted file mode 100644 index c3eeaafef19c5f5bfca9c184917779c8b1c7c16e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI%&x+GP9Ki8On@vr%+k!|b1({>Zs<8S1+Dcf8wYs$xiienOvo+eLnxvo?ad)4? z+unTyFJ63s1;K+4;la~tvT0m`wxGAdcOaR`?>G7L`;f~dk9ONmV9WiPH?;zJOO%A7 zh&xgWA=Gf&2)CqV!a)>Envx7w^s2b=c2Fq(5NhE>Y2^>7m=E{|da+C|Ky@@@Xx%xHM;~@u_Z!`Tyk`t#%^B6Bi}X9K-M%4f$urdR^(|E^->xXaaYy!R|J5X1yPDQK zn4KM)aW&?4+;1E_S90ZQRXN%^QwW^l3p?-^T_)wQ2>vI;9|S3;xo>;t#imm6ZB2JR z-Lt*F`mb_1zilXUJ)@Ny)nzh^`poUcARE3;7ou0H5ba7r6u(6S8UhF)fB*srAb(@H%_WWi0tg_000IagfB*srAbo1V} e|6l(~r~m;35I_I{1Q0*~0R#|0009J+3H$=o(84_c