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

Apic·2023년 1월 16일
0

디스코드

목록 보기
5/6

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

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

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

from discord.ext import task
import datetime

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

from datetime import datetime
# 현재 시간
dt = datetime.now()
# 결과
# 2023-01-18 10:50:39.569492 (datetime.datetime 타입)
코드내용결과
dt.yeardt의 년을 추출2023 (int)
dt.monthdt의 월을 추출1 (int)
dt.daydt의 일을 추출18 (int), 24시간제
dt.hourdt의 시간을 추출10 (int)
dt.minutedt의 분을 추출50 (int)
dt.seconddt의 초를 추출39 (int)
# 현재 시간
dt = datetime.datetime.now()
year = dt.year

```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):
        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)
profile
코딩 공부하는 사람

0개의 댓글