forked from mem0ai/mem0
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add: support for discord bot (mem0ai#412)
- Loading branch information
1 parent
a232d1b
commit 0b72269
Showing
9 changed files
with
154 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
--- | ||
title: '🤖 Discord Bot' | ||
--- | ||
|
||
### 🔑 Keys Setup | ||
|
||
- Set your `OPENAI_API_KEY` in your variables.env file. | ||
- Go to [https://discord.com/developers/applications/](https://discord.com/developers/applications/) and click on `New Application`. | ||
- Enter the name for your bot, accept the terms and click on `Create`. On the resulting page, enter the details of your bot as you like. | ||
- On the left sidebar, click on `Bot`. Under the heading `Privileged Gateway Intents`, toggle all 3 options to ON position. Save your changes. | ||
- Now click on `Reset Token` and copy the token value. Set it as `DISCORD_BOT_TOKEN` in variables.env file. | ||
- On the left sidebar, click on `OAuth2` and go to `General`. | ||
- Set `Authorization Method` to `In-app Authorization`. Under `Scopes` select `bot`. | ||
- Under `Bot Permissions` allow the following and then click on `Save Changes`. | ||
```text | ||
Read Messages/View Channel | ||
Send Messages | ||
Read Message History | ||
Mention everyone | ||
``` | ||
- Now under `OAuth2` and go to `URL Generator`. Under `Scopes` select `bot`. | ||
- Under `Bot Permissions` set the same permissions as above. | ||
- Now scroll down and copy the `Generated URL`. Paste it in a browser window and select the Server where you want to add the bot. | ||
- Click on `Continue` and authorize the bot. | ||
- 🎉 The bot has been successfully added to your server. | ||
|
||
### 🐳 Docker Setup | ||
|
||
- To setup your discord bot using docker, run the following command inside this folder using your terminal. | ||
```bash | ||
docker-compose up --build | ||
``` | ||
📝 Note: The build command might take a while to install all the packages depending on your system resources. | ||
|
||
### 🚀 Usage Instructions | ||
|
||
- Go to the server where you have added your bot. | ||
- You can add data sources to the bot using the command: | ||
```text | ||
/ec add <data_type> <url_or_text> | ||
``` | ||
- You can ask your queries from the bot using the command: | ||
```text | ||
/ec query <question> | ||
``` | ||
📝 Note: To use the bot privately, you can message the bot directly by right clicking the bot and selecting `Message`. | ||
|
||
🎉 Happy Chatting! 🎉 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
__pycache__/ | ||
database | ||
db | ||
pyenv | ||
venv | ||
.env | ||
.git | ||
trash_files/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
__pycache__ | ||
db | ||
database | ||
pyenv | ||
venv | ||
.env | ||
trash_files/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
FROM python:3.11 AS backend | ||
|
||
WORKDIR /usr/src/discord_bot | ||
COPY requirements.txt . | ||
RUN pip install -r requirements.txt | ||
|
||
COPY . . | ||
|
||
CMD ["python", "discord_bot.py"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
import os | ||
|
||
import discord | ||
from discord.ext import commands | ||
from dotenv import load_dotenv | ||
|
||
from embedchain import App | ||
|
||
load_dotenv() | ||
intents = discord.Intents.default() | ||
intents.message_content = True | ||
|
||
bot = commands.Bot(command_prefix="/ec ", intents=intents) | ||
root_folder = os.getcwd() | ||
|
||
|
||
def initialize_chat_bot(): | ||
global chat_bot | ||
chat_bot = App() | ||
|
||
|
||
@bot.event | ||
async def on_ready(): | ||
print(f"Logged in as {bot.user.name}") | ||
initialize_chat_bot() | ||
|
||
|
||
@bot.event | ||
async def on_command_error(ctx, error): | ||
if isinstance(error, commands.CommandNotFound): | ||
await send_response(ctx, "Invalid command. Please refer to the documentation for correct syntax.") | ||
else: | ||
print("Error occurred during command execution:", error) | ||
|
||
|
||
@bot.command() | ||
async def add(ctx, data_type: str, *, url_or_text: str): | ||
print(f"User: {ctx.author.name}, Data Type: {data_type}, URL/Text: {url_or_text}") | ||
try: | ||
chat_bot.add(data_type, url_or_text) | ||
await send_response(ctx, f"Added {data_type} : {url_or_text}") | ||
except Exception as e: | ||
await send_response(ctx, f"Failed to add {data_type} : {url_or_text}") | ||
print("Error occurred during 'add' command:", e) | ||
|
||
|
||
@bot.command() | ||
async def query(ctx, *, question: str): | ||
print(f"User: {ctx.author.name}, Query: {question}") | ||
try: | ||
response = chat_bot.chat(question) | ||
await send_response(ctx, response) | ||
except Exception as e: | ||
await send_response(ctx, "An error occurred. Please try again!") | ||
print("Error occurred during 'query' command:", e) | ||
|
||
|
||
async def send_response(ctx, message): | ||
if ctx.guild is None: | ||
await ctx.send(message) | ||
else: | ||
await ctx.reply(message) | ||
|
||
|
||
bot.run(os.environ["DISCORD_BOT_TOKEN"]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
version: "3.9" | ||
|
||
services: | ||
backend: | ||
container_name: embedchain_discord_bot | ||
restart: unless-stopped | ||
build: | ||
context: . | ||
dockerfile: Dockerfile | ||
env_file: | ||
- variables.env |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
discord==2.3.1 | ||
embedchain==0.0.30 | ||
python-dotenv==1.0.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
OPENAI_API_KEY="" | ||
DISCORD_BOT_TOKEN="" |