modified: bot.py
This commit is contained in:
22
bot.py
22
bot.py
@@ -108,12 +108,21 @@ async def fetch_project_names():
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(PROJECTS_URL) as resp:
|
||||
data = await resp.json()
|
||||
names = [v["name"] for v in data.values() if "name" in v]
|
||||
_project_cache = names
|
||||
return names
|
||||
keys = list(data.keys())
|
||||
_project_cache = keys
|
||||
return keys
|
||||
except Exception:
|
||||
return []
|
||||
|
||||
async def fetch_project_display_name(project_key):
|
||||
try:
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(PROJECTS_URL) as resp:
|
||||
data = await resp.json()
|
||||
return data.get(project_key, {}).get("name", project_key)
|
||||
except Exception:
|
||||
return project_key
|
||||
|
||||
@bot.event
|
||||
async def on_ready():
|
||||
print(f'{bot.user} has connected to Discord!')
|
||||
@@ -154,7 +163,7 @@ async def setup(
|
||||
|
||||
@bot.tree.command(name="ticket", description="Create a new project update ticket")
|
||||
@app_commands.describe(
|
||||
project_name="Select the project for this ticket",
|
||||
project_name="Select the project key for this ticket (e.g. friends, joinme)",
|
||||
title="Brief title for this update",
|
||||
message_id="Optional: Discord message ID to reference"
|
||||
)
|
||||
@@ -168,10 +177,11 @@ async def create_ticket(
|
||||
valid_projects = await fetch_project_names()
|
||||
if project_name not in valid_projects:
|
||||
await interaction.response.send_message(
|
||||
f"❌ Invalid project name. Please use one of: {', '.join(valid_projects)}",
|
||||
f"❌ Invalid project key. Please use one of: {', '.join(valid_projects)}",
|
||||
ephemeral=True
|
||||
)
|
||||
return
|
||||
display_name = await fetch_project_display_name(project_name)
|
||||
guild_id = interaction.guild.id if interaction.guild else None
|
||||
settings = load_server_settings(guild_id)
|
||||
if not settings or not settings.get("active_channel_id"):
|
||||
@@ -199,7 +209,7 @@ async def create_ticket(
|
||||
color=discord.Color.blue(),
|
||||
timestamp=datetime.utcnow()
|
||||
)
|
||||
embed.add_field(name="📋 Project", value=project_name, inline=True)
|
||||
embed.add_field(name="📋 Project", value=f"{display_name} ({project_name})", inline=True)
|
||||
embed.add_field(name="📊 Status", value=TicketStatus.PENDING, inline=True)
|
||||
embed.add_field(name="👤 Created By", value=interaction.user.mention, inline=True)
|
||||
if message_id:
|
||||
|
||||
Reference in New Issue
Block a user