Spaces:
Runtime error
Runtime error
import requests | |
import discord | |
import logging | |
import os | |
from transformers import pipeline | |
# ๋ก๊น ์ค์ | |
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s:%(levelname)s:%(name)s: %(message)s', handlers=[logging.StreamHandler()]) | |
# ์ธํ ํธ ์ค์ | |
intents = discord.Intents.default() | |
intents.message_content = True | |
# ๋ฒ์ญ ํ์ดํ๋ผ์ธ ์ค์ | |
translator = pipeline("translation", model="Helsinki-NLP/opus-mt-ko-en") | |
# ๊ณ ์ ๋ ๋ค๊ฑฐํฐ๋ธ ํ๋กฌํํธ | |
negative_prompt = "blur, low quality, bad composition, ugly, disfigured, weird colors, low quality, jpeg artifacts, lowres, grainy, deformed structures, blurry, opaque, low contrast, distorted details, details are low" | |
# ์ธํผ๋ฐ์ค API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ํจ์ | |
def generate_image(prompt, negative_prompt): | |
headers = { | |
"Authorization": f"Bearer {os.getenv('HF_TOKEN')}" | |
} | |
data = { | |
"inputs": prompt + " " + negative_prompt # ํ๋กฌํํธ์ ๋ค๊ฑฐํฐ๋ธ ํ๋กฌํํธ๋ฅผ ํ๋์ ๋ฌธ์์ด๋ก ๊ฒฐํฉ | |
} | |
api_url = "https://api-inference.huggingface.co/models/fluently/Fluently-XL-Final" | |
response = requests.post(api_url, headers=headers, json=data) | |
if response.status_code == 200: | |
image_url = response.json()[0]['url'] # ์๋ต์์ ์ด๋ฏธ์ง URL ์ถ์ถ | |
return image_url | |
else: | |
logging.error(f"API ์์ฒญ์ ์คํจํ์ต๋๋ค: {response.text}") | |
return None | |
# ํ๋กฌํํธ ๋ฒ์ญ ํจ์ | |
def translate_prompt(prompt): | |
logging.debug(f'ํ๋กฌํํธ ๋ฒ์ญ ์ค: {prompt}') | |
translation = translator(prompt, max_length=512) | |
translated_text = translation[0]['translation_text'] | |
logging.debug(f'๋ฒ์ญ๋ ํ ์คํธ: {translated_text}') | |
return translated_text | |
# ๋์ค์ฝ๋ ๋ด ํด๋์ค | |
class MyClient(discord.Client): | |
async def on_ready(self): | |
logging.info(f'{self.user}๋ก ๋ก๊ทธ์ธ๋์์ต๋๋ค!') | |
async def on_message(self, message): | |
if message.author == self.user: | |
return | |
if message.content.startswith('!image '): | |
self.is_processing = True | |
try: | |
prompt = message.content[len('!image '):] | |
prompt_en = translate_prompt(prompt) | |
logging.debug(f'๋ฒ์ญ๋ ํ๋กฌํํธ: {prompt_en}') | |
logging.debug(f'๊ณ ์ ๋ ๋ค๊ฑฐํฐ๋ธ ํ๋กฌํํธ: {negative_prompt}') | |
image_url = generate_image(prompt_en, negative_prompt) | |
user_id = message.author.id | |
if image_url: | |
await message.channel.send( | |
f"<@{user_id}> ๋์ด ์์ฒญํ์ ์ด๋ฏธ์ง์ ๋๋ค: {image_url}" | |
) | |
else: | |
await message.channel.send(f"<@{user_id}> ์ด๋ฏธ์ง ์์ฑ์ ์คํจํ์์ต๋๋ค.") | |
finally: | |
self.is_processing = False | |
else: | |
# "!image" ๋ช ๋ น์ด๊ฐ ์๋ ๊ฒฝ์ฐ ์๋ด ๋ฉ์์ง ์ ์ก | |
await message.channel.send('์ฌ๋ฐ๋ฅธ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด ์ฃผ์ธ์. ์) "!image ๊ท์ฌ์ด ๊ณ ์์ด๊ฐ ์ ์ ์๊ณ ์๋ค." ๋ฑ์ผ๋ก ์ ๋ ฅํ์๋ฉด ์ด๋ฏธ์ง๊ฐ ์์ฑ๋ฉ๋๋ค.') | |
# ๋์ค์ฝ๋ ํ ํฐ ๋ฐ ๋ด ์คํ | |
if __name__ == "__main__": | |
discord_token = os.getenv('DISCORD_TOKEN') | |
discord_client = MyClient(intents=intents) | |
discord_client.run(discord_token) | |