team-play-together / together-bot

5 stars 4 forks source link

Discord.py 지원 종료에 대한 대안 #81

Open WraithKim opened 3 years ago

WraithKim commented 3 years ago

https://gist.github.com/Rapptz/4a2f62751b9600a31a0d3c78100287f1 Discord.py가 read-only 로 아카이브 되었습니다. 더이상의 유지보수가 없어요.

그래서 만약 Discord API가 업데이트 되어서 현재 봇을 쓸 수 없다면...

  1. 다른 언어로 바꿔서라도 라이브러리를 찾는다
  2. 그냥 우리가 바닥부터 짠다.
  3. 이 봇은 개발 중지한다.

등등의 대안이 있을 거 같아요. 추가 대안이 있으면 이 이슈에 남기는 걸로 해요.

lyuha commented 3 years ago

Discord.py 지원 종료로 영향을 받는 이슈

lyuha commented 3 years ago

Discord Libraries & Language

Library Language
DiscordGo Go
DisGord Go
Discord.js Javascript
hikari Python
Serenity Rust
Twilight Rust
Detritus Typescript
Discordeno Typescript
droff Typescript
Harmony Typescript

정리 기준

community-resources#libraries-discord-libraries 중에서 아래 기준으로 정리

  1. 개발이 진행되고 있을 것
  2. Interaction 지원
  3. MessageComponets 지원

2021-10-28 기준 확인한 언어: Go, JS, Python, Rust, TS 확인하지 않은 언어: C, C#, C++, Clojure, Crystal, Dart, Elixir, Java, Julia, Lua, Nim, PHP, Ruby, Scala

outgoing webhook을 이용한 interaction 지원도 있으나, 현재는 고려하지 않았어요. Interactions 섹션 참고

WraithKim commented 3 years ago

헷갈려서 그런데 Interaction이 지원되면 MessageComponents를 지원한다고 봐도 됨?

Interaction ┬ Slash Command
            ├ User/Message Command: 우클릭 메뉴로 나오는 거
            └  Message Components: 메세지 안에 포함된 버튼,드롭다운메뉴 같은거

Java쪽 전부 1,2,3 만족한다고 봄. 어차피 다시 확인해 볼거지? 확인해 볼거라 생각함.

Library Language 비고
Discord4J Java 버전 지원
JDA Java wiki
Javacord Java docs
[catnip]() Java API docs
lyuha commented 3 years ago

반대로 messagecomponent를 지원하면 interaction을 지원한다고 판단하고, messagecomponent를 지원하는지 확인해보았음.

WraithKim commented 3 years ago

그리고 마이너한 언어는 interaction 지원이 문제가 아니고 질문할 곳이 적어서 안 쓸 거 같아요. 그래서 난 여기까지만 조사할래.

C#은 Java에 비해 확실히 규모가 작다. Library Language 비고
DSharpPlus C# guide에서 확인
Remora.Discord C# API docs에서 MessageComponent나 Interaction관련 클래스가 검색되긴 함.
lyuha commented 3 years ago

Discord.js가 가장 큰 커뮤니티를 가지고 있어서 고려해보자는 의견이 있었는데, JS 관련 라이브러리 생테계 조사가 필요하다.

  1. discord.js
  2. 테스트 관련 라이브러리
  3. code formatting, lint 관련 도구들
  4. DB 관련 라이브러리
  5. 배포(heroku) 관련된 이슈들
  6. logging 관련 라이브러리 생태계
  7. 현재 pre-commit이 추가되어 있는데, 이를 어떻게 js 프로젝트에서 사용할 것인가?
    • pre-commit에서 js를 지원하는 지, 만약 지원한다면 어떻게 설정해야 하는지
    • 또는 js(npm)에 비슷한 도구가 있는지
lyuha commented 2 years ago

Library

Linter

formatter

Test

DB Library

Logging

heroku

현재 사용하고 있는 Container 배포로 똑같이 가능해보인다.

lyuha commented 2 years ago

wiki가 있는 게 생각나서 여기 작성 시작 https://github.com/team-play-together/together-bot/wiki/Discord.js-%EA%B4%80%EB%A0%A8-Library

lyuha commented 2 years ago

현재 경고하고 있는 취약점 aiohttp는 discord.py가 문제.

lyuha commented 2 years ago

이전 작업에 따라서 node.js 로 작성된 프로젝트 구성은 완료하였으나, 현재 배포환경을 준비하지 않은 상태. https://github.com/team-play-together/discord-bot

추가비용이 발생하지 않는 선에서 가능한 방법은