1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-23 19:44:20 +00:00
royalnet/royalpack/events/discord_pause.py

42 lines
1.8 KiB
Python
Raw Normal View History

2019-12-03 00:57:21 +00:00
import discord
from typing import *
2020-04-09 18:44:04 +00:00
import royalnet.commands as rc
2019-12-03 00:57:21 +00:00
from royalnet.serf.discord import *
2020-04-09 18:44:04 +00:00
class DiscordPauseEvent(rc.Event):
2019-12-03 00:57:21 +00:00
name = "discord_pause"
async def run(self,
guild_id: Optional[int] = None,
**kwargs) -> dict:
if not isinstance(self.serf, DiscordSerf):
2020-04-09 18:44:04 +00:00
raise rc.UnsupportedError()
2019-12-03 00:57:21 +00:00
client: discord.Client = self.serf.client
if len(self.serf.voice_players) == 1:
voice_player: VoicePlayer = self.serf.voice_players[0]
else:
if guild_id is None:
# TODO: trovare un modo per riprodurre canzoni su più server da Telegram
2020-04-09 18:44:04 +00:00
raise rc.InvalidInputError("Non so in che Server riprodurre questo file...\n"
"Invia il comando su Discord, per favore!")
2019-12-03 00:57:21 +00:00
guild: discord.Guild = client.get_guild(guild_id)
if guild is None:
2020-04-09 18:44:04 +00:00
raise rc.InvalidInputError("Impossibile trovare il Server specificato.")
candidate_players = self.serf.find_voice_players(guild)
if len(candidate_players) == 0:
raise rc.UserError("Il bot non è in nessun canale vocale.\n"
"Evocalo prima con [c]summon[/c]!")
elif len(candidate_players) == 1:
voice_player = candidate_players[0]
else:
raise rc.CommandError("Non so su che Server saltare canzone...\n"
"Invia il comando su Discord, per favore!")
2019-12-03 00:57:21 +00:00
if voice_player.voice_client.is_paused():
voice_player.voice_client.resume()
return {"action": "resumed"}
else:
voice_player.voice_client.pause()
return {"action": "paused"}