ChatGPTSpaceRude / main.py
AdityaSharmaTech's picture
Update main.py
2769f4c verified
import os
import threading
from flask import Flask, jsonify
from dotenv import load_dotenv
import discord
from discord.ext import commands
from glai import GLAI
import time
load_dotenv()
intents = discord.Intents().default()
intents.message_content = True
intents.members = True
intents.message_content = True
bot = commands.Bot(command_prefix="!", intents=intents)
app = Flask(__name__)
ai = GLAI(api_key=os.getenv("GOOGLE_API_KEY"), pinecone_api_key=os.getenv("PINECONE_API_KEY"))
status = True
allowed_channels = [1355959320222892281, 997339826565152844, 1370813873791303771, 1371683872974311575]
def get_members():
guild = bot.get_guild(1355959320222892273)
if not guild:
raise Exception("Guild not found!")
memes = [{"username": member.name, "id": member.id, "name": member.global_name} for member in guild.members if
not member.bot]
return memes
@app.route('/members', methods=['GET'])
def members():
members_list = get_members()
return jsonify({"members": members_list})
def get_response(message: str, session_id: str, name: str) -> str:
try:
response = ai.query(message, session_id, "Rohit", name)
return response["answer"].content
except Exception as e:
print("Error: \n")
print(e)
return f"Something went wrong!, Retrying connection... {str(e)}"
async def handle_message(message: discord.Message):
user = message.author
content = message.content
global status
global allowed_channels
print(f"channel: {message.channel.id}")
if message.channel.id == 1371683872974311575:
time.sleep(2)
if (message.channel.id in allowed_channels) or ("1368647373110382702" in content):
if "start" in content and str(user) == "adityasharmalive" and status is False:
await message.channel.send("<@325866452089307146> I am on")
status = True
return
if "stop" in content and str(user) == "adityasharmalive":
await message.channel.send("<@325866452089307146> bye")
status = False
return
if status is False:
await message.channel.send("Please ask <@1186231758191071313> sr to start me.")
return
async with message.channel.typing():
response = get_response(content, str(message.channel.id), user)
await message.channel.send(response)
@bot.event
async def on_message(message):
# Ignore messages from the bot itself
if message.author == bot.user:
return
await handle_message(message) # Call your function
# Optional: if using commands, don't forget this
await bot.process_commands(message)
@bot.command()
async def server_id(ctx):
await ctx.send(f"The server ID is: {ctx.guild.id}")
def start_flask():
app.run(port=7860, host="0.0.0.0", debug=False)
@bot.event
async def on_ready():
print(f"Bot logged in as {bot.user}")
flask_thread = threading.Thread(target=start_flask)
flask_thread.start()
bot.run(os.getenv("DISCORD_BOT_TOKEN"))