8000 Design for version 2.0. · Issue #44 · thananon/twitch_tools · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Design for version 2.0. #44
Open
Open
@thananon

Description

@thananon

โปรเจ็คโตแบบออร์แกนิคเกินไปทำให้โค้ดตอนนี้มั่วมาก ตอนนี้หงุดหงิดกับการแก้โค้ดมากๆ มันเริ่มใหญ่และพันกันยุ่งเหยิงไปหมด ต้องตัดไฟแต่ต้นลม ขอแนะนำ twitch tool 2.0 ที่ไม่มี feature เพิ่ม แต่ refactor เพื่อสุขภาพจิต

Design

แยกเป็น module ชัดเจน

  1. twitch_front -> twitch event handler (จัดการทั่วไป เช่นการ timeout/ตอบคำถาม)
  2. discord_front -> discord event handler (จัดการทั่วไป)
  3. db_service -> คุมการอ่าน/เขียน db
  4. bot_service -> บริการต่างๆของ bot ที่ต้องติดต่อกับ player_db เช่น gacha/auction
  5. webapp -> เราไม่แตะต้องเพราะมันดีอยู่แล้ว
                      webapp
                    /
twitch -> twitch_front ---------------------
                  |          \              \
                  |           bot_service - > db_service
                  |          /
discord -> discord_front ->
  • twitch_front มีความจำเป็นต้องติดต่อกับ db เพราะเราเก็บ twitch user เป็นหลัก (update userlist/ดึง list online users)
  • twitch_front ต้องส่ง message เข้า discord channel เราได้ด้วย (แสดงผลผู้ชนะกาชา/ประมูล)
  • discord_front ตอนนี้ยังไม่มีความจำเป็นต้องติดต่อกับ db เพราะเรายังใช้ twitch username เป็นหลัก และยังไม่มีวิธีดีๆที่จะ link discord username->twitch username เลยออกแบบให้เป็น read-only แต่ใจจริงๆอยากให้มา gacha กันใน discord ได้ด้วย แค่ยังคิดไม่ออกจะทำไงดี (แยก user/wallet ไปเลยมั้ย)
  • bot_service และ db_service ควรเป็น daemon ที่ตัว front ต้องมา connect ก่อน ถ้าสองตัวนี้ไม่อยู่ก็ให้ front ตายไปเลย
  • db_service เราจะใช้ db จริงๆหรือ JSON ยังไหวอยู่?
  • Priority คือ bot/db service เราทำให้เสร็จก่อนแล้วค่อยทำ front ทีหลัง
  • typescript?

bot_service methods

ดีไซน์คร่าวๆ สิ่งที่อยากให้มี จะมา edit เพิ่มเรื่อยๆ

## High level events
- gacha
- auction
  - auction start/end
  - bid (username, amount)
- raffles
  - raffle start/end
  - raffle_join(username, total)

## bot character parameters
- atk_power
- level
- critrate
- etc

db_service methods

- getPlayerbyUsername
- createPlayer
- removePlayer
- sync/save/load

## coin manipulations
- deduct_coin (username, amount)
- give_coin (username, amount)
- give_coin_to_all_online(amount)
- get_total_coin (username)
- get_top_coin(total)

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0