mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-23 19:44:20 +00:00
A huge bundle of fixes and improvements
This commit is contained in:
parent
f19794daf9
commit
922df91507
21 changed files with 76 additions and 38 deletions
|
@ -6,8 +6,8 @@ aiohttp>=3.5.4
|
||||||
sqlalchemy>=1.3.2
|
sqlalchemy>=1.3.2
|
||||||
Markdown>=3.1
|
Markdown>=3.1
|
||||||
dateparser>=0.7.1
|
dateparser>=0.7.1
|
||||||
discord.py>=1.0.1
|
discord.py>=1.2.2
|
||||||
youtube_dl>=2019.4.24
|
youtube_dl>=2019.6.8
|
||||||
ffmpeg-python>=0.1.17
|
ffmpeg-python>=0.1.17
|
||||||
Sphinx>=2.0.1
|
Sphinx>=2.0.1
|
||||||
sphinx_rtd_theme>=0.4.3
|
sphinx_rtd_theme>=0.4.3
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from . import audio, bots, commands, database, network, utils, error, web
|
from . import audio, bots, commands, database, network, utils, error, web
|
||||||
|
|
||||||
version = "5.0a22"
|
version = "5.0a23"
|
||||||
|
|
||||||
__all__ = ["audio", "bots", "commands", "database", "network", "utils", "error", "web"]
|
__all__ = ["audio", "bots", "commands", "database", "network", "utils", "error", "web"]
|
||||||
|
|
|
@ -39,7 +39,7 @@ class RoyalPCMFile(YtdlFile):
|
||||||
ffmpeg.input(f"./{self.video_filename}") \
|
ffmpeg.input(f"./{self.video_filename}") \
|
||||||
.output(self.audio_filename, format="s16le", ac=2, ar="48000") \
|
.output(self.audio_filename, format="s16le", ac=2, ar="48000") \
|
||||||
.overwrite_output() \
|
.overwrite_output() \
|
||||||
.run(quiet=False)
|
.run(quiet=True)
|
||||||
except ffmpeg.Error as exc:
|
except ffmpeg.Error as exc:
|
||||||
log.error(f"FFmpeg error: {exc.stderr}")
|
log.error(f"FFmpeg error: {exc.stderr}")
|
||||||
raise
|
raise
|
||||||
|
|
|
@ -67,10 +67,16 @@ class CvNH(NetworkHandler):
|
||||||
# Voice
|
# Voice
|
||||||
if channel != 0:
|
if channel != 0:
|
||||||
# Voice status
|
# Voice status
|
||||||
if member.voice.self_mute:
|
if member.voice.afk:
|
||||||
message += f"🔇 "
|
message += "💤 "
|
||||||
|
elif member.voice.self_deaf or member.voice.deaf:
|
||||||
|
message += "🔇 "
|
||||||
|
elif member.voice.self_mute or member.voice.mute:
|
||||||
|
message += "🔈 "
|
||||||
|
elif member.voice.self_video:
|
||||||
|
message += "📺 "
|
||||||
else:
|
else:
|
||||||
message += f"🔊 "
|
message += "🔊 "
|
||||||
# Nickname
|
# Nickname
|
||||||
if member.nick is not None:
|
if member.nick is not None:
|
||||||
message += f"[i]{member.nick}[/i]"
|
message += f"[i]{member.nick}[/i]"
|
||||||
|
@ -99,6 +105,8 @@ class CvNH(NetworkHandler):
|
||||||
message += f" | 🎧 {member.activity.name}"
|
message += f" | 🎧 {member.activity.name}"
|
||||||
elif member.activity.type == discord.ActivityType.watching:
|
elif member.activity.type == discord.ActivityType.watching:
|
||||||
message += f" | 📺 {member.activity.name}"
|
message += f" | 📺 {member.activity.name}"
|
||||||
|
else:
|
||||||
|
message += f" | ❓ Unknown activity"
|
||||||
message += "\n"
|
message += "\n"
|
||||||
message += "\n"
|
message += "\n"
|
||||||
return ResponseSuccess({"response": message})
|
return ResponseSuccess({"response": message})
|
||||||
|
|
|
@ -17,33 +17,39 @@ class ErrorHandlerCommand(Command):
|
||||||
if isinstance(exception, NoneFoundError):
|
if isinstance(exception, NoneFoundError):
|
||||||
await call.reply(f"⚠️ L'elemento richiesto non è stato trovato.\n[p]{exception}[/p]")
|
await call.reply(f"⚠️ L'elemento richiesto non è stato trovato.\n[p]{exception}[/p]")
|
||||||
return
|
return
|
||||||
if isinstance(exception, TooManyFoundError):
|
elif isinstance(exception, TooManyFoundError):
|
||||||
await call.reply(f"⚠️ La richiesta effettuata è ambigua, pertanto è stata annullata.\n[p]{exception}[/p]")
|
await call.reply(f"⚠️ La richiesta effettuata è ambigua, pertanto è stata annullata.\n[p]{exception}[/p]")
|
||||||
return
|
return
|
||||||
if isinstance(exception, UnregisteredError):
|
elif isinstance(exception, UnregisteredError):
|
||||||
await call.reply("⚠️ Devi essere registrato a Royalnet per usare questo comando.\nUsa il comando [c]sync[/c] per registrarti!")
|
await call.reply("⚠️ Devi essere registrato a Royalnet per usare questo comando.\nUsa il comando [c]sync[/c] per registrarti!")
|
||||||
return
|
return
|
||||||
if isinstance(exception, UnsupportedError):
|
elif isinstance(exception, UnsupportedError):
|
||||||
await call.reply(f"⚠️ Il comando richiesto non è disponibile tramite l'interfaccia [c]{call.interface_name}[/c].")
|
await call.reply(f"⚠️ Il comando richiesto non è disponibile tramite l'interfaccia [c]{call.interface_name}[/c].")
|
||||||
return
|
return
|
||||||
if isinstance(exception, InvalidInputError):
|
elif isinstance(exception, InvalidInputError):
|
||||||
command = call.kwargs["previous_command"]
|
command = call.kwargs["previous_command"]
|
||||||
await call.reply(f"⚠️ Sintassi non valida.\nSintassi corretta: [c]{call.interface_prefix}{command.command_name} {command.command_syntax}[/c]")
|
await call.reply(f"⚠️ Sintassi non valida.\nSintassi corretta: [c]{call.interface_prefix}{command.command_name} {command.command_syntax}[/c]")
|
||||||
return
|
return
|
||||||
if isinstance(exception, InvalidConfigError):
|
elif isinstance(exception, InvalidConfigError):
|
||||||
await call.reply(f"⚠️ Il bot non è stato configurato correttamente, quindi questo comando non può essere eseguito.\n[p]{exception}[/p]")
|
await call.reply(f"⚠️ Il bot non è stato configurato correttamente, quindi questo comando non può essere eseguito.\n[p]{exception}[/p]")
|
||||||
return
|
return
|
||||||
if isinstance(exception, RoyalnetRequestError):
|
elif isinstance(exception, RoyalnetRequestError):
|
||||||
await call.reply(f"⚠️ La richiesta a Royalnet ha restituito un errore:\n"
|
await call.reply(f"⚠️ La richiesta a Royalnet ha restituito un errore:\n"
|
||||||
f"[p]{exception.error.extra_info['type']}\n"
|
f"[p]{exception.error.extra_info['type']}\n"
|
||||||
f"{exception.error.extra_info['str']}[/p]")
|
f"{exception.error.extra_info['str']}[/p]")
|
||||||
return
|
return
|
||||||
if isinstance(exception, ExternalError):
|
elif isinstance(exception, ExternalError):
|
||||||
await call.reply(f"⚠️ Una risorsa esterna necessaria per l'esecuzione del comando non ha funzionato correttamente, quindi il comando è stato annullato.\n[p]{exception}[/p]")
|
await call.reply(f"⚠️ Una risorsa esterna necessaria per l'esecuzione del comando non ha funzionato correttamente, quindi il comando è stato annullato.\n[p]{exception}[/p]")
|
||||||
return
|
return
|
||||||
if isinstance(exception, RoyalnetResponseError):
|
elif isinstance(exception, RoyalnetResponseError):
|
||||||
log.warning(f"Invalid response from Royalnet - {exception.__class__.__name__}: {exception}")
|
log.warning(f"Invalid response from Royalnet - {exception.__class__.__name__}: {exception}")
|
||||||
await call.reply(f"❌ La risposta ricevuta da Royalnet non è valida: [p]{exception}[/p]")
|
await call.reply(f"❌ La risposta ricevuta da Royalnet non è valida: [p]{exception}[/p]")
|
||||||
return
|
return
|
||||||
|
elif isinstance(exception, CurrentlyDisabledError):
|
||||||
|
await call.reply(f"⚠️ Il comando richiesto è temporaneamente disabilitato.\n[p]{exception}[/p]")
|
||||||
|
return
|
||||||
|
elif __debug__:
|
||||||
|
raise
|
||||||
|
else:
|
||||||
log.error(f"Unhandled exception - {exception.__class__.__name__}: {exception}")
|
log.error(f"Unhandled exception - {exception.__class__.__name__}: {exception}")
|
||||||
await call.reply(f"❌ Eccezione non gestita durante l'esecuzione del comando:\n[b]{exception.__class__.__name__}[/b]\n[p]{exception}[/p]")
|
await call.reply(f"❌ Eccezione non gestita durante l'esecuzione del comando:\n[b]{exception.__class__.__name__}[/b]\n[p]{exception}[/p]")
|
||||||
|
|
|
@ -65,8 +65,8 @@ class PlayCommand(Command):
|
||||||
@classmethod
|
@classmethod
|
||||||
async def common(cls, call: Call):
|
async def common(cls, call: Call):
|
||||||
guild_name, url = call.args.match(r"(?:\[(.+)])?\s*<?(.+)>?")
|
guild_name, url = call.args.match(r"(?:\[(.+)])?\s*<?(.+)>?")
|
||||||
download_task = loop.create_task(call.net_request(Request("music_play", {"url": url, "guild_name": guild_name}), "discord"))
|
download_task = call.loop.create_task(call.net_request(Request("music_play", {"url": url, "guild_name": guild_name}), "discord"))
|
||||||
notify_task = loop.create_task(notify_on_timeout(call, url, time=30, repeat=True))
|
notify_task = call.loop.create_task(notify_on_timeout(call, url, time=30, repeat=True))
|
||||||
try:
|
try:
|
||||||
data: dict = await download_task
|
data: dict = await download_task
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
|
|
|
@ -2,7 +2,7 @@ import typing
|
||||||
import asyncio
|
import asyncio
|
||||||
from ..utils import Command, Call, NetworkHandler
|
from ..utils import Command, Call, NetworkHandler
|
||||||
from ..network import Request, ResponseSuccess
|
from ..network import Request, ResponseSuccess
|
||||||
from ..error import NoneFoundError, TooManyFoundError
|
from ..error import NoneFoundError, TooManyFoundError, CurrentlyDisabledError
|
||||||
from ..audio import Playlist, Pool
|
from ..audio import Playlist, Pool
|
||||||
if typing.TYPE_CHECKING:
|
if typing.TYPE_CHECKING:
|
||||||
from ..bots import DiscordBot
|
from ..bots import DiscordBot
|
||||||
|
@ -30,7 +30,8 @@ class PlaymodeNH(NetworkHandler):
|
||||||
if data["mode_name"] == "playlist":
|
if data["mode_name"] == "playlist":
|
||||||
bot.music_data[guild] = Playlist()
|
bot.music_data[guild] = Playlist()
|
||||||
elif data["mode_name"] == "pool":
|
elif data["mode_name"] == "pool":
|
||||||
bot.music_data[guild] = Pool()
|
# bot.music_data[guild] = Pool()
|
||||||
|
raise CurrentlyDisabledError("Bug: https://github.com/royal-games/royalnet/issues/61")
|
||||||
else:
|
else:
|
||||||
raise ValueError("No such PlayMode")
|
raise ValueError("No such PlayMode")
|
||||||
return ResponseSuccess()
|
return ResponseSuccess()
|
||||||
|
|
|
@ -39,4 +39,7 @@ class VideochannelCommand(Command):
|
||||||
await call.reply("⚠️ Non sei connesso a nessun canale vocale!")
|
await call.reply("⚠️ Non sei connesso a nessun canale vocale!")
|
||||||
return
|
return
|
||||||
channel = voice.channel
|
channel = voice.channel
|
||||||
|
if author.is_on_mobile():
|
||||||
|
await call.reply(f"📹 Per entrare in modalità video, clicca qui: <https://discordapp.com/channels/{channel.guild.id}/{channel.id}>\n[b]Attenzione: la modalità video non funziona su Discord per Android e iOS![/b]")
|
||||||
|
return
|
||||||
await call.reply(f"📹 Per entrare in modalità video, clicca qui: <https://discordapp.com/channels/{channel.guild.id}/{channel.id}>")
|
await call.reply(f"📹 Per entrare in modalità video, clicca qui: <https://discordapp.com/channels/{channel.guild.id}/{channel.id}>")
|
||||||
|
|
|
@ -45,3 +45,7 @@ class ExternalError(Exception):
|
||||||
|
|
||||||
class FileTooBigError(Exception):
|
class FileTooBigError(Exception):
|
||||||
"""The file to be downloaded would be too big to store; therefore, it has been skipped."""
|
"""The file to be downloaded would be too big to store; therefore, it has been skipped."""
|
||||||
|
|
||||||
|
|
||||||
|
class CurrentlyDisabledError(Exception):
|
||||||
|
"""This feature is temporarely disabled and is not available right now."""
|
||||||
|
|
|
@ -41,9 +41,9 @@ class RoyalnetServer:
|
||||||
self.required_secret: str = required_secret
|
self.required_secret: str = required_secret
|
||||||
self.identified_clients: typing.List[ConnectedClient] = []
|
self.identified_clients: typing.List[ConnectedClient] = []
|
||||||
if loop is None:
|
if loop is None:
|
||||||
self.loop = asyncio.get_event_loop()
|
self._loop = asyncio.get_event_loop()
|
||||||
else:
|
else:
|
||||||
self.loop = loop
|
self._loop = loop
|
||||||
|
|
||||||
def find_client(self, *, nid: str = None, link_type: str = None) -> typing.List[ConnectedClient]:
|
def find_client(self, *, nid: str = None, link_type: str = None) -> typing.List[ConnectedClient]:
|
||||||
assert not (nid and link_type)
|
assert not (nid and link_type)
|
||||||
|
|
|
@ -3,6 +3,7 @@ import asyncio
|
||||||
import logging
|
import logging
|
||||||
from royalnet.bots import DiscordBot, DiscordConfig, TelegramBot, TelegramConfig
|
from royalnet.bots import DiscordBot, DiscordConfig, TelegramBot, TelegramConfig
|
||||||
from royalnet.commands import *
|
from royalnet.commands import *
|
||||||
|
# noinspection PyUnresolvedReferences
|
||||||
from royalnet.commands.debug_create import DebugCreateCommand
|
from royalnet.commands.debug_create import DebugCreateCommand
|
||||||
from royalnet.commands.error_handler import ErrorHandlerCommand
|
from royalnet.commands.error_handler import ErrorHandlerCommand
|
||||||
from royalnet.network import RoyalnetServer, RoyalnetConfig
|
from royalnet.network import RoyalnetServer, RoyalnetConfig
|
||||||
|
@ -15,13 +16,17 @@ log = logging.root
|
||||||
stream_handler = logging.StreamHandler()
|
stream_handler = logging.StreamHandler()
|
||||||
stream_handler.formatter = logging.Formatter("{asctime}\t{name}\t{levelname}\t{message}", style="{")
|
stream_handler.formatter = logging.Formatter("{asctime}\t{name}\t{levelname}\t{message}", style="{")
|
||||||
log.addHandler(stream_handler)
|
log.addHandler(stream_handler)
|
||||||
log.setLevel(logging.WARNING)
|
log.setLevel(logging.INFO)
|
||||||
|
|
||||||
commands = [PingCommand, ShipCommand, SmecdsCommand, ColorCommand, CiaoruoziCommand, DebugCreateCommand, SyncCommand,
|
commands = [PingCommand, ShipCommand, SmecdsCommand, ColorCommand, CiaoruoziCommand, SyncCommand,
|
||||||
AuthorCommand, DiarioCommand, RageCommand, DateparserCommand, ReminderCommand, KvactiveCommand, KvCommand,
|
DiarioCommand, RageCommand, ReminderCommand, KvactiveCommand, KvCommand,
|
||||||
KvrollCommand, VideoinfoCommand, SummonCommand, PlayCommand, SkipCommand, PlaymodeCommand,
|
KvrollCommand, SummonCommand, PlayCommand, SkipCommand, PlaymodeCommand,
|
||||||
VideochannelCommand, CvCommand, PauseCommand, QueueCommand]
|
VideochannelCommand, CvCommand, PauseCommand, QueueCommand]
|
||||||
|
|
||||||
|
# noinspection PyUnreachableCode
|
||||||
|
if __debug__:
|
||||||
|
commands = [DebugCreateCommand, VideoinfoCommand, DateparserCommand, AuthorCommand, *commands]
|
||||||
|
|
||||||
address, port = "127.0.0.1", 1234
|
address, port = "127.0.0.1", 1234
|
||||||
|
|
||||||
print("Starting master...")
|
print("Starting master...")
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import os
|
import os
|
||||||
from .web import create_app
|
from .web import create_app
|
||||||
from .web.royalprints import rp_home, rp_wikiview, rp_tglogin
|
from .web.royalprints import rp_home, rp_wikiview, rp_tglogin, rp_docs
|
||||||
|
|
||||||
|
|
||||||
class TestConfig:
|
class TestConfig:
|
||||||
|
@ -8,7 +8,7 @@ class TestConfig:
|
||||||
TG_AK = os.environ["TG_AK"]
|
TG_AK = os.environ["TG_AK"]
|
||||||
|
|
||||||
|
|
||||||
app = create_app(TestConfig, [rp_home, rp_wikiview, rp_tglogin])
|
app = create_app(TestConfig, [rp_home, rp_wikiview, rp_tglogin, rp_docs])
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
@ -3,5 +3,6 @@
|
||||||
from .home import rp as rp_home
|
from .home import rp as rp_home
|
||||||
from .wikiview import rp as rp_wikiview
|
from .wikiview import rp as rp_wikiview
|
||||||
from .tglogin import rp as rp_tglogin
|
from .tglogin import rp as rp_tglogin
|
||||||
|
from .docs import rp as rp_docs
|
||||||
|
|
||||||
__all__ = ["rp_home", "rp_wikiview", "rp_tglogin"]
|
__all__ = ["rp_home", "rp_wikiview", "rp_tglogin", "rp_docs"]
|
||||||
|
|
11
royalnet/web/royalprints/docs/__init__.py
Normal file
11
royalnet/web/royalprints/docs/__init__.py
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
"""Quick docs link :py:class:`royalnet.web.Royalprint`."""
|
||||||
|
import flask as f
|
||||||
|
from ... import Royalprint
|
||||||
|
|
||||||
|
|
||||||
|
rp = Royalprint("docs", __name__, url_prefix="/docs")
|
||||||
|
|
||||||
|
|
||||||
|
@rp.route("/")
|
||||||
|
def home_index():
|
||||||
|
return f.redirect("https://royal-games.github.io/royalnet/html/index.html")
|
|
@ -10,7 +10,7 @@
|
||||||
<span class="left">Under construction</span>
|
<span class="left">Under construction</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="bot">
|
<div class="bot">
|
||||||
Non c'è ancora niente qui. O quasi. C'è solo la <a href="{{ url_for("wikiview.wikiview_index") }}">wiki</a> in sola lettura...
|
Non c'è ancora niente qui. O quasi. C'è solo la <a href="{{ url_for("wikiview.wikiview_index") }}">wiki</a> in sola lettura e il <a href="{{ url_for("tglogin.tglogin_index") }}">login con Telegram</a>...
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -3,12 +3,14 @@ import flask as f
|
||||||
import hashlib
|
import hashlib
|
||||||
import hmac
|
import hmac
|
||||||
import datetime
|
import datetime
|
||||||
|
import os
|
||||||
from ... import Royalprint
|
from ... import Royalprint
|
||||||
from ....database.tables import Royal, Telegram
|
from ....database.tables import Royal, Telegram
|
||||||
|
|
||||||
|
|
||||||
rp = Royalprint("tglogin", __name__, url_prefix="/login/telegram", required_tables={Royal, Telegram},
|
tmpl_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates')
|
||||||
template_folder="templates")
|
rp = Royalprint("tglogin", __name__, url_prefix="/tglogin", required_tables={Royal, Telegram},
|
||||||
|
template_folder=tmpl_dir)
|
||||||
|
|
||||||
|
|
||||||
@rp.route("/")
|
@rp.route("/")
|
||||||
|
|
|
@ -206,7 +206,6 @@ nav .nav-image {
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
nav .nav-sitename {
|
nav .nav-sitename {
|
||||||
color: #ffffff;
|
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
nav .nav-login-unavailable {
|
nav .nav-login-unavailable {
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"version":3,"sources":["ryg.less"],"names":[],"mappings":"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","file":"ryg.css"}
|
{"version":3,"sources":["ryg.less"],"names":[],"mappings":"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","file":"ryg.css"}
|
|
@ -251,7 +251,6 @@ nav {
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-sitename {
|
.nav-sitename {
|
||||||
color: @ec;
|
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -265,7 +265,6 @@ nav {
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-sitename {
|
.nav-sitename {
|
||||||
color: @ec;
|
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
</span>
|
</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="nav-login">
|
<span class="nav-login">
|
||||||
<a class="no-icon" href="/login/telegram">
|
<a class="no-icon" href="{{ url_for("tglogin.tglogin_index") }}">
|
||||||
Login
|
Login
|
||||||
<img class="nav-image faded" alt="" src="{{ url_for("static", filename="generic.png") }}">
|
<img class="nav-image faded" alt="" src="{{ url_for("static", filename="generic.png") }}">
|
||||||
</a>
|
</a>
|
||||||
|
|
Loading…
Reference in a new issue