add: support for discord bot (#412)

This commit is contained in:
Sahil Kumar Yadav
2023-08-12 05:52:27 +05:30
committed by GitHub
parent a232d1b779
commit 0b72269e18
9 changed files with 154 additions and 1 deletions

View File

@@ -0,0 +1,8 @@
__pycache__/
database
db
pyenv
venv
.env
.git
trash_files/

7
examples/discord_bot/.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
__pycache__
db
database
pyenv
venv
.env
trash_files/

View File

@@ -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"]

View File

@@ -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"])

View File

@@ -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

View File

@@ -0,0 +1,3 @@
discord==2.3.1
embedchain==0.0.30
python-dotenv==1.0.0

View File

@@ -0,0 +1,2 @@
OPENAI_API_KEY=""
DISCORD_BOT_TOKEN=""