gunyu1019/PUBG-BOT

[TODO] Reduce processing of Discord Bot.

Closed this issue · 3 comments

Content

커스텀 접두어 기능이 사용자의 모든 메시지를 전부 분석하는 과정에서 SQL <-> 클라이언트간 무리를 줄 수 있을 것으로 보임.

        prefix = ret = self.bot.command_prefix
        if callable(prefix):
            ret = await discord.utils.maybe_coroutine(prefix, self, ctx)

https://github.com/gunyu1019/PUBG-BOT/blob/master/cogs/socket.py
해당 소스코드를 분석해보면 메시지가 하나 들어올때 마다 SQL 데이터 쿼리를 요청함.

Solution

  • 서버별 접두어를 dict 형태의 데이터로 캐싱해두어야 함.
    • on_ready 이벤트가 들어 올때, 일괄적으로 데이터를 모든 서버의 접두어를 불러와서 dict 형태의 데이터로 넣어줌.
    • on_interaction_command 이벤트가 작동할 때, 캐싱된 데이터를 기반으로 서버 데이터를 불러옴.
    • 사용자가 접두어를 설정할 때와 접두어 정보가 캐싱된 데이터 내에 없을 경우에만 데이터베이스에서 불러옴.

image
현재 메시지를 처리하는데 심각하게 느리다는 점을 고려할 때, 빠른 대응이 필요함.

그냥 레디스하셈 ㅋㅋ