200428 아이유 봇 제작일지
개발 •
오랜만에 4박 5일로 서울에 다녀왔는데, 짬날 때마다 업데이트했습니다.
KTX 안에서 특히 시간이 많이 나더라고요.
타이머
타이머 기능을 추가했습니다.
봇 업데이트를 위해 가동을 멈췄다 다시 시작할 때가 많아, 3시간 이상은 설정하지 못하게 해뒀습니다.
시간, 분, 초 단위를 사용할 수 있습니다.
물론 "1시간 1분" 처럼 조합해 사용할 수도 있습니다.
제비뽑기
있으면 재밌겠다 싶어 만든 제비뽑기입니다.
사람 여럿 언급하면 그 중 하나 추첨해주는 단순한 기능입니다.
계산, 단위 변환
굳이 디스코드 켜서 타이핑 할 시간에 계산기 돌리는 게 빠르긴 하지만, 계산 기능과 단위 변환 기능도 추가했습니다.
처음 추가할 땐 수식인지 검사하고 eval()로 계산했는데, 수식이 복잡해지면 복잡해질수록 여간 까다로운 것도 아니고, eval()을 사용하는 건 아무래도 보안상 문제가 많을 것 같아 Math.js를 사용했습니다.
랜덤
동전 던지기나 주사위로 감당할 수 없는 랜덤이 필요할 때 쓰려고 만든 랜덤 기능입니다.
최솟값과 최댓값을 받아 그 사이의 수를 무작위로 반환합니다.
소수
n번째 소수를 반환해주는 기능입니다.
연산 자원을 아끼기 위해 2부터 399989까지의 소수 목록을 파일로 집어넣어 뒀습니다.
뭐 이렇게 해도 파일이 250kb도 안 넘더라고요.
1000000까진 넣을까 싶습니다만, 399989까지도 필요할지 의문이네요.
암호화 방식 업데이트
createCipher에서 createCipheriv로 암호화 방식을 업데이트했습니다.
물론 이렇게 보안 방식을 강화해도, 깃헙에 대칭키도 공개돼있고, 그런 거 필요도 없이 해독해달라면 해독도 해주니 큰 의미는 없습니다만, createCipher 쓰지 말라고 하도 알림을 줘서 싹 갈아엎었습니다.
Good Night
로그 확인해보니 종종 잘 자라고 하는 분이 있어 추가한 기능입니다.
"잘 자", "잘자" 둘 다 감지하게 해뒀습니다.
dlwlrma
"지금아"라고 명령어를 시작해도 반응하게 해뒀습니다.
비속어 차단
유저가 늘수록 비속어 사용자도 느는 건 어쩔 수 없나 봅니다.
확인할 때마다 블랙리스트에 추가하긴 합니다만, 근본적인 차단을 위해 명령어에 비속어가 들어가면 어떤 명령어를 입력했건 위 사진처럼 대답합니다.
이름
서버원 하나가 매번 이름을 시도하길래 추가한 기능입니다.
"길동아 네 이름이 뭐니?" 같은 황당한 명령어라, 굳이 구색이라도 갖추려고 한문 이름도 대답하도록 해뒀습니다.