Untitled
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