- 상황 : git push origin master 명령어 실행 후 main에 Merge가 이루어지지 않음
- 발생 이유 : master에 push를 하여 main 브랜치에 미반영됨
- 해결 방법 : matser branch의 기록을 main branch에 붙여넣기
git checkout master git branch main master -f git checkout main git push origin main -f
<aside> 💡 단, -f 인자는 강제로 덮어 씌우므로 기존 커밋 기록이 날아갈 수 있음 프로젝트의 시작 단계이므로 적용하였지만, 기록이 쌓인다면 함부로 적용하지 말 것
</aside>
상황 : 서버에서 디스코드 봇이 명령어에 반응을 하지 않는 상황
- DM으로는 명령어에 반응
- 서버 초대 시 메시지 수.발신 권한 설정을 해도 반응 X
발생 이유 : 디스코드 개발자 포털에서 MESSAGE CONTENT INTENT 미설정
해결 방법 : MESSAGE CONTENT INTENT 설정
Commands don't run in discord.py 2.0 - no errors, but run in discord.py 1.7.3
[... { "ServerName": "아만", "CharacterName": "이문동개발자", "CharacterLevel": 60, "CharacterClassName": "인파이터", "ItemAvgLevel": "1,465.00", "ItemMaxLevel": "1,465.00" }, { "ServerName": "아만", "CharacterName": "문학학사공학석사", "CharacterLevel": 60, "CharacterClassName": "워로드", "ItemAvgLevel": "1,585.83", "ItemMaxLevel": "1,585.83" } ]
- 로스트아크 공식 API에서 받아온 계정 내 캐릭터 목록
- 목적 : 레벨(ItemMaxLevel) 내림차순으로 캐릭터 목록을 디스코드 메시지로 출력
- json이 저장된 리스트 정렬 필요
- 해결 방법 : sort 메소드에 key를 지정하여 해결함
# json_res : api 응답 결과 json_res.sort(key=lambda x: float(x['ItemMaxLevel'].replace(',', '')), reverse=True)
- 'ItemMaxLevel' key에는 전투 레벨이 str로 저장되어 float 형으로 변환을 위해 전처리 수행
- 결과 : 아이템 레벨 기준 내림차순으로 6개 출력
상황 : 테스트 결과 이상이 없어 dev 브랜치를 main 브랜치에 병합하기 위해 checkout 중 오류 발생
발생 원인 : 해당 브랜치에서 발생한 변경사항을 저장하지 않아 생기는 문제
- 커밋을 새로 올려서 해결할 수 있지만 작업이 미완료된 상태에서 무의미한 커밋을 생산하고 싶지 않음
해결 방법 : git stash로 코드 수정 사항을 임시 저장
- 상황 : 후방탐색을 통해 문자열 추출 시도
- 발생 원인 : 후방탐색 대상이 고정된 길이를 가지도록 정규식을 사용해야 함
- 해결 방법 : 고정된 길이의 문자열 안에서 검색하도록 정규식 수정
사용한 정규식
- 아래 식은 .+로 인해 후방탐색 대상의 길이가 가변적
(?<=<FONT COLOR=\\'.+\\'>).+(?=<\\/FONT>)
수정한 정규식
- FONT COLOR는 7자의 hex code 이므로 고정된 길이의 문자열을 후방탐색하도록 수정
(?<=<FONT COLOR=\\'.{7}\\'>).+(?=<\\/FONT>)
- 상황 : json 데이터에서 아이템 이름, 아이템 등급 색, 아이템 정보 텍스트를 추출해야 함
- 데이터 형식
// 단일 아이템 정보를 저장하는 json { "Slot": 0, "Name": "<P ALIGN='CENTER'><FONT COLOR='#F99200'>7레벨 홍염의 보석</FONT></P>", "Icon": "<https://cdn-lostark.game.onstove.com/EFUI_IconAtlas/Use/Use_9_62.png>", "Level": 7, "Grade": "전설", "Tooltip": "...\\",\\r\\n\\"Element_001\\": \\"[워로드] <FONT COLOR='#FFD200'>차지 스팅거</FONT> 재사용 대기시간 14.00% 감소\\"\\r\\n }\\r\\n ..." }
- 해결 방법 : 정규표현식을 이용하여 데이터 추출
<aside> 💡 사용 정규표현식
- 보석 이름 : (?<=<FONT COLOR=\'.{7}\'>).+(?=<\/FONT>)
- 직업 이름 : \[.+\] (?=<FONT COLOR=\'#FFD200\'>)
- 스킬 이름 : (?<=<FONT COLOR=\'#FFD200\'>).+(?=<\/FONT>)
</aside>