Spaces:
Runtime error
Runtime error
File size: 2,569 Bytes
dedc913 407a575 dedc913 440418c 22dee1c 08baccf dedc913 74ccf1c dedc913 12bb502 dedc913 e882cc6 dedc913 e882cc6 dedc913 4261e38 dc80b35 dedc913 4261e38 dedc913 4261e38 dedc913 4261e38 dedc913 0926d14 34428f1 dedc913 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# img_bot.py
import discord, os, io, asyncio, logging, requests, replicate
# ββ νμ νκ²½ λ³μ ββββββββββββββββββββββββββββββββββββββββ
TOKEN = os.getenv("DISCORD_TOKEN") # λμ€μ½λ λ΄ ν ν°
CHANNEL_ID = int(os.getenv("DISCORD_CHANNEL_ID")) # λ£κ³ μλ΅ν μ±λ
REPL_TOKEN = (os.getenv("OPENAI_API_KEY") or "").strip()# Replicate ν ν° (κ°μ λ³μ μ¬μ©)
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
MODEL = (
"bytedance/sdxl-lightning-4step:"
"6f7a773af6fc3e8de9d5a3c00be77c17308914bf67772726aff83496ba1e3bbe"
)
logging.basicConfig(level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(message)s")
intents = discord.Intents.default()
intents.message_content = True
class ImageBot(discord.Client):
async def on_ready(self):
logging.info(f"Logged in as {self.user} (id={self.user.id})")
async def on_message(self, message: discord.Message):
# λ΄ μμ Β·λ€λ₯Έ μ±λ λ©μμ§ λ¬΄μ
if message.author.id == self.user.id or message.channel.id != CHANNEL_ID:
return
prompt = message.content.strip()
if not prompt:
return
await message.channel.typing()
# Replicate νΈμΆ(κΈ°λ³Έκ°: promptλ§ μ λ¬)
def run_replicate():
return list(replicate.run(MODEL, input={"prompt": prompt}))
try:
loop = asyncio.get_running_loop()
images = await loop.run_in_executor(None, run_replicate)
except Exception as e:
logging.error(f"Replicate error: {e}")
await message.reply("β οΈ μ΄λ―Έμ§ μμ± μ€ν¨!")
return
files = []
for idx, item in enumerate(images):
try:
data = item.read() if hasattr(item, "read") else requests.get(item).content
files.append(discord.File(io.BytesIO(data), filename=f"img_{idx}.png"))
except Exception as e:
logging.warning(f"IMG {idx} μ²λ¦¬ μ€ν¨: {e}")
await message.reply(files=files if files else None,
content=None if files else "β οΈ μ΄λ―Έμ§λ₯Ό μ μ‘ν μ μμ΅λλ€.")
if __name__ == "__main__":
replicate.Client(api_token=REPL_TOKEN) # OPENAI_API_KEY κ·Έλλ‘ μ¬μ©
ImageBot(intents=intents).run(TOKEN)
|