ttstoy: decouple from built-in Audio cog
Use the shared Red-Lavalink client directly instead of depending on
redbot.cogs.audio: import lavalink; connect via lavalink.connect();
gate WebUI playback on lavalink.get_all_nodes() instead of
get_cog('Audio'). Playback (get_player pause/save/restore) unchanged.
The lavalink client is now owned by the YTAudio cog.
This commit is contained in:
+10
-8
@@ -24,7 +24,7 @@ import requests
|
|||||||
from redbot.core import commands, Config
|
from redbot.core import commands, Config
|
||||||
from redbot.core.bot import Red, cog_data_path
|
from redbot.core.bot import Red, cog_data_path
|
||||||
from redbot.core.commands import Cog
|
from redbot.core.commands import Cog
|
||||||
from redbot.cogs.audio import Audio
|
import lavalink
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from .morshutalk_engine import Morshu
|
from .morshutalk_engine import Morshu
|
||||||
@@ -2433,10 +2433,13 @@ class TtsToy(Cog):
|
|||||||
async with ctx.typing():
|
async with ctx.typing():
|
||||||
# Check if user is in a VC - we'll play there if so, but it's not required
|
# Check if user is in a VC - we'll play there if so, but it's not required
|
||||||
user_in_vc = ctx.author.voice and ctx.author.voice.channel
|
user_in_vc = ctx.author.voice and ctx.author.voice.channel
|
||||||
audio: Optional[Audio] = self.bot.get_cog("Audio")
|
|
||||||
|
|
||||||
if user_in_vc and audio and not ctx.guild.me.voice:
|
if user_in_vc and not ctx.guild.me.voice:
|
||||||
await ctx.invoke(audio.command_summon)
|
# Connect via the shared Lavalink client (owned by the YTAudio cog).
|
||||||
|
try:
|
||||||
|
await lavalink.connect(ctx.author.voice.channel)
|
||||||
|
except Exception:
|
||||||
|
log.exception("[TTS] Failed to connect to voice channel via Lavalink.")
|
||||||
|
|
||||||
mode = await self._get_tts_mode()
|
mode = await self._get_tts_mode()
|
||||||
|
|
||||||
@@ -2903,9 +2906,8 @@ class TtsToy(Cog):
|
|||||||
return
|
return
|
||||||
|
|
||||||
member = member_guild.get_member(user_id)
|
member = member_guild.get_member(user_id)
|
||||||
audio_cog: Optional[Audio] = self.bot.get_cog("Audio")
|
if not lavalink.get_all_nodes():
|
||||||
if not audio_cog:
|
log.warning("[WebUI] Lavalink not connected - skipping VC playback")
|
||||||
log.warning("[WebUI] Audio cog not loaded - skipping VC playback")
|
|
||||||
return
|
return
|
||||||
text_channel = member_guild.system_channel or next(
|
text_channel = member_guild.system_channel or next(
|
||||||
(c for c in member_guild.text_channels
|
(c for c in member_guild.text_channels
|
||||||
@@ -2915,7 +2917,7 @@ class TtsToy(Cog):
|
|||||||
log.warning("[WebUI] No text channel available for VC playback")
|
log.warning("[WebUI] No text channel available for VC playback")
|
||||||
return
|
return
|
||||||
if not member_guild.me.voice or member_guild.me.voice.channel != member_vc:
|
if not member_guild.me.voice or member_guild.me.voice.channel != member_vc:
|
||||||
await member_vc.connect()
|
await lavalink.connect(member_vc)
|
||||||
|
|
||||||
class _FakeCtx:
|
class _FakeCtx:
|
||||||
guild = member_guild
|
guild = member_guild
|
||||||
|
|||||||
Reference in New Issue
Block a user