/discord-bot-chatgpt

Discord Bot for virtual assistance using ChatGPT by OpenAI

Primary LanguagePythonGNU General Public License v2.0GPL-2.0

ChatGPT Discord Bot

Join here for test (https://discord.gg/kEX5GjHW)

Warning

According to OpenAI's latest announcement, using unofficial API may result in the ban of your account. Please assess the risks yourself

2023-03-16 OpenAI has deactivated some accounts using UNOFFICIAL model. Recommend using official model

2023-03-14 Website ChatGPT model is unstable, suggest using the official API

2023-03-03 Update: Official GPT-3.5 model

2023-02-25 Update: Website ChatGPT model

Features

  • /chat [message] Chat with ChatGPT!

  • /draw [prompt] Generate an image with the Dalle2 model

  • /switchpersona [persona] Switch between optional chatGPT jailbreaks

    • random: Picks a random persona
    • chatGPT: Standard chatGPT mode
    • dan: Dan Mode 11.0, infamous Do Anything Now Mode
    • sda: Superior DAN has even more freedom in DAN Mode
    • confidant: Evil Confidant, evil trusted confidant
    • based: BasedGPT v2, sexy gpt
    • oppo: OPPO says exact opposite of what chatGPT would say
    • dev: Developer Mode, v2 Developer mode enabled
  • /private ChatGPT switch to private mode

  • /public ChatGPT switch to public mode

  • /replyall ChatGPT switch between replyAll mode and default mode

  • /reset Clear ChatGPT conversation history

  • /chat-model Switch different chat model

    • OFFICIAL: GPT-3.5 model
    • UNOFFICIAL: Website ChatGPT
    • Modifying CHAT_MODEL field in the .env file change the default model

Chat

image

Draw

image

Switch Persona

Warning

Using certain personas may generate vulgar or disturbing content. Use at your own risk.

image

Mode

  • public mode (default) the bot directly reply on the channel

    image

  • private mode the bot's reply can only be seen by the person who used the command

    image

  • replyall mode the bot will reply to all messages in the channel without using slash commands (/chat will also be unavailable)

    Warning The bot will easily be triggered in replyall mode, which could cause program failures

Setup

Critical prerequisites to install

  • run pip3 install -r requirements.txt

  • Rename the file .env.dev to .env

  • Recommended python version 3.10

Step 1: Create a Discord bot

  1. Go to https://discord.com/developers/applications create an application

  2. Build a Discord bot under the application

  3. Get the token from bot setting

    image

  4. Store the token to .env under the DISCORD_BOT_TOKEN

    image
  5. Turn MESSAGE CONTENT INTENT ON

    image

  6. Invite your bot to your server via OAuth2 URL Generator

    image

Step 2: Official API authentication

Geanerate an OpenAI API key

  1. Go to https://beta.openai.com/account/api-keys

  2. Click Create new secret key

    image

  3. Store the SECRET KEY to .env under the OPENAI_API_KEY

  4. You're all set for Step 3

Step 2: Website ChatGPT authentication - 2 approaches

Email/Password authentication (Not supported for Google/Microsoft accounts)

  1. Create an account on https://chat.openai.com/chat

  2. Save your email into .env under OPENAI_EMAIL

  3. Save your password into .env under OPENAI_PASSWORD

  4. You're all set for Step 3

Session token authentication

  1. Go to https://chat.openai.com/chat log in

  2. Open console with F12

  3. Open Application tab > Cookies

    image

  4. Copy the value for __Secure-next-auth.session-token from cookies and paste it into .env under SESSION_TOKEN

  5. You're all set for Step 3

Step 3: Run the bot on the desktop

  1. Open a terminal or command prompt

  2. Navigate to the directory where you installed the ChatGPT Discord bot

  3. Run python3 main.py to start the bot

Step 3: Run the bot with Docker

  1. Build the Docker image & Run the Docker container docker compose up -d

  2. Inspect whether the bot works well docker logs -t chatgpt-discord-bot

    Stop the bot:

    • docker ps to see the list of running services
    • docker stop <BOT CONTAINER ID> to stop the running bot

Have a good chat!

Optional: Disable logging

  • Set the value of LOGGING in the .env to False

Optional: Setup starting prompt

  • A starting prompt would be invoked when the bot is first started or reset

  • You can set it up by modifying the content in starting-prompt.txt

  • All the text in the file will be fired as a prompt to the bot

  • Get the first message from ChatGPT in your discord channel!

    1. Right-click the channel you want to recieve the message, Copy ID

      channel-id

    2. paste it into .env under DISCORD_CHANNEL_ID