Agent with Media
Run a Discord bot that analyzes images, audio, and video using Gemini.
Code
Only the first attachment is inspected; send one supported image, audio, or video per message. The current adapter cannot safely handle attachments without a content type. See media limitations.
import discord
from agno.agent import Agent
from agno.db.sqlite import SqliteDb
from agno.integrations.discord import DiscordClient
from agno.models.google import Gemini
media_agent = Agent(
name="Media Agent",
model=Gemini(id="gemini-3.5-flash"),
description="A Media processing agent",
instructions="Analyze images, audios and videos sent by the user",
db=SqliteDb(db_file="discord.db"),
add_history_to_context=True,
num_history_runs=3,
add_datetime_to_context=True,
markdown=True,
)
intents = discord.Intents.default()
intents.message_content = True
discord_agent = DiscordClient(media_agent, client=discord.Client(intents=intents))
if __name__ == "__main__":
discord_agent.serve()Usage
First complete the Discord application, Message Content intent, and thread permission setup. This example uses a custom client that requests only the privileged Message Content intent.
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateSet your API keys
export GOOGLE_API_KEY=xxx
export DISCORD_BOT_TOKEN=xxxInstall dependencies
uv pip install -U agno google-genai discord.py sqlalchemyRun Agent
Save the code above as agent_with_media.py, then run:
python agent_with_media.py