Skip to content

DM을 통해 사용하는 디스코드 랜덤채팅 봇

License

Notifications You must be signed in to change notification settings

ArpaAP/iNdirect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iNdirect

iNdirect는 DM을 통해 사용하는 랜덤채팅 봇입니다.

2021.01.26 - 디스코드 봇 '전적이' 에 탑재되었습니다!
2021.02.08 - 디스코드 봇 'PH봇' 에 탑재되었습니다!
많은 이용 부탁드립니다!

명령어

;도움 을 입력해 전체 명령어를 확인할 수 있습니다.

작동 원리

1. 셋업

먼저, 봇이 켜지면 각종 데이터와 설정을 불러온 후 utils/rchatmgr.pyRandchatMgr (랜덤채팅 매니저) 인스턴스를 만듦과 동시에 매칭 작업이 이루어지는 백그라운트 태스크를 시작합니다. 그런 다음 명령어 모듈을 불러온 후 봇이 시작됩니다.

백그라운드 태스크에서는 매칭을 시작했을 때 등록되는 큐(Queue) 에서 랜덤으로 뽑아 매치(Matches)에 옮깁니다. 이를 반복합니다. 자세한 내용은 3. 매칭 중을 참조하세요.

2. 매칭 시작

DM 을 통해 유저가 명령어를 통해 매칭을 시작하면, 내부에서 RandchatMgr.start_match 메서드를 통해서, 유저 아이디와 인원수, 취소여부, 랜덤별명 사용여부 등을 QueueItem 클래스에 담아 큐(RandchatMgr.__queue) 에 등록합니다.

3. 매칭 중

매칭 작업은 봇이 켜져있는 동안 항상 반복 실행됩니다. RandchatMgr.match 메서드에서 이루어집니다. 여기에서 RandchatMgr.__queue 에 대기하고 있는 사용자가 있는지 확인하고, 조건이 충족되어(인원 수 등) 매칭할 수 있는 사용자만 필터링합니다. 그 결과에서 랜덤으로 뽑아 MatchItem 클래스로 데이터를 변환해 RandchatMgr.__matches 에 추가합니다. RandchatMgr.__matches 에 추가된 순간, 매칭이 완료됩니다. 만약 중간에 매칭을 취소한 경우 QueueItemcancel 속성이 True 로 설정되어, 매칭 태스크에서 이것을 확인하면 큐에서 제거합니다.

4. 매칭 완료

매칭이 완료되면 이제 일부 명령을 제외한 모든 채팅은 매치된 사람들에게 전송되게 됩니다. 이 코드는 exts/events.pyEvents.on_message 메서드에 있습니다.

5. 매칭 종료

랜덤채팅을 명령어를 통해 종료하게 되면 내부에서 RandchatMgr.exit_match 메서드에 의해 RandchatMgr.__matches 에서 해당 유저가 제거됩니다. 그러면 랜덤채팅이 종료됩니다.

About

DM을 통해 사용하는 디스코드 랜덤채팅 봇

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages