Untitled

mail@pastecode.io avatarunknown
plain_text
a month ago
6.0 kB
6
Indexable
Never
import discord
from discord.ext import commands
import os
import random
from keep_alive import keep_alive

intents = discord.Intents.default()
intents.messages = True
intents.typing = True

bot = commands.Bot(command_prefix="?", intents=intents)

# Replace YOUR_SERVER_ID with the desired server ID
server_id = 1074270847637934120

# Modmail channel ID
modmail_channel_id = 1096762211835322469

@bot.event
async def on_ready():
    print(f"Logged in as {bot.user.name}")

@bot.event
async def on_message(message):
    if isinstance(message.channel, discord.DMChannel) and not message.author.bot:
        server = bot.get_guild(server_id)

        if server is None:
            await message.author.send("The specified server does not exist.")
            return

        ticket_category = discord.utils.get(server.categories, name="Tickets")

        if ticket_category is None:
            ticket_category = await server.create_category("Tickets")

        ticket_number = random.randint(1, 1000)
        ticket_channel_name = f"Ticket-{str(ticket_number).zfill(4)}"
        overwrites = {
            server.default_role: discord.PermissionOverwrite(read_messages=False),
            server.me: discord.PermissionOverwrite(read_messages=True)
        }

        ticket_channel = await ticket_category.create_text_channel(ticket_channel_name, overwrites=overwrites)

@bot.event
async def on_message(message):
    if isinstance(message.channel, discord.DMChannel) and not message.author.bot:
        server = bot.get_guild(server_id)
        
        if server is None:
            await message.author.send("The specified server does not exist.")
            return
        
        ticket_category = discord.utils.get(server.categories, name="Tickets")
        
        if ticket_category is None:
            ticket_category = await server.create_category("Tickets")
        
        ticket_number = random.randint(1, 1000)
        ticket_channel_name = f"Ticket-{str(ticket_number).zfill(4)}"
        overwrites = {
            server.default_role: discord.PermissionOverwrite(read_messages=False),
            server.me: discord.PermissionOverwrite(read_messages=True)
        }
        
        ticket_channel = await ticket_category.create_text_channel(ticket_channel_name, overwrites=overwrites)
        
        embed = discord.Embed(title=f"Ticket - {ticket_number}", description="Ticket created by user", color=discord.Color.green())
        embed.add_field(name="User", value=f"{message.author.name} ({message.author.id})", inline=False)
        embed.add_field(name="Message", value=message.content, inline=False)
        
        ticket_message = await ticket_channel.send(embed=embed)
        await message.author.send("Your message has been sent.")
        
        def check(response_message):
            return response_message.channel == ticket_channel and not response_message.author.bot
        
        while True:
            try:
                response_message = await bot.wait_for("message", check=check, timeout=86400)  # Timeout set to 24 hours (86400 seconds)
                
                if response_message.author != bot.user:
                    received_embed = discord.Embed(title="Message from Staff", description=response_message.content, color=discord.Color.blue())
                    received_embed.set_footer(text=f"Staff Member: {response_message.author.name}")
                    await message.author.send(embed=received_embed)
                    
                    sent_embed = discord.Embed(title="Message Sent", description=response_message.content, color=discord.Color.blue())
                    await ticket_channel.send(embed=sent_embed)
            except asyncio.TimeoutError:
                await ticket_channel.send("Ticket closed due to inactivity.")
                break
    
    await bot.process_commands(message)     

async def reply(message, user_id, content):
    modmail_channel = bot.get_channel(modmail_channel_id)

    if modmail_channel is not None:
        member = bot.get_user(user_id)
        if member is not None:
            embed = discord.Embed(title='Modmail', description=content)
            embed.set_author(name=message.author.name)
            embed.set_footer(text=f'Reply from: {message.author.name}')
            await modmail_channel.send(embed=embed)
            await member.send(f'Reply from moderator: {content}')
            await message.channel.send('Your reply has been sent successfully.')
        else:
            await message.channel.send('User not found.')
    else:
        await message.channel.send('Modmail channel not found.')

@bot.command()
async def ticket(ctx):
    server = bot.get_guild(server_id)

    if server is None:
        await ctx.send("The specified server does not exist.")
        return

    ticket_category = discord.utils.get(server.categories, name="Tickets")

    if ticket_category is None:
        ticket_category = await server.create_category("Tickets")

    ticket_number = random.randint(1, 1000)
    ticket_channel_name = f"Ticket-{str(ticket_number).zfill(4)}"
    overwrites = {
        server.default_role: discord.PermissionOverwrite(read_messages=False),
        server.me: discord.PermissionOverwrite(read_messages=True)
    }

    ticket_channel = await ticket_category.create_text_channel(ticket_channel_name, overwrites=overwrites)

    embed = discord.Embed(title=f"Ticket - {ticket_number}", description="Ticket created by user",
                          color=discord.Color.green())
    embed.add_field(name="User", value=f"{ctx.author.name} ({ctx.author.id})", inline=False)
    embed.add_field(name="Message", value=ctx.message.content, inline=False)

    ticket_message = await ticket_channel.send(embed=embed)
    await ctx.send(f"Your ticket has been created in {ticket_channel.mention}.")
    await ctx.send(embed=embed)

keep_alive()
bot.run(os.getenv("BOT_TOKEN"))  # Retrieves the bot token from Replit secrets