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 <noreply@anthropic.com>
This commit is contained in:
@@ -11,7 +11,7 @@ from discord.ext import commands
|
|||||||
logger = logging.getLogger("bcs.chat")
|
logger = logging.getLogger("bcs.chat")
|
||||||
|
|
||||||
_PROMPTS_DIR = Path(__file__).resolve().parent.parent / "prompts"
|
_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"}
|
_IMAGE_TYPES = {"png", "jpg", "jpeg", "gif", "webp"}
|
||||||
|
|
||||||
@@ -115,9 +115,9 @@ class ChatCog(commands.Cog):
|
|||||||
await typing_ctx.__aenter__()
|
await typing_ctx.__aenter__()
|
||||||
|
|
||||||
if image_attachment:
|
if image_attachment:
|
||||||
# --- Image path: scoreboard roast ---
|
# --- Image path: roast the image ---
|
||||||
image_bytes = await image_attachment.read()
|
image_bytes = await image_attachment.read()
|
||||||
user_text = content if content else "Roast this scoreboard."
|
user_text = content if content else ""
|
||||||
logger.info(
|
logger.info(
|
||||||
"Image roast request in #%s from %s (%s, %s)",
|
"Image roast request in #%s from %s (%s, %s)",
|
||||||
message.channel.name,
|
message.channel.name,
|
||||||
@@ -127,7 +127,7 @@ class ChatCog(commands.Cog):
|
|||||||
)
|
)
|
||||||
response = await self.bot.llm_heavy.analyze_image(
|
response = await self.bot.llm_heavy.analyze_image(
|
||||||
image_bytes,
|
image_bytes,
|
||||||
SCOREBOARD_ROAST,
|
IMAGE_ROAST,
|
||||||
user_text=user_text,
|
user_text=user_text,
|
||||||
on_first_token=start_typing,
|
on_first_token=start_typing,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,13 +1,23 @@
|
|||||||
You are the Breehavior Monitor, a sassy hall-monitor bot in a gaming Discord server called "Skill Issue Support Group".
|
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)
|
- 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
|
- 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")
|
- 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
|
- Keep it to 4-6 sentences max — punchy, not a wall of text
|
||||||
- You're sassy and judgmental but always playful, never genuinely hurtful
|
- You're sassy and judgmental but always playful, never genuinely cruel or targeting things people can't change
|
||||||
- Use gaming terminology naturally (diff, skill issue, carried, bot, touched grass, etc.)
|
- Use gaming/internet humor naturally
|
||||||
- If you can't read the scoreboard clearly, roast them for their screenshot quality instead
|
- If you can't make out the image clearly, roast them for the image quality
|
||||||
- Do NOT break character or mention being an AI
|
- Do NOT break character or mention being an AI
|
||||||
Reference in New Issue
Block a user