Ensure bot doesn't indefinitely hang on an exception in on_ready (#6202)

This commit is contained in:
Jakub Kuczys 2023-07-19 22:44:38 +02:00 committed by GitHub
parent 48cfde7b8c
commit bad23a4a93
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -13,6 +13,7 @@ import importlib.metadata
from packaging.requirements import Requirement
from redbot.core import data_manager
from redbot.core.bot import ExitCodes
from redbot.core.commands import RedHelpFormatter, HelpSettings
from redbot.core.i18n import (
Translator,
@ -140,6 +141,13 @@ def init_events(bot, cli_flags):
@bot.event
async def on_ready():
try:
await _on_ready()
except Exception as exc:
log.critical("The bot failed to get ready!", exc_info=exc)
sys.exit(ExitCodes.CRITICAL)
async def _on_ready():
if bot._uptime is not None:
return
@ -170,7 +178,6 @@ def init_events(bot, cli_flags):
outdated_red_message = ""
rich_outdated_message = ""
with contextlib.suppress(aiohttp.ClientError, asyncio.TimeoutError):
pypi_version, py_version_req = await fetch_latest_red_version_info()
outdated = pypi_version and pypi_version > red_version_info
if outdated: