/PansaDiscordBot_old

My first Discord Bot

Primary LanguagePython

PansaDiscordBot

디스코드 개인 봇 feat.동아리디코

동아리에서 자주 사용하는...아니 자주 사용할 거 같은 기능들을 디스코드를 통해 바로 활용할 수 있도록 여러가지 기능을 넣은 디스코드 개인 봇입니다.

1. fairyFunc.py

  • 봇이 작동할 때 사용하는 기능들이 구현된 함수들을 모아놓은 파일입니다.

함수 목록

  • 2.1 def makeConch()

    • 소라고둥의 답변 리스트를 만드는 함수입니다.
    • magicConch.txt 파일을 불러들여 소라고둥 답변 리스트를 저장합니다.
  • 2.2 def absurbDiary(inputInt)

    • 망언을 반환하는 함수입니다.
    • diary.json파일을 읽어들여 inputInt에 해당하는 JSON 형식의 데이터를 반환합니다.
    • inputInt가 0일 경우 랜덤한 데이터를 반환합니다.
  • def absurbFindName(name)

    • 망언집에서 해당하는 이름을 검색하는 함수입니다.
    • diary.json에서 name에 해당하는 값이 name인자를 포함할 경우 리스트에 number값을 추가하고, 탐색이 완료되면 리스트를 반환합니다.
  • def absurbFindAbsurb(search)

    • 망언집에서 해당하는 내용 또는 설명을 검색하는 함수입니다.
    • diary.json에서 absurb 또는 description에 해당하는 값이 search인자를 포함할 경우 리스트에 number값을 추가하고, 탐색이 완료되면 리스트를 반환합니다.
  • def addAbsurb(absurb, name, descript)

    • 망언을 추가하는 함수입니다.
    • absurb(망언), name(이름), descript(망언 설명) 인자를 받아와 diary.json에 추가한 후, 해당 망언을 반환합니다.
  • def changeAbsurb(absurb, name, descript, num)

    • 망언을 수정하는 함수입니다.
    • absurb(망언), name(이름), descript(망언 설명), num(수정하려는 망언의 번호) 인자를 받아와 diary.json에서 수정한 후, 해당 수정한 망언을 반환합니다.
  • def cypersRank(nickname)

    • 넥슨에서 서비스중인 게임 사이퍼즈의 전적을 확인해주는 함수입니다.
    • 닉네임명을 인자로 받아와서 검색한 다음 URL주소, 전적, 최근 경기 결과, 사용 캐릭터의 이미지 URL가 각각 저장되어있는 리스트를 반환합니다.
  • def getMillDate(name)

    • 전역일을 계산해주는 함수입니다.
    • 이름을 인자로 받아와서 militaryDate.txt를 탐색한 후 해당하는 전역일을 계산하여 문장으로 반환합니다.
    • 이름이 검색되지 않는 경우에도 지정된 문장을 반환합니다.
  • def todayWeather(search)

    • 네이버에서 오늘의 날씨를 검색해주는 함수입니다.
    • 네이버에서 날씨를 검색한 후 위치, 현재 온도, 날씨 상태, 최저최고기온, 체감온도, 미세먼지가 저장된 리스트를 반환합니다.
  • def tomorrowWeather(search)

    • 네이버에서 내일의 날씨를 검색해주는 함수입니다.
    • 내일 오전의 온도, 상태, 미세먼지, 내일 오후의 온도, 상태, 미세먼지가 저장된 리스트를 반환합니다.
  • def setXl()

    • 기억을 저장할 파일을 세팅하는 함수입니다.
  • def setMemory(inputData, outputData)

    • 기억을 memoryData.xlsx 파일에 저장하는 함수입니다.
    • inputData는 Key값으로 A행에, outputData는 value값으로 B행에 각각 저장됩니다
  • def deleteMemory(inputData)

    • 기억을 memoryData.xlsx 파일에서 삭제하는 함수입니다.
  • def setString(input)

    • AAA /BBB 형태의 문장을 ['AAA', 'BBB']형태의 리스트로 변환해주는 함수입니다.
  • def findMemory(inputData)

    • 기억을 불러오는 함수입니다.
    • inputData에 해당하는 값을 memoryData.xlsx 파일에서 찾아 반환합니다.
  • def printMemory()

    • 모든 기억을 출력하는 함수입니다.
  • def translate(source, target, text)

    • 네이버 파파고 번역기를 통해 문장을 번역합니다.
  • def makeTaki()

    • 오늘의 타키쿤!
    • takiTaki.xlsx 파일을 읽어들여 A행의 값 중 랜덤하게 한 문장을 출력합니다.
  • def makeChaerim()

    • 오늘의 채릠스!
    • charims.xlsx 파일을 읽어들여 A행의 값 중 랜덤하게 한 문장을 출력합니다.
  • def makeDietTable(dormitory, weekday)

    • 강원대학교 기숙사 식당들의 식단표를 검색해주는 함수입니다.
    • 기숙사 이름과 요일을 받아 해당하는 요일의 식단을 리스트 형태로 반환합니다.
  • def makeFortune(name)

    • 오늘의 운세를 만들어 주는 함수입니다.
    • 오늘의 운세 문장을 만든 후 반환합니다.
  • def dice(count, value)

    • 주사위를 굴려주는 함수입니다.
    • 최대값이 value인 주사위를 count 횟수만큼 굴려줍니다.

2. run.py

  • 메인 프로그램 파일입니다. Python을 이용해 실행하면 디스코드 봇이 동작하게 됩니다.

함수 목록

  • async def on_ready()

    • 메인 프로그램 실행 후 정상적으로 접속 시 값이 명령 프롬프트에 출력됩니다.
  • async def on_message(message)

    • 특정 명령어를 받게 되는 경우 어떤 작업을 할지 구현 되어있습니다.

    • !도움 커맨드 목록을 출력합니다. 커맨드 목록은 아래와 같습니다.

    • 일부 커맨드는 나타나지 않습니다.

      • !망언 {번호}, !diary {번호} 번호에 해당하는 망언을 출력합니다. 번호가 없을 경우 랜덤하게 출력합니다.

      • !망언검색 {이름 or 내용} {검색어} 망언을 검색합니다. 검색 완료시 해당하는 망언 번호를 출력합니다.

    • !선택 {리스트} 여러 항목을 읽어들인 후 랜덤하게 한 항목을 선택하여 출력합니다.

    • !타키, !taki 오늘의 타키군을 출력합니다.

    • !채림, !채릠, !chaerim 오늘의 채릠스를 출력합니다.

    • !소라고둥, 소라고둥님, 마법의소라고둥님, 마법의 소라고둥님 저장된 답변 중 하나를 랜덤하게 출력합니다.

    • !전역일 {이름} 입력받은 이름을 가진 사람의 전역까지 남은 날짜를 출력합니다.

    • !날씨, !오늘날씨 {지역} 네이버 오늘의 날씨 검색 결과를 읽어들인 후 출력합니다.

    • !내일날씨 {지역} 네이버 내일의 날씨 검색 결과를 읽어들인 후 출력합니다.

    • !사이퍼즈 {게임} {닉네임} 사이퍼즈 전적을 출력합니다. {게임}항목에는 공식/일반 둘 중 하나를 입력하여 가장 최근 경기를 출력할 수 있습니다. {게임}항목이 입력되지 않은 경우 전적만 출력합니다.

    • !기억 {문장1/문장2} 문장을 기억합니다.

    • !삭제 {문장1} 해당하는 문장을 삭제합니다.

    • !말해, 요정아 {문장1} 문장1을 입력시 기억한 문장2를 출력합니다.

    • !리스트 현재 저장된 기억들을 출력합니다.

    • !한영, !영한, !한일, !일한 네이버 파파고 번역기를 통해 문장을 번역합니다.

    • !재정, !이룸, !새롬 강원대학교 재정생활관, 이룸관, 새롬관의 오늘의 식단을 출력합니다.

    • !운세 오늘의 운세를 출력합니다.

    • !요정수치 랜덤한 요정 수치를 출력합니다.

    • !주사위, !dice, ㅈㅅㅇ {굴릴 횟수}D{최대값} + {...} 주사위를 굴려줍니다.

    • !모두모여 (문장) 채널 내의 모든 사람들을 호출합니다. 문장 입력 시 문장을 같이 출력합니다.

  • if message.content.startswith('...')

    • 해당 커맨드가 들어올 경우 어떤 동작을 하는 지 구현 된 부분입니다.

3. diary.json

  • 망언집 파일입니다. 실제 데이터는 많지만 테스트용임과 동시에 이름과 같은 개인정보를 포함하고 있는 경우도 있어 최소한의 데이터만 저장해 두었습니다.
{
  '번호':{
    'absurb': '망언 내용입니다',
    'name': '망언을 한 사람입니다',
    'description': '망언이 나온 상황 등 설명입니다',
    'number': '순번'
}

4. militaryDate2.txt

  • 이름과 전역일이 저장된 파일입니다.

5. magicConch.txt

  • !소라고둥 커맨드의 답변이 저장된 파일입니다. 띄어쓰기('\n')로 구분되어 있습니다.

6. memoryData.xlsx

  • 기억이 저장되어 있는 파일입니다. A행에는 key값, B행에는 value값이 저장되어 있습니다.

7. takiTaki.xlsx

  • 오늘의 타키쿤! 메세지가 저장된 파일입니다. 일부분만 저장되어 있습니다.

8. charims.xlsx

  • 오늘의 채림스! 메세지가 저장된 파일입니다. 일부분만 저장되어 있습니다.

수정 내역

  • 2019.07.30 최초 업로드
  • 2019.08.05 !사이퍼즈, !망언집 기능 추가 및 수정, !선택 커맨드 추가
  • 2019.08.06 !전역일 커맨드 추가
  • 2019.08.07 !사이퍼즈 커맨드 기능 세분화, !소라고둥, !도움 커맨드 추가
  • 2019.08.09 !날씨, !기억, !말해, !삭제, !모두모여 커맨드 추가, 코드 정리
  • 2019.08.12 번역 관련 커맨드 추가, !날씨 커맨드 !오늘날씨, !내일날씨로 세분화, 기타 버그 수정
  • 2019.08.19 망언집 파일 JSON으로 변경에 따른 !망언 커맨드 수정, !타키 커맨드 추가, !재정 !이룸 !새롬 커맨드 추가
  • 2019.08.21 !망언검색 커맨드 추가, !날씨 커맨드 추가
  • 2019.11.25 myBot.py 파일을 fairyFunc.py 와 run.py 로 분리
  • 2020.02.10 README.md 전체적인 수정, 각종 커맨드 추가, charims.xlsx 및 takiTaki.xlsx 파일 추가