[V3] Make bot send typing whilst loading cogs (#1756)

* Show bot is responsive during cog load

* Log download of Lavalink.jar event

* Fix #1709's other bug

* Reformat

* Update core_commands.py from merge
This commit is contained in:
Tobotimus 2018-06-03 08:06:10 +10:00 committed by Will
parent 622382f425
commit 0d193d3e9e
3 changed files with 16 additions and 11 deletions

View File

@ -1,6 +1,7 @@
from pathlib import Path
from aiohttp import ClientSession
import shutil
import logging
from .audio import Audio
from .manager import start_lavalink_server
@ -8,6 +9,8 @@ from discord.ext import commands
from redbot.core.data_manager import cog_data_path
import redbot.core
log = logging.getLogger("red.audio")
LAVALINK_DOWNLOAD_URL = (
"https://github.com/Cog-Creators/Red-DiscordBot/" "releases/download/{}/Lavalink.jar"
).format(redbot.core.__version__)
@ -33,15 +36,13 @@ async def maybe_download_lavalink(loop, cog):
jar_exists = LAVALINK_JAR_FILE.exists()
current_build = redbot.core.VersionInfo(*await cog.config.current_build())
session = ClientSession(loop=loop)
if not jar_exists or current_build < redbot.core.version_info:
log.info("Downloading Lavalink.jar")
LAVALINK_DOWNLOAD_DIR.mkdir(parents=True, exist_ok=True)
async with ClientSession(loop=loop) as session:
await download_lavalink(session)
await cog.config.current_build.set(redbot.core.version_info.to_json())
session.close()
shutil.copyfile(str(BUNDLED_APP_YML_FILE), str(APP_YML_FILE))

View File

@ -4,6 +4,9 @@ import asyncio
from subprocess import Popen, DEVNULL, PIPE
import os
import logging
from typing import Optional, Tuple
_JavaVersion = Tuple[int, int]
log = logging.getLogger("red.audio.manager")
@ -36,16 +39,16 @@ async def monitor_lavalink_server(loop):
)
async def has_java(loop):
async def has_java(loop) -> Tuple[bool, Optional[_JavaVersion]]:
java_available = shutil.which("java") is not None
if not java_available:
return False
return False, None
version = await get_java_version(loop)
return version >= (1, 8), version
async def get_java_version(loop):
async def get_java_version(loop) -> _JavaVersion:
"""
This assumes we've already checked that java exists.
"""

View File

@ -501,6 +501,7 @@ class Core(CoreLogic):
"""Loads packages"""
cog_names = [c.strip() for c in cog_name.split(" ")]
async with ctx.typing():
loaded, failed, not_found = await self._load(cog_names)
if loaded:
@ -546,7 +547,7 @@ class Core(CoreLogic):
"""Reloads packages"""
cog_names = [c.strip() for c in cog_name.split(" ")]
async with ctx.typing():
loaded, failed, not_found = await self._reload(cog_names)
if loaded: