Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/openai/gpt-discord-bot
Example Discord bot written in Python that uses the completions API to have conversations with the `text-davinci-003` model, and the moderations API to filter the messages.
https://github.com/openai/gpt-discord-bot
Last synced: 29 days ago
JSON representation
Example Discord bot written in Python that uses the completions API to have conversations with the `text-davinci-003` model, and the moderations API to filter the messages.
- Host: GitHub
- URL: https://github.com/openai/gpt-discord-bot
- Owner: openai
- License: mit
- Created: 2022-12-21T21:53:06.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-07T10:53:58.000Z (5 months ago)
- Last Synced: 2024-09-27T06:21:14.029Z (about 1 month ago)
- Language: Python
- Homepage:
- Size: 15.6 KB
- Stars: 1,770
- Watchers: 35
- Forks: 657
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-discord - gpt-discord-bot - An example discord bot that uses the `text-davinci-003` model from openai. (Bots / Self Host-able Bots)
- awesome-ChatGPT-repositories - gpt-discord-bot - Example Discord bot written in Python that uses the completions API to have conversations with the `text-davinci-003` model, and the moderations API to filter the messages. (Chatbots)
- stars - openai/gpt-discord-bot - Example Discord bot written in Python that uses the completions API to have conversations with the `text-davinci-003` model, and the moderations API to filter the messages. (Python)
README
# Please read!
**For any problems running this specific bot:** [Discord Project Post](https://discord.com/channels/974519864045756446/1055336272543092757)
**For general OpenAI API problems or questions:** [Discord API Discussions](https://discord.com/channels/974519864045756446/1037561178286739466)
**For bugs in the template code:** create an Issue
**For feature requests:** this repo is not accepting feature requests, you can discuss potential features in [Discord Project Post](https://discord.com/channels/974519864045756446/1055336272543092757)
**For PRs:** only bug fix PRs wil be accepted. If you are implementing a new feature, please fork this repo.
Thank you!
---
# GPT Discord BotExample Discord bot written in Python that uses the [chat completions API](https://platform.openai.com/docs/api-reference/chat/create) to have conversations with the `gpt-3.5-turbo` model, and the [moderations API](https://beta.openai.com/docs/api-reference/moderations) to filter the messages.
This bot uses the [OpenAI Python Library](https://github.com/openai/openai-python) and [discord.py](https://discordpy.readthedocs.io/).
# Features
- `/chat` starts a public thread, with a `message` argument which is the first user message passed to the bot. You can optionally also adjust the `temperature` and `max_tokens` parameters.
- The model will generate a reply for every user message in any threads started with `/chat`
- The entire thread will be passed to the model for each request, so the model will remember previous messages in the thread
- when the context limit is reached, or a max message count is reached in the thread, bot will close the thread
- you can customize the bot instructions by modifying `config.yaml`
- you can change the model, the default value is `gpt-3.5-turbo`# Setup
1. Copy `.env.example` to `.env` and start filling in the values as detailed below
1. Go to https://beta.openai.com/account/api-keys, create a new API key, and fill in `OPENAI_API_KEY`
1. Create your own Discord application at https://discord.com/developers/applications
1. Go to the Bot tab and click "Add Bot"
- Click "Reset Token" and fill in `DISCORD_BOT_TOKEN`
- Disable "Public Bot" unless you want your bot to be visible to everyone
- Enable "Message Content Intent" under "Privileged Gateway Intents"
1. Go to the OAuth2 tab, copy your "Client ID", and fill in `DISCORD_CLIENT_ID`
1. Copy the ID the server you want to allow your bot to be used in by right clicking the server icon and clicking "Copy ID". Fill in `ALLOWED_SERVER_IDS`. If you want to allow multiple servers, separate the IDs by "," like `server_id_1,server_id_2`
1. Install dependencies and run the bot
```
pip install -r requirements.txt
python -m src.main
```
You should see an invite URL in the console. Copy and paste it into your browser to add the bot to your server.
Note: make sure you are using Python 3.9+ (check with python --version)# Optional configuration
1. If you want moderation messages, create and copy the channel id for each server that you want the moderation messages to send to in `SERVER_TO_MODERATION_CHANNEL`. This should be of the format: `server_id:channel_id,server_id_2:channel_id_2`
1. If you want to change the personality of the bot, go to `src/config.yaml` and edit the instructions
1. If you want to change the moderation settings for which messages get flagged or blocked, edit the values in `src/constants.py`. A higher value means less chance of it triggering, with 1.0 being no moderation at all for that category.# FAQ
> Why isn't my bot responding to commands?
Ensure that the channels your bots have access to allow the bot to have these permissions.
- Send Messages
- Send Messages in Threads
- Create Public Threads
- Manage Messages (only for moderation to delete blocked messages)
- Manage Threads
- Read Message History
- Use Application Commands