디스코드 봇 일정한 시간마다 메시지 보내기

728x90

디스코드 봇으로 일정한 시간마다, 간격마다 메시지를 보내도록 하고 싶을 때가 있다.

매일 아침 9시, 1초마다, 등등 여러 시간대로 설정할 수 있다.

discord.ext의 task를 사용한다.
그리고 시간을 알기위해 datetime을 사용한다.

먼저 datetime으로 현재 날짜와 시간을 가지고 오고 거기서 원하는 년도와 월 또는 일, 시간대를 뽑고 그 시간대와 내가 원하는 시간이 맞는지 확인하면 된다.

# 현재 시간
dt = datetime.datetime.now()
year = dt.

```python
# 1초마다 루프문을 실행
@tasks.loop(seconds=1)
async def every_write_forum():
    channel_name = discord.utils.get(bot.guilds[0].forums, name = '1234')
    dt = datetime.datetime.now()
    
    # 아침 9시 5분이면 실행
    if (dt.hour == 9) and (dt.minute == 5) and ((dt.second > 0) or (dt.second < 60)):
        await channel_name.create_thread(
            # 제목 (0000-00-00(요일))
            name=f'{dt.year}-{dt.month}-{dt.day}({weekend[dt.today().weekday()]})', 
            # 내용
            content='123123123')
        # 한 번실행하면 1시간 59분 쉼
        await asyncio.sleep(3540)
    # 1초 쉼
    await asyncio.sleep(1)
728x90