SileroTTSBot/SpeakersSettingsAdapterDiscord.py

40 lines
1.4 KiB
Python

# -*- coding: utf-8 -*-
import DB
class SpeakersSettingsAdapterDiscord:
def get_speaker(self, guild_id: int, user_id: int) -> str:
user_defined_speaker = self.get_speaker_user(guild_id, user_id)
if user_defined_speaker is None:
return self.get_speaker_global(guild_id)
else:
return user_defined_speaker
def get_speaker_global(self, guild_id: int) -> str | None:
server_speaker_query = DB.ServerSpeaker.select()\
.where(DB.ServerSpeaker.server_id == guild_id)
if server_speaker_query.count() == 1:
return server_speaker_query.get().speaker
else:
return None
def get_speaker_user(self, guild_id: int, user_id: int) -> str | None:
user_speaker_query = DB.UserServerSpeaker.select()\
.where(DB.UserServerSpeaker.server_id == guild_id)\
.where(DB.UserServerSpeaker.user_id == user_id)
if user_speaker_query.count() == 1:
return user_speaker_query.get().speaker
else:
return None
def set_speaker_user(self, guild_id: int, user_id: int, speaker: str) -> None:
DB.UserServerSpeaker.replace(server_id=guild_id, user_id=user_id, speaker=speaker).execute()
def set_speaker_global(self, guild_id: int, user_id: int, speaker: str) -> None:
DB.ServerSpeaker.replace(server_id=guild_id, speaker=speaker).execute()