2019-12-02 19:40:25 +00:00
|
|
|
import discord
|
|
|
|
from typing import *
|
2020-04-09 18:44:04 +00:00
|
|
|
import royalnet.commands as rc
|
2019-12-02 19:40:25 +00:00
|
|
|
from royalnet.serf.discord import *
|
|
|
|
|
|
|
|
|
2020-04-09 18:44:04 +00:00
|
|
|
class DiscordSkipEvent(rc.Event):
|
2019-12-02 19:40:25 +00:00
|
|
|
name = "discord_skip"
|
|
|
|
|
|
|
|
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-02 19:40:25 +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"
|
2020-06-26 14:13:11 +00:00
|
|
|
"Invia il comando su Discord, per favore!")
|
2019-12-02 19:40:25 +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-02 19:40:25 +00:00
|
|
|
# Stop the playback of the current song
|
|
|
|
voice_player.voice_client.stop()
|
|
|
|
# Done!
|
|
|
|
return {}
|