Fix convert yt url message being too long
* Add long message check * Minor lint rule fix
This commit is contained in:
parent
d015927861
commit
6d84205425
5 changed files with 60 additions and 22 deletions
|
|
@ -141,6 +141,59 @@ class Bot:
|
|||
last_message_id = message_batch[-1].id
|
||||
return messages
|
||||
|
||||
def _convert_yt_channel_url(self, message: Message, delayed_delete: dict[int, Message]):
|
||||
self.logger.debug('Parsing message for youtube channel name conversion: %s', message)
|
||||
answers: list[str] = []
|
||||
for line in message.content.splitlines():
|
||||
if line.startswith(self.YT_CHANNEL_NAME_URL):
|
||||
channel_name = line.rstrip()[len(self.YT_CHANNEL_NAME_URL):]
|
||||
try:
|
||||
channel_id = self.yt_manager.request_channel_id(
|
||||
channel_name, request_timeout=self.config.request_timeout)
|
||||
answers.append(
|
||||
f'{channel_name}{self.config.youtube_channel_id_answer_seperator}{channel_id}')
|
||||
except RuntimeError as error:
|
||||
answers.append(f'{channel_name}{self.config.youtube_channel_id_answer_seperator}{error}')
|
||||
if len('\n'.join(answers)) < self.discord_manager.MAX_MESSAGE_LENGTH:
|
||||
bot_message = self.discord_manager.create_message(self.bot_channel, {
|
||||
'content': '\n'.join(answers),
|
||||
'message_reference': MessageReference(
|
||||
type=MessageReferenceType.DEFAULT,
|
||||
message_id=message.id,
|
||||
channel_id=self.bot_channel.id,
|
||||
guild_id=None,
|
||||
fail_if_not_exists=None)}, request_timeout=self.config.request_timeout)
|
||||
delayed_delete[bot_message.id] = bot_message
|
||||
else:
|
||||
content_buffer = []
|
||||
content_size = 0
|
||||
for line in answers:
|
||||
if content_size + len(line) + 1 >= self.discord_manager.MAX_MESSAGE_LENGTH:
|
||||
bot_message = self.discord_manager.create_message(self.bot_channel, {
|
||||
'content': '\n'.join(content_buffer),
|
||||
'message_reference': MessageReference(
|
||||
type=MessageReferenceType.DEFAULT,
|
||||
message_id=message.id,
|
||||
channel_id=self.bot_channel.id,
|
||||
guild_id=None,
|
||||
fail_if_not_exists=None)}, request_timeout=self.config.request_timeout)
|
||||
delayed_delete[bot_message.id] = bot_message
|
||||
content_buffer = []
|
||||
content_size = 0
|
||||
content_buffer.append(line)
|
||||
content_size += len(line) + 1
|
||||
if content_buffer:
|
||||
bot_message = self.discord_manager.create_message(self.bot_channel, {
|
||||
'content': '\n'.join(content_buffer),
|
||||
'message_reference': MessageReference(
|
||||
type=MessageReferenceType.DEFAULT,
|
||||
message_id=message.id,
|
||||
channel_id=self.bot_channel.id,
|
||||
guild_id=None,
|
||||
fail_if_not_exists=None)}, request_timeout=self.config.request_timeout)
|
||||
delayed_delete[bot_message.id] = bot_message
|
||||
return delayed_delete
|
||||
|
||||
def _scan_bot_channel(self): # noqa: PLR0915
|
||||
self.logger.debug('Starting scanning bot channel')
|
||||
messages = self._get_all_channel_messages(self.bot_channel)
|
||||
|
|
@ -153,27 +206,7 @@ class Bot:
|
|||
for message in messages:
|
||||
if message.author.id != self.bot_user.id and message.content.startswith(self.YT_CHANNEL_NAME_URL):
|
||||
try:
|
||||
self.logger.debug('Parsing message for youtube channel name conversion: %s', message)
|
||||
answers: list[str] = []
|
||||
for line in message.content.splitlines():
|
||||
if line.startswith(self.YT_CHANNEL_NAME_URL):
|
||||
channel_name = line.rstrip()[len(self.YT_CHANNEL_NAME_URL):]
|
||||
try:
|
||||
channel_id = self.yt_manager.request_channel_id(
|
||||
channel_name, request_timeout=self.config.request_timeout)
|
||||
answers.append(
|
||||
f'{channel_name}{self.config.youtube_channel_id_answer_seperator}{channel_id}')
|
||||
except RuntimeError as error:
|
||||
answers.append(f'{channel_name}{self.config.youtube_channel_id_answer_seperator}{error}')
|
||||
bot_message = self.discord_manager.create_message(self.bot_channel, {
|
||||
'content': '\n'.join(answers),
|
||||
'message_reference': MessageReference(
|
||||
type=MessageReferenceType.DEFAULT,
|
||||
message_id=message.id,
|
||||
channel_id=self.bot_channel.id,
|
||||
guild_id=None,
|
||||
fail_if_not_exists=None)}, request_timeout=self.config.request_timeout)
|
||||
delayed_delete[bot_message.id] = bot_message
|
||||
self._convert_yt_channel_url(message, delayed_delete)
|
||||
except Exception as error:
|
||||
self.logger.error('Unexpected error while searching channel id from name: %s', error)
|
||||
delayed_delete[message.id] = message
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue