[Python] 로그 기록용 디스코드 봇 제작
2학년 1학기에 배운 과목 중 자유 조별 프로젝트 과목이 있어 우리 조는 학교 내에서
학우들 간 소통과 공유가 가능한 독자적인 디스코드 채널을 만들고자 했다.
서버를 운영하는데 필요한 인증 기능, 채팅 보조 기능, 서버 로그 기록 기능 등이 필요했고
나는 그 중 디스코드 서버에 출입하는 사람들의 인증 정보를 포함한 사용자 정보와
시간대별 채팅 등을 수집할 수 있도록 기록 봇을 제작했다.
핵심 함수 몇 가지를 보면 다음과 같다.
1. 서버 입장 및 퇴장 로그 기록
#---------------------------Save User Info Log------------------------------------ @client.event # 서버 신규 접속 async def on_member_join(member): user_log = open('userLog.txt', 'a') user_log.write("\n") user_log.write(dateTime) user_log.write(" ") user_log.write(member.name) user_log.write(" ") user_log.write("%d"%member.id) user_log.write(" ") user_log.write("JOIN_IN") user_log.close() @client.event # 서버 퇴장 async def on_member_remove(member): user_log = open('userLog.txt', 'a') user_log.write("\n") user_log.write(dateTime) user_log.write(" ") user_log.write(member.name) user_log.write(" ") user_log.write("%d"%member.id) user_log.write(" ") user_log.write("LEFT_OUT") user_log.close()
어쩌면 당연한 사실일지 모르지만, 유저가 동시에 접속할 수도 있고 메시지를 처리하면서
입장과 퇴장도 동시에 처리해야하기 때문에 async
키워드를 이용해 비동기식으로
이벤트를 처리할 수 있도록 작성했다.
그 외에는 단순하게 파일 입출력 함수를 통해 시간, 이름, 아이디, 상태를 기록하도록 했다.
2. 채팅 및 인증 정보 기록
# 인증 메일 기록 if message.content.endswith("kumoh.ac.kr"): user_log = open('userLog.txt', 'a') user_log.write("\n") user_log.write(dateTime) user_log.write(" ") user_log.write("{0.author}".format(message)) user_log.write(" ") user_log.write("%d"%message.author.id) user_log.write(" ") user_log.write("Verification") user_log.write(" ") split_email = message.content split_email_List = split_email.split(" ") user_log.write(split_email_List[1]) user_log.close() # 채팅 기록 channel = message.channel chat_log = open('chatLog.txt', 'a') chat_log.write("\n") chat_log.write(dateTime) chat_log.write(" (") chat_log.write(channel.name) chat_log.write(") ") chat_log.write("{0.author}".format(message)) chat_log.write(" : ") chat_log.write(message.content) chat_log.close()
사용자가 인증을 하려면 인증 채널에서 교내 웹메일을 통해 인증 번호를 받도록 서버를 구현해서,
만약 메시지 이벤트 문자열의 끝이 교내 웹메일 주소로 끝난다면 로그에 기록할 수 있도록 했다.
후에 각자 만든 봇을 Replit과 UptimeRobot을 이용해 우리가 컴퓨터를 끄더라도
24시간 스스로 구동되도록 제작했다.
-
사용자 정보 기록
-
채팅 기록
Author And Source
이 문제에 관하여([Python] 로그 기록용 디스코드 봇 제작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ssam2s/Python-로그-기록용-디스코드-봇-제작저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)