dm_nteractive.py•2.79 kB
#!/usr/bin/env python3
"""
대화형 DM 테스트
"""
from slack_api import SlackClient
from dotenv import load_dotenv
load_dotenv()
def interactive_dm_test():
"""대화형 DM 테스트"""
print("=== DM 보내기 테스트 ===\n")
client = SlackClient()
# 사용자 목록 조회
print(" 사용자 목록 조회 중...")
users_result = client.get_users()
if not users_result["success"]:
print(f" 사용자 조회 실패: {users_result['error']}")
return
print(f" 총 {users_result['total_count']}명 조회 성공!\n")
# 처음 10명 사용자 목록 출력
print(" 사용자 목록 (처음 10명):")
for i, user in enumerate(users_result["users"][:10], 1):
name = user["real_name"] or user["display_name"] or user["name"]
print(f" {i:2d}. {name} (ID: {user['id']})")
print("\n선택 옵션:")
print("1. 위 목록에서 번호로 선택")
print("2. 직접 사용자 ID 입력")
print("3. Slackbot에게 보내기 (빠른 테스트)")
choice = input("\n선택 (1-3): ").strip()
target_user_id = None
target_name = None
if choice == "1":
try:
num = int(input("번호 선택 (1-10): ").strip())
if 1 <= num <= min(10, len(users_result["users"])):
target_user = users_result["users"][num-1]
target_user_id = target_user["id"]
target_name = target_user["real_name"] or target_user["name"]
else:
print(" 잘못된 번호입니다.")
return
except ValueError:
print(" 숫자를 입력해주세요.")
return
elif choice == "2":
target_user_id = input("사용자 ID 입력: ").strip()
target_name = target_user_id
elif choice == "3":
target_user_id = "USLACKBOT"
target_name = "Slackbot"
else:
print(" 잘못된 선택입니다.")
return
if not target_user_id:
print(" 사용자 ID가 설정되지 않았습니다.")
return
# 메시지 입력
message = input(f"\n {target_name}에게 보낼 메시지: ").strip()
if not message:
message = "안녕하세요! DM 테스트입니다."
# DM 전송
print(f"\n {target_name}에게 메시지 전송 중...")
result = client.send_direct_message(target_user_id, message)
if result["success"]:
print(" DM 전송 성공!")
print(f" 수신자: {target_name}")
print(f" 메시지: {message}")
print(f" DM 채널: {result['channel']}")
else:
print(f" DM 전송 실패: {result['error']}")
if __name__ == "__main__":
interactive_dm_test()