Profile picture

[Python] 디스코드 웹훅(webhook)으로 간단한 메시지 보내보기

JaehyoJJAng2024년 09월 16일

▶︎ 사전 준비

image


▶︎ Webhook 생성

1. 웹 훅을 활성화 할 채널의 설정을 들어가보자.
image


2. 연동 탭 - 웹 후크 만들기 클릭
image


3. 설정할 Bot 이름 및 활성화할 채널을 지정해주고 웹 후크 URL을 복사
image
💥 복사한 웹 훅 URL을 어딘가에 저장해놓도록 하자.


▶︎ 간단한 메시지 보내기

이제 모든 준비가 끝났으니 파이썬을 활용하여 간단한 메시지를 보내보도록 하자.


우선 datetime과 requests를 import 하여 가져오도록 하자.

import datetime
import requests

""" 디스코드 채널로 메세지를 보내는 함수 """
def send_message(discord_url: str, text: str) -> None:
    now : str = datetime.datetime.now()
    message : dict[str,str] = {
        'content': f"[{now.strftime('%Y-%m-%d %H:%M')}] {text}"
    }
    requests.post(discord_url,data=message)
    print(message)

discord_webhook_uri: str = '위에서 복사한 웹 훅 URL을 여기에 기입'
text: str = '반갑습니다!'
send_message(discord_url=discord_url,text=text)

discord_url 변수에 위에서 복사한 디스코드 웹 후크 주소를 붙여넣기 하면 된다.

send_message() 함수를 실행하면 현재 시간을 나타내는 datetime.datetime.now() 함수가 실행되고
message = 현재시간 + 입력 메시지가 디스코드로 전송된다.


이제 위 파이썬 스크립트를 실행 시키면 터미널에는 아래와 같이 출력될 것이고
image


디스코드에는 아래와 같이 메시지가 전송된 것을 볼 수 있을 것이다.
image


‣ 메시지 꾸미기

보내는 메시지의 상태가 조금 밋밋하다면

embed를 사용하여 조금 더 가독성이 좋게 메시지에 색상을 추가할 수 있다.
{% include codeHeader.html name="embed.py" %}

import requests
import datetime

def send_message(discord_url: str, text: str) -> None:
    now = datetime.datetime.now()
    message = {
        "embeds": [{
            "title": "인삿말",
            "description": f"[{now.strftime('%Y-%m-%d %H:%M')}] {text}",
            "color": 16711680  # Embed의 색상 설정 (여기서는 빨간색)
        }]
    }
    requests.post(discord_url, json=message)
    print(message)

discord_url = '위에서 복사한 웹 훅 URL을 여기에 기입'
text = '반갑습니다!'
send_message(discord_url=discord_url, text=text)

아래와 같이 메시지가 전송된 것을 볼 수 있다.
image


Loading script...