Update README.md

Added multiple FAQs, rearranged the file and added some minor information where I thought it is useful.
This commit is contained in:
Helikoptermann2 2023-01-30 20:51:22 +01:00 committed by GitHub
parent 42a9ed449d
commit 5516bf81bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

110
README.md
View File

@ -19,33 +19,41 @@ A Matrix bot that uses [transitive-bullshit/chatgpt-api](https://github.com/tran
# Configure
Create a copy of the example `.env` file
```
cp .env.example .env
```
You must adjust the settings in the `.env` file according to your needs.
You must adjust all required settings in the `.env` file according to your needs. Optional settings can also be adjusted later.
## Matrix
You need a Matrix account on Matrix.org (or any other server).
## Prerequsistes
The bot outputs `MATRIX_ACCESS_TOKEN` to the console if it is not already set but `MATRIX_BOT_USERNAME` & `MATRIX_BOT_PASSWORD` are.
### Matrix
- You need a Matrix account on Matrix.org (or any other server) for the bot user.
You must set `MATRIX_ACCESS_TOKEN` to use this token. Do not use it with any other client.
Per default, whoever knows the name of your bot can add it to their rooms and start chatting. Access can be restricted by setting `MATRIX_BLACKLIST` or `MATRIX_WHISTLIST` in your `.env` file. When using a self-hosted setup, you could wildcard all your user by adding `MATRIX_WHITELIST=:anotherhomeserver.example` and change it to your homeserver address.
You no longer need `MATRIX_BOT_PASSWORD` set but you can leave it if you want.
## OpenAI / ChatGPT
### OpenAI / ChatGPT
- You need to have an account at [openai.com. ](https://openai.com/) Its recommended to use an google account without 2FA for set up the account to avoid unsolvable captchas. Then, set `OPENAI_LOGIN_TYPE` to `google` in your `.env` file
You must read the [authentication instructions](https://www.npmjs.com/package/chatgpt#usage) for chatgpt-api if you get stuck.
Using the same account at [chat.openai.com](https://chat.openai.com) may refresh tokens invalidating the bot's session.
Ensure your OpenAI account uses Google and set `OPENAI_LOGIN_TYPE` to `google`.
**If the Google account uses 2FA it will fail** but there is [a workaround](https://github.com/transitive-bullshit/chatgpt-api/issues/169#issuecomment-1362206780)
## Setup
At first run, the bot outputs `MATRIX_ACCESS_TOKEN` to the console if it is not already set but `MATRIX_BOT_USERNAME` & `MATRIX_BOT_PASSWORD` are.
You must set `MATRIX_ACCESS_TOKEN` to use this token. Do not use it with any other client. Also, do not use an access token extracted via Element. This can cause issues with encryption later on.
You no longer need `MATRIX_BOT_PASSWORD` set but you can leave it if you want.
# Run
There are multiple ways to run this bot. The easiest way is to run it within docker. You need to be logged into your OpenAi account from the same network your bot machine is. When you are logged in, you can safely close the window, just make sure you do not log out because this would make your session token invalid.
## with Docker
This is the recommended way to run this project. It will use the latest stable release.
@ -63,13 +71,18 @@ docker run -it -v storage:/storage --env-file=./.env --name matrix-chatgpt-bot m
Note: Without -it flags in the command above you won't be able to stop the container using Ctrl-C
You can also simply use a docker-compose file. Either with a self-build image (run `docker build . -t matrix-chatgpt-bot`) or the pre-build package from this repo.
Note: In order to see the output of your console you need to run `docker logs matrix-chatgpt-bot`
## with Docker Compose
You can also simply use a docker-compose file. You only need to copy the content below and save it in a file named `docker-compose.yml`. Either with a self-build image (run `docker build . -t matrix-chatgpt-bot` from your local git repo location) or with the latest stable release as pre-build package from this repo, which is the **recommended** way. The script will look for the `.env` file in the same folder as the `docker-compose.yml`. The key storage folder `storage` will be created in the same folder as well. Adjust the locations to your needs.
```
version: '3.7'
services:
matrix-chatgpt-bot:
container_name: matrix-chatgpt-bot
image: matrix-chatgpt-bot # change to ghcr.io/matrixgpt/matrix-chatgpt-bot if you want to use the pre-build package
image: ghcr.io/matrixgpt/matrix-chatgpt-bot:latest ## change to "matrix-chatgpt-bot" if you want to use your self-build image
volumes:
- ./storage:/storage
env_file:
@ -78,7 +91,8 @@ You can also simply use a docker-compose file. Either with a self-build image (r
## without Docker
It is strongly recommended you run this package under Docker.
**Important**: It is strongly recommended to run this package under Docker to not need to install various dependencies manually.
Nevertheless, you can also run it by using the package manager yarn (get it via `apt install -y yarn`). You might also need to have a newer version of Node.js and other missing packages.
- `yarn`
- `yarn build`
@ -91,18 +105,6 @@ You only need to do this if you want to contribute code to this package.
- Run `yarn`
- Run `yarn build`
# Reporting issues
You must report issues via Github if you want support. The chat room is for discussion not first line tech support.
# Discussion
Join [#matrix-chatgpt-bot:matrix.org](https://matrix.to/#/#matrix-chatgpt-bot:matrix.org) with any Matrix chat client or on the web!
If you've never set up a Matrix client before you can follow the prompts to get started.
Please use the search on Github and Matrix before asking for support.
# Good to know
@ -118,22 +120,64 @@ Please use the search on Github and Matrix before asking for support.
## How do I handle "[Error: decryption failed because the room key is missing]"
Encryption works great with this package but can sometimes be a bit sensitive. Following steps can help to solve the "encryption" error
- Don't use a `MATRIX_ACCESS_TOKEN` extracted via Element-App, use the generated token from this package based on your `MATRIX_BOT_USERNAME` & `MATRIX_BOT_PASSWORD` set in the env-file. It will be visible in the console at start up. After adding it to your env-file you need to restart the bot.
- Don't use a `MATRIX_ACCESS_TOKEN` extracted via Element-App, use the generated token from the bot based on your `MATRIX_BOT_USERNAME` & `MATRIX_BOT_PASSWORD` set in the `env`file. It will be visible in the console at start up if the `MATRIX_ACCESS_TOKEN` is not already set:
1) Remove the `MATRIX_ACCESS_TOKEN` from the `env` file and make sure `MATRIX_BOT_USERNAME` & `MATRIX_BOT_PASSWORD` are set
2) Re-run the bot
3) Copy the token from console output to your `env` file
4) Restart the bot again.
- If all fails, you can always reset your key storage. It's important to exercise all of the following steps, because any remaining data could lead to the next encryption error. Once everything is working, make sure to not touch the "storage" folder anymore:
1. Stop the Bot
2. Delete the "storage" folder
3. Delete all user data of your matrix bot account (e.g. using Synapse-Admin)
4. Log into your bot account (e.g. via Element) and log out of all sessions
5. Verify your env-file and then run the bot setup again (e.g. via `docker-compose up` if you use docker-compose).
1) Stop the bot
2) Delete the "storage" folder
3) Delete all user data of your matrix bot account (e.g. using Synapse-Admin) or create a fresh bot user account (you can then skip step 4)
4) Log into your bot account (e.g. via Element) and log out of all sessions
5) Verify the correctness of your `env` file and then run the bot setup again (e.g. via `docker-compose up` if you use docker-compose).
- If you experience this error after adding the bot to a new room but it was working before, you can try to use the command `/discardsession` in the element app to drop the session and trigger a new one. In this error case, the error only appears on a specific device, so using another client should work eitherway.
## What to do if I get an error saying I'm not logged in?
- If the bot can't log into your OpenAI account, your session token might not been valid anymore (e.g. you logged out of your OpenAI-Account through your Browser). Re-login to your OpenAI account using a machine in the same network as the machine your bot is using. Then restart the bot.
- If the bot can't log into your OpenAI account, your session token might not been valid anymore (e.g. you logged out of your OpenAI account through your browser). Re-login to your OpenAI account using a machine in the same network as the machine your bot is using. Then restart the bot.
## I just want to chat with the bot and don't want to deal with encryption problems
- Set `MATRIX_ENCRYPTION=false` in your env-file and restart the bot. If it previously was running with encryption switched on, you need to create a new room with the bot as encryption can't be switched off once it was activated.
## I'm getting a "{ errcode: 'M_NOT_FOUND', error: 'Event not found.' }" in my log files, do I need to worry?
- So far, its not known to cause issues, you can safely ignore it.
## What to do if I get a TimeoutError, e.g. "TimeoutError: Navigation timeout of 30000 ms exceeded"?
This can happen if your bot can't reach the openai server.
- Make sure that your machine can reach the internet (e.g. using curl: `curl -I www.google.com` should give you a useful output (not "Could not resolve host")
- When using docker, you first need to get inside the container via `docker exec -it matrix-chatgpt-bot bash` and get the curl package `apt-get update && apt install -y curl`). You can then run the command from within the container.
- Verify that you are using a google account and 2FA is **NOT** activated.
## ChatGPT is at capacity right now?
There are multiple ways out there on what to do, so see this just as some ideas
- If you can't login via website, try clearing your browser cache by pressing "shift" and reload the OpenAI page https://chat.openai.com
- If your bot can't connect, just be a bit patient, it typically does not take long until it's back
## How do I know that the bot is running succesfully?
Once the bot has started succesfully, it will output the following information to your console.
- `[INFO] [index] Starting bot...`
- `[INFO] [MatrixClientLite] End-to-end encryption enabled` ## this is dependend on your setup
- `[INFO] [index] Bot started!`
## I use Docker but I don't see an console output
You most likely need to view the logs by running `docker logs matrix-chatgpt-bot`
# Reporting issues
You must report issues via Github if you want support. The chat room is for discussion not first line tech support.
# Discussion
Join [#matrix-chatgpt-bot:matrix.org](https://matrix.to/#/#matrix-chatgpt-bot:matrix.org) with any Matrix chat client or on the web!
If you've never set up a Matrix client before you can follow the prompts to get started.
Please use the search on Github and Matrix before asking for support.
# License
GNU AGPLv3. See LICENSE