discord_tools.py
"""
Discord Tools
=============================
Demonstrates discord tools.
"""
import os
from agno.agent import Agent
from agno.tools.discord import DiscordTools
# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------
# Get Discord token from environment
discord_token = os.getenv("DISCORD_BOT_TOKEN")
# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
if not discord_token:
raise ValueError("DISCORD_BOT_TOKEN not set")
# Example 1: Enable all Discord functions
discord_agent_all = Agent(
name="Discord Agent - All Functions",
instructions=[
"You are a Discord bot with access to all Discord operations.",
"You can send messages, manage channels, read history, and manage messages.",
],
tools=[
DiscordTools(
bot_token=discord_token,
all=True, # Enable all Discord functions
)
],
markdown=True,
)
# Example 2: Enable specific Discord functions only
discord_agent_specific = Agent(
name="Discord Agent - Specific Functions",
instructions=[
"You are a Discord bot with limited operations.",
"You can only send messages and read message history.",
],
tools=[
DiscordTools(
bot_token=discord_token,
enable_send_message=True,
enable_get_channel_messages=True,
enable_get_channel_info=False,
enable_list_channels=False,
enable_delete_message=False,
)
],
markdown=True,
)
# Example 3: Default behavior with specific configurations
discord_agent = Agent(
name="Discord Agent - Default",
instructions=[
"You are a Discord bot that can perform various operations.",
"You can send messages, read message history, manage channels, and delete messages.",
],
tools=[
DiscordTools(
bot_token=discord_token,
enable_send_message=True,
enable_get_channel_messages=True,
enable_get_channel_info=True,
enable_list_channels=True,
enable_delete_message=True,
)
],
markdown=True,
)
# Replace with your Discord IDs
channel_id = "YOUR_CHANNEL_ID"
server_id = "YOUR_SERVER_ID"
# Example usage with all functions enabled
print("=== Example 1: Using all Discord functions ===")
discord_agent_all.print_response(
f"Send a message 'Hello from Agno with all functions!' to channel {channel_id}",
stream=True,
)
# Example usage with specific functions only
print("\n=== Example 2: Using specific Discord functions ===")
discord_agent_specific.print_response(
f"Send a message 'Hello from limited bot!' to channel {channel_id}", stream=True
)
# Example usage with default configuration
print("\n=== Example 3: Default Discord agent usage ===")
discord_agent.print_response(
f"Send a message 'Hello from Agno!' to channel {channel_id}", stream=True
)
discord_agent.print_response(
f"Get information about channel {channel_id}", stream=True
)
discord_agent.print_response(
f"List all channels in server {server_id}", stream=True
)
discord_agent.print_response(
f"Get the last 5 messages from channel {channel_id}", stream=True
)
# Example: Delete a message (replace message_id with an actual message ID)
# message_id = 123456789
# discord_agent.print_response(
# f"Delete message {message_id} from channel {channel_id}",
# stream=True
# )
Run the Example
1
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activate
uv venv --python 3.12
.venv\Scripts\activate
2
Install dependencies
uv pip install -U agno openai requests
3
Export environment variables
export DISCORD_BOT_TOKEN="your_discord_bot_token_here"
export OPENAI_API_KEY="your_openai_api_key_here"
$Env:DISCORD_BOT_TOKEN="your_discord_bot_token_here"
$Env:OPENAI_API_KEY="your_openai_api_key_here"
4
Configure the Discord bot and IDs
Create a Discord application and bot. Enable the Message Content privileged intent in the bot settings, then install the bot in the target server with the
bot scope and View Channels, Send Messages, and Read Message History permissions. Grant Manage Messages only if you enable deletion. Enable Developer Mode in Discord, then replace YOUR_CHANNEL_ID and YOUR_SERVER_ID in the saved Python file with IDs copied from that server.5
Run the example
Save the code above as
discord_tools.py, then run:python discord_tools.py