|
import os |
|
import discord |
|
import requests |
|
from dotenv import load_dotenv |
|
from fastapi import FastAPI |
|
import gradio as gr |
|
import asyncio |
|
import threading |
|
import time |
|
|
|
|
|
load_dotenv() |
|
|
|
|
|
BOT_TOKEN = os.getenv("BOT_TOKEN") |
|
|
|
|
|
app = FastAPI() |
|
|
|
|
|
@app.get("/") |
|
async def read_root(): |
|
return {"message": "Bot is running"} |
|
|
|
|
|
intents = discord.Intents.default() |
|
intents.message_content = True |
|
client = discord.Client(intents=intents) |
|
|
|
|
|
url = "https://0zyen.vercel.app/api/chat/completions" |
|
|
|
|
|
def get_response_from_api(user_input): |
|
payload = { |
|
"content": user_input, |
|
"model": "Evil" |
|
} |
|
response = requests.post(url, json=payload) |
|
if response.status_code == 200: |
|
api_response = response.json() |
|
return f'prompt\nmodel:evil\n{api_response.get("generated_text", "")}' |
|
return "Error communicating with API." |
|
|
|
|
|
async def run_discord_bot(): |
|
await client.start(BOT_TOKEN) |
|
|
|
|
|
def start_fastapi_server(): |
|
import uvicorn |
|
uvicorn.run(app, host="0.0.0.0", port=7860) |
|
|
|
|
|
@client.event |
|
async def on_ready(): |
|
print(f"Bot logged in as {client.user}") |
|
|
|
|
|
@client.event |
|
async def on_message(message): |
|
if message.author == client.user: |
|
return |
|
|
|
|
|
response_text = get_response_from_api(message.content) |
|
|
|
|
|
await message.channel.send(response_text) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
threading.Thread(target=start_fastapi_server, daemon=True).start() |
|
|
|
|
|
asyncio.run(run_discord_bot()) |