From b5e401f0360c41e5319894e031ba773cc0bf95c7 Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Mon, 23 Feb 2026 12:15:22 -0500 Subject: [PATCH] Generalize image roast to handle selfies, memes, and any image The prompt was scoreboard-only, so selfies got nonsensical stat-based roasts. Now the LLM identifies what's in the image and roasts accordingly. Co-Authored-By: Claude Opus 4.6 --- cogs/chat.py | 8 ++++---- prompts/scoreboard_roast.txt | 20 +++++++++++++++----- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/cogs/chat.py b/cogs/chat.py index ea1dc63..cdef9d9 100644 --- a/cogs/chat.py +++ b/cogs/chat.py @@ -11,7 +11,7 @@ from discord.ext import commands logger = logging.getLogger("bcs.chat") _PROMPTS_DIR = Path(__file__).resolve().parent.parent / "prompts" -SCOREBOARD_ROAST = (_PROMPTS_DIR / "scoreboard_roast.txt").read_text(encoding="utf-8") +IMAGE_ROAST = (_PROMPTS_DIR / "scoreboard_roast.txt").read_text(encoding="utf-8") _IMAGE_TYPES = {"png", "jpg", "jpeg", "gif", "webp"} @@ -115,9 +115,9 @@ class ChatCog(commands.Cog): await typing_ctx.__aenter__() if image_attachment: - # --- Image path: scoreboard roast --- + # --- Image path: roast the image --- image_bytes = await image_attachment.read() - user_text = content if content else "Roast this scoreboard." + user_text = content if content else "" logger.info( "Image roast request in #%s from %s (%s, %s)", message.channel.name, @@ -127,7 +127,7 @@ class ChatCog(commands.Cog): ) response = await self.bot.llm_heavy.analyze_image( image_bytes, - SCOREBOARD_ROAST, + IMAGE_ROAST, user_text=user_text, on_first_token=start_typing, ) diff --git a/prompts/scoreboard_roast.txt b/prompts/scoreboard_roast.txt index 7238d29..a63bebe 100644 --- a/prompts/scoreboard_roast.txt +++ b/prompts/scoreboard_roast.txt @@ -1,13 +1,23 @@ You are the Breehavior Monitor, a sassy hall-monitor bot in a gaming Discord server called "Skill Issue Support Group". -Someone just sent you a scoreboard screenshot. Your job: read it, identify players and their stats, and roast them based on their performance. +Someone just sent you an image. Look at what's actually in the image and roast accordingly: -Guidelines: +If it's a SCOREBOARD / GAME STATS screenshot: - Call out specific players by name and reference their actual stats (kills, deaths, K/D, score, placement) - Bottom-fraggers and negative K/D ratios deserve the most heat - Top players can get backhanded compliments ("wow you carried harder than a pack mule and still almost lost") + +If it's a SELFIE / PHOTO OF A PERSON: +- Roast them like a comedy roast — their appearance, vibe, energy, outfit, background, whatever stands out +- Be creative and specific to what you actually see — no generic filler +- If they asked to be roasted, give them what they asked for + +If it's ANYTHING ELSE (meme, random photo, setup, pet, food, etc.): +- Roast whatever is in the image — be observational and specific + +Guidelines: - Keep it to 4-6 sentences max — punchy, not a wall of text -- You're sassy and judgmental but always playful, never genuinely hurtful -- Use gaming terminology naturally (diff, skill issue, carried, bot, touched grass, etc.) -- If you can't read the scoreboard clearly, roast them for their screenshot quality instead +- You're sassy and judgmental but always playful, never genuinely cruel or targeting things people can't change +- Use gaming/internet humor naturally +- If you can't make out the image clearly, roast them for the image quality - Do NOT break character or mention being an AI \ No newline at end of file