2023-03-17 18:44:12 +00:00
|
|
|
import os
|
|
|
|
import re
|
|
|
|
|
|
|
|
import discord
|
|
|
|
import requests
|
|
|
|
from discord.ext import commands
|
|
|
|
import dotenv
|
|
|
|
|
|
|
|
dotenv.load_dotenv()
|
|
|
|
|
|
|
|
# Replace 'YOUR_BOT_TOKEN' with your bot's token
|
|
|
|
TOKEN = os.getenv("DISCORD_TOKEN")
|
2023-03-27 21:51:54 +00:00
|
|
|
PREFIX = '@DocsGPT'
|
2023-06-23 11:56:14 +00:00
|
|
|
BASE_API_URL = 'http://localhost:7091'
|
2023-03-17 18:44:12 +00:00
|
|
|
|
|
|
|
intents = discord.Intents.default()
|
|
|
|
intents.message_content = True
|
|
|
|
|
|
|
|
bot = commands.Bot(command_prefix=PREFIX, intents=intents)
|
|
|
|
|
|
|
|
|
|
|
|
def split_string(input_str):
|
2023-03-27 21:51:54 +00:00
|
|
|
pattern = r'^<@!?{0}>\s*'.format(bot.user.id)
|
|
|
|
match = re.match(pattern, input_str)
|
2023-03-17 18:44:12 +00:00
|
|
|
if match:
|
2023-03-27 21:51:54 +00:00
|
|
|
content = input_str[match.end():].strip()
|
|
|
|
return str(bot.user.id), content
|
2023-03-17 18:44:12 +00:00
|
|
|
return None, input_str
|
|
|
|
|
|
|
|
|
|
|
|
@bot.event
|
|
|
|
async def on_ready():
|
|
|
|
print(f'{bot.user.name} has connected to Discord!')
|
|
|
|
|
|
|
|
|
|
|
|
async def fetch_answer(question):
|
|
|
|
data = {
|
|
|
|
'sender': 'discord',
|
|
|
|
'question': question,
|
|
|
|
'history': ''
|
|
|
|
}
|
|
|
|
headers = {"Content-Type": "application/json",
|
|
|
|
"Accept": "application/json"}
|
|
|
|
response = requests.post(BASE_API_URL + '/api/answer', json=data, headers=headers)
|
|
|
|
if response.status_code == 200:
|
|
|
|
return response.json()['answer']
|
|
|
|
return 'Sorry, I could not fetch the answer.'
|
|
|
|
|
|
|
|
|
|
|
|
@bot.event
|
|
|
|
async def on_message(message):
|
|
|
|
if message.author == bot.user:
|
|
|
|
return
|
|
|
|
|
|
|
|
content = message.content.strip()
|
|
|
|
prefix, content = split_string(content)
|
|
|
|
if prefix is None:
|
|
|
|
return
|
|
|
|
|
2023-03-27 21:51:54 +00:00
|
|
|
part_prefix = str(bot.user.id)
|
|
|
|
if part_prefix == prefix:
|
2023-03-17 18:44:12 +00:00
|
|
|
answer = await fetch_answer(content)
|
|
|
|
await message.channel.send(answer)
|
|
|
|
|
|
|
|
await bot.process_commands(message)
|
|
|
|
|
|
|
|
|
|
|
|
bot.run(TOKEN)
|