modified: bot.py
This commit is contained in:
46
bot.py
46
bot.py
@@ -129,15 +129,15 @@ async def setup(
|
|||||||
|
|
||||||
@bot.tree.command(name="ticket", description="Create a new project update ticket")
|
@bot.tree.command(name="ticket", description="Create a new project update ticket")
|
||||||
@app_commands.describe(
|
@app_commands.describe(
|
||||||
message_id="The Discord message ID to reference",
|
message_id="Optional: Discord message ID to reference",
|
||||||
project_name="The project name from devanturas.net/versions",
|
project_name="The project name from devanturas.net/versions",
|
||||||
title="Brief title for this update"
|
title="Brief title for this update"
|
||||||
)
|
)
|
||||||
async def create_ticket(
|
async def create_ticket(
|
||||||
interaction: discord.Interaction,
|
interaction: discord.Interaction,
|
||||||
message_id: str,
|
|
||||||
project_name: str,
|
project_name: str,
|
||||||
title: str
|
title: str,
|
||||||
|
message_id: str = None
|
||||||
):
|
):
|
||||||
guild_id = interaction.guild.id if interaction.guild else None
|
guild_id = interaction.guild.id if interaction.guild else None
|
||||||
settings = load_server_settings(guild_id)
|
settings = load_server_settings(guild_id)
|
||||||
@@ -148,41 +148,41 @@ async def create_ticket(
|
|||||||
)
|
)
|
||||||
return
|
return
|
||||||
active_channel = bot.get_channel(settings["active_channel_id"])
|
active_channel = bot.get_channel(settings["active_channel_id"])
|
||||||
if not active_channel:
|
|
||||||
await interaction.response.send_message(
|
|
||||||
"❌ Active channel not found! Please reconfigure with `/setup`.",
|
|
||||||
ephemeral=True
|
|
||||||
)
|
|
||||||
return
|
|
||||||
|
|
||||||
# Create ticket ID
|
|
||||||
ticket_id = f"TICKET-{ticket_counter:04d}"
|
ticket_id = f"TICKET-{ticket_counter:04d}"
|
||||||
|
global ticket_counter
|
||||||
ticket_counter += 1
|
ticket_counter += 1
|
||||||
|
referenced_message_content = None
|
||||||
# Create embed for the ticket
|
referenced_message_author = None
|
||||||
|
if message_id:
|
||||||
|
try:
|
||||||
|
ref_message = await active_channel.fetch_message(int(message_id))
|
||||||
|
referenced_message_content = ref_message.content
|
||||||
|
referenced_message_author = ref_message.author.mention
|
||||||
|
except Exception:
|
||||||
|
referenced_message_content = None
|
||||||
|
referenced_message_author = None
|
||||||
embed = discord.Embed(
|
embed = discord.Embed(
|
||||||
title=f"🎫 {ticket_id}: {title}",
|
title=f"🎫 {ticket_id}: {title}",
|
||||||
description=f"**Project Update Request**",
|
description=f"**Project Update Request**",
|
||||||
color=discord.Color.blue(),
|
color=discord.Color.blue(),
|
||||||
timestamp=datetime.utcnow()
|
timestamp=datetime.utcnow()
|
||||||
)
|
)
|
||||||
|
|
||||||
embed.add_field(name="📋 Project", value=project_name, inline=True)
|
embed.add_field(name="📋 Project", value=project_name, inline=True)
|
||||||
embed.add_field(name="📊 Status", value=TicketStatus.PENDING, inline=True)
|
embed.add_field(name="📊 Status", value=TicketStatus.PENDING, inline=True)
|
||||||
embed.add_field(name="👤 Created By", value=interaction.user.mention, inline=True)
|
embed.add_field(name="👤 Created By", value=interaction.user.mention, inline=True)
|
||||||
embed.add_field(name="🔗 Message ID", value=f"`{message_id}`", inline=False)
|
if message_id:
|
||||||
|
embed.add_field(name="🔗 Message ID", value=f"`{message_id}`", inline=False)
|
||||||
|
if referenced_message_content:
|
||||||
|
embed.add_field(name="💬 Request Message", value=referenced_message_content, inline=False)
|
||||||
|
if referenced_message_author:
|
||||||
|
embed.add_field(name="🙋 Request By", value=referenced_message_author, inline=True)
|
||||||
embed.add_field(
|
embed.add_field(
|
||||||
name="🌐 Project Links",
|
name="🌐 Project Links",
|
||||||
value=f"[All Projects](https://devanturas.net/versions) | [Project Page](https://devanturas.net/projects/{project_name})",
|
value=f"[All Projects](https://devanturas.net/versions) | [Project Page](https://devanturas.net/projects/{project_name})",
|
||||||
inline=False
|
inline=False
|
||||||
)
|
)
|
||||||
|
|
||||||
embed.set_footer(text=f"Ticket ID: {ticket_id}")
|
embed.set_footer(text=f"Ticket ID: {ticket_id}")
|
||||||
|
|
||||||
# Send to active channel
|
|
||||||
ticket_message = await active_channel.send(embed=embed)
|
ticket_message = await active_channel.send(embed=embed)
|
||||||
|
|
||||||
# Store ticket data
|
|
||||||
ticket = {
|
ticket = {
|
||||||
"message_id": ticket_message.id,
|
"message_id": ticket_message.id,
|
||||||
"channel_id": active_channel.id,
|
"channel_id": active_channel.id,
|
||||||
@@ -191,11 +191,11 @@ async def create_ticket(
|
|||||||
"status": TicketStatus.PENDING,
|
"status": TicketStatus.PENDING,
|
||||||
"creator": interaction.user.id,
|
"creator": interaction.user.id,
|
||||||
"created_at": datetime.utcnow().isoformat(),
|
"created_at": datetime.utcnow().isoformat(),
|
||||||
"reference_message_id": message_id
|
"reference_message_id": message_id,
|
||||||
|
"referenced_message_content": referenced_message_content,
|
||||||
|
"referenced_message_author": referenced_message_author
|
||||||
}
|
}
|
||||||
save_ticket(ticket_id, ticket)
|
save_ticket(ticket_id, ticket)
|
||||||
|
|
||||||
# Confirm to user
|
|
||||||
await interaction.response.send_message(
|
await interaction.response.send_message(
|
||||||
f"✅ Ticket created successfully!\n"
|
f"✅ Ticket created successfully!\n"
|
||||||
f"**Ticket ID:** `{ticket_id}`\n"
|
f"**Ticket ID:** `{ticket_id}`\n"
|
||||||
|
|||||||
Reference in New Issue
Block a user