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.
106 lines
2.9 KiB
106 lines
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:
|
|
```bash
|
|
pip install discord.py python-dotenv dalle3 invoke openai
|
|
```
|
|
|
|
2. 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:
|
|
|
|
```python
|
|
from swarm_models import OpenAIChat
|
|
|
|
llm = OpenAIChat(
|
|
openai_api_key="Your_OpenAI_API_Key",
|
|
temperature=0.5,
|
|
)
|
|
```
|
|
|
|
Initialize the bot with the `llm`:
|
|
|
|
```python
|
|
from apps.discord import Bot
|
|
|
|
bot = Bot(llm=llm)
|
|
```
|
|
|
|
Send a task to the bot:
|
|
|
|
```python
|
|
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:
|
|
|
|
```python
|
|
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.
|