Implement YouTube manager
This commit is contained in:
parent
486cb82773
commit
b958f4fe55
8 changed files with 253 additions and 38 deletions
|
|
@ -14,15 +14,14 @@ import urllib.error
|
|||
import urllib.request
|
||||
import traceback
|
||||
|
||||
from breadtube_bot.youtube_api import YoutubeManager
|
||||
|
||||
from .api import Api, ApiAction, ApiVersion
|
||||
from .config import Config
|
||||
from .logger import create_logger
|
||||
from .objects import (
|
||||
Attachment, ChannelCategory, ChannelType, FileMime, Message, MessageReference, MessageReferenceType, Overwrite,
|
||||
OverwriteType, Permissions, Role, TextChannel, User)
|
||||
|
||||
|
||||
HTTPHeaders = dict[str, str]
|
||||
Attachment, ChannelCategory, ChannelType, FileMime, HTTPHeaders, Message, MessageReference, MessageReferenceType,
|
||||
Overwrite, OverwriteType, Permissions, Role, TextChannel, User)
|
||||
|
||||
|
||||
class ApiEncoder(json.JSONEncoder):
|
||||
|
|
@ -45,6 +44,12 @@ class DiscordManager:
|
|||
remaining: int
|
||||
next_reset: float
|
||||
|
||||
@dataclass
|
||||
class YoutTubeChannel:
|
||||
name: str
|
||||
channel_id: str
|
||||
last_update: float
|
||||
|
||||
class Task(Enum):
|
||||
SCAN_BOT_CHANNEL = 1
|
||||
DELETE_MESSAGES = 2
|
||||
|
|
@ -56,7 +61,7 @@ class DiscordManager:
|
|||
raise RuntimeError('Cannot current bot version')
|
||||
return tomllib.loads(pyproject_path.read_text(encoding='utf-8'))['project']['version']
|
||||
|
||||
def __init__(self, bot_token: str, guild_id: int, config: Config | None = None,
|
||||
def __init__(self, bot_token: str, guild_id: int, yt_api_key: str, config: Config | None = None,
|
||||
log_level: int = logging.INFO) -> None:
|
||||
self.config = config or Config()
|
||||
self.guild_id = guild_id
|
||||
|
|
@ -73,6 +78,7 @@ class DiscordManager:
|
|||
self.guild_roles: list = self.list_roles()
|
||||
self.bot_channel: TextChannel | None = None
|
||||
self.init_message: Message | None = None
|
||||
|
||||
for _ in range(self.config.bot_channel_init_retries):
|
||||
while not self.init_bot_channel():
|
||||
time.sleep(10)
|
||||
|
|
@ -85,6 +91,8 @@ class DiscordManager:
|
|||
self._scan_bot_channel()
|
||||
self.tasks.append((
|
||||
self.Task.SCAN_BOT_CHANNEL, time.time() + self.config.bot_channel_scan_interval, None))
|
||||
|
||||
self.yt_manager = YoutubeManager(api_key=yt_api_key, logger=self.logger)
|
||||
self.logger.info('Bot initialized')
|
||||
|
||||
def _update_rate_limit(self, headers: HTTPHeaders):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue