File size: 2,194 Bytes
78efe79
440418c
f3985af
40d0e92
407a575
32c38ef
f3985af
440418c
1831164
440418c
40d0e92
440418c
98c1b1b
 
08baccf
40d0e92
 
74ccf1c
78efe79
08baccf
 
 
78efe79
40d0e92
78efe79
 
40d0e92
78efe79
40d0e92
 
 
fc74fc1
40d0e92
fc74fc1
40d0e92
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0926d14
34428f1
40d0e92
 
 
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
import discord
import logging
import os
from gradio_client import Client

# 로깅 설정
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  # 메시지 내용 수신 인텐트 활성화
intents.messages = True
intents.guilds = True
intents.guild_messages = True

# 특정 채널 ID 설정
SPECIFIC_CHANNEL_ID = int(os.getenv("DISCORD_CHANNEL_ID"))

class MyClient(discord.Client):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    async def on_ready(self):
        logging.info(f'{self.user}로 로그인되었습니다!')

    async def on_message(self, message):
        if message.author == self.user or message.channel.id != SPECIFIC_CHANNEL_ID:
            return
        if message.content.startswith("!generate"):  # 프롬프트 시작 명령어
            prompt = message.content[len("!generate "):]  # 명령어 제거 후 프롬프트 추출
            image_path = await self.generate_image(prompt)
            if image_path:
                await message.channel.send(file=discord.File(image_path))
            else:
                await message.channel.send("이미지를 생성하지 못했습니다.")

    async def generate_image(self, prompt):
        client = Client("ginipick/komodel")
        result = client.predict(
            prompt=prompt,
            negative="low quality, low quality, (deformed, distorted, disfigured:1.3), poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, (mutated hands and fingers:1.4), disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation, (NSFW:1.25)",
            width=1024,
            height=1024,
            scale=7,
            steps=50,
            api_name="/generate_image"
        )
        if 'image_path' in result:
            return result['image_path']  # API가 반환한 이미지 경로
        return None

if __name__ == "__main__":
    discord_token = os.getenv('DISCORD_TOKEN')
    client = MyClient(intents=intents)
    client.run(discord_token)