You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
swarms/docs/applications/discord.md

2.9 KiB

Usage Documentation: Discord Bot with Advanced Features


Overview:

This code provides a structure for a Discord bot with advanced features such as voice channel interactions, image generation, and text-based interactions using OpenAI models.


Setup:

  1. Ensure that the necessary libraries are installed:
pip install discord.py python-dotenv dalle3 invoke openai
  1. Create a .env file in the same directory as your bot script and add the following:
DISCORD_TOKEN=your_discord_bot_token
STORAGE_SERVICE=your_storage_service_endpoint
SAVE_DIRECTORY=path_to_save_generated_images

Bot Class and its Methods:

__init__(self, agent, llm, command_prefix="!"):

Initializes the bot with the given agent, language model (llm), and a command prefix (default is !).

add_command(self, name, func):

Allows you to dynamically add new commands to the bot. The name is the command's name and func is the function to execute when the command is called.

run(self):

Starts the bot using the DISCORD_TOKEN from the .env file.


Commands:

  1. !greet: Greets the user.

  2. !help_me: Provides a list of commands and their descriptions.

  3. !join: Joins the voice channel the user is in.

  4. !leave: Leaves the voice channel the bot is currently in.

  5. !listen: Starts listening to voice in the current voice channel and records the audio.

  6. !generate_image [prompt]: Generates images based on the provided prompt using the DALL-E3 model.

  7. !send_text [text] [use_agent=True]: Sends the provided text to the worker (either the agent or the LLM) and returns the response.


Usage:

Initialize the llm (Language Learning Model) with your OpenAI API key:

from swarm_models import OpenAIChat

llm = OpenAIChat(
    openai_api_key="Your_OpenAI_API_Key",
    temperature=0.5,
)

Initialize the bot with the llm:

from apps.discord import Bot

bot = Bot(llm=llm)

Send a task to the bot:

task = "What were the winning Boston Marathon times for the past 5 years (ending in 2022)? Generate a table of the year, name, country of origin, and times."
bot.send_text(task)

Start the bot:

bot.run()

Additional Notes:

  • The bot makes use of the dalle3 library for image generation. Ensure you have the model and necessary setup for it.

  • For the storage service, you might want to integrate with a cloud service like Google Cloud Storage or AWS S3 to store and retrieve generated images. The given code assumes a method .upload() for the storage service to upload files.

  • Ensure that you've granted the bot necessary permissions on Discord, especially if you want to use voice channel features.

  • Handle API keys and tokens securely. Avoid hardcoding them directly into your code. Use environment variables or secure secret management tools.