x4zx
@x4zx
python developer

Как правильно построить логику приложения?

хочу написать музыкального бота для Discord и вроде бы всё хорошо, но захотелось добавить пару своих функций к уже имеющимся в библиотеке wavelink. Я создал свой класс, который наследует всё из основного класса библиотеки wavelink -> Player. и вот тут собственно мой мозг закипел.
В моей голове была мысль, создавать объект для каждого сервера при запуске бота с полями queueloop (Зациклена ли очередь произведения, если False (по умолчанию) - нет, если True - да) и собственно сам список треков tracks. По итогу должна была получиться такая структура:
self.data = {
      'queueloop': False, 'tracks': []
}

И далее при каждом запросе трека, вносить в список tracks новый объект:
self.data['tracks'] += {
      'title': self.track.title,
      'url': self.track.uri,
      'author': self.track.author,
      'loop': False,
      'duration': self.track.duration,
      'requester': '',
      'thumbnail': self.track.thumbnail
}


А после окончания проигрывания трека удалять его объект из списка.
Но что-то не разобрался что куда писать и не понимаю как лучше всего это сделать
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Первое, что приходит в голову: если уж классы, то и трэки - класс. Со всеми вытекающими. Но это отдельная история.

Второе - для списков добавление элемента - метод .append()
Можно и «плюсовать», но лучше явно, чем неявно.
Т.е. self.data['tracks'].append({…})
Но тут мы подходим к третьему: если у тебя класс проигрывателя, зачем внутри него делать вот этот словарь self.data?
Пусть у класса проигрывателей будут атрибуты «self.tracks: list» и «self.queueloop_status: bool».
Т.е.
self.tracks.append({…})
self.queueloop_status = True

И, наверное, для управления всем этим классу проигрывателя надо оформить соответствующие методы (add, remove, сеттеры/геттеры и т.д.),
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы