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