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

Add diarioshuffle command and api_diario_random.py

This commit is contained in:
Steffo 2020-03-23 02:55:25 +01:00
parent a4c472a79e
commit 70d2b5fee5
4 changed files with 66 additions and 0 deletions

View file

@ -36,6 +36,7 @@ from .steammatch import SteammatchCommand
from .dota import DotaCommand
from .magickfiorygi import MagickfiorygiCommand
from .brawlhalla import BrawlhallaCommand
from .diarioshuffle import DiarioshuffleCommand
# Enter the commands of your Pack here!
available_commands = [
@ -76,6 +77,7 @@ available_commands = [
DotaCommand,
MagickfiorygiCommand,
BrawlhallaCommand,
DiarioshuffleCommand,
]
# Don't change this, it should automatically generate __all__

View file

@ -0,0 +1,28 @@
from typing import *
from royalnet.commands import *
from royalnet.utils import *
from ..tables import Diario
from sqlalchemy import func
class DiarioshuffleCommand(Command):
name: str = "diarioshuffle"
description: str = "Cita una riga casuale del diario."
aliases = ["dis", "dishuffle", "dish"]
syntax = ""
async def run(self, args: CommandArgs, data: CommandData) -> None:
DiarioT = self.alchemy.get(Diario)
entry: List[Diario] = await asyncify(
data.session
.query(DiarioT)
.order_by(func.random())
.limit(1)
.one_or_none
)
if entry is None:
raise CommandError("Nessuna riga del diario trovata.")
await data.reply(f" {entry}")

View file

@ -9,6 +9,7 @@ from .api_wiki_edit import ApiWikiEditStar
from .api_wiki_get import ApiWikiGetStar
from .api_wiki_list import ApiWikiListStar
from .api_fiorygi_get import ApiFiorygiGetStar
from .api_diario_random import ApiDiarioRandomStar
# Enter the PageStars of your Pack here!
available_page_stars = [
@ -22,6 +23,7 @@ available_page_stars = [
ApiWikiGetStar,
ApiWikiListStar,
ApiFiorygiGetStar,
ApiDiarioRandomStar,
]
# Don't change this, it should automatically generate __all__

View file

@ -0,0 +1,34 @@
from typing import *
from royalnet.constellation.api import *
from royalnet.utils import *
from ..tables import *
from sqlalchemy import func
class ApiDiarioRandomStar(ApiStar):
path = "/api/diario/random/v1"
summary = "Get random diario entries."
parameters = {
"amount": "The number of diario entries to get."
}
tags = ["diario"]
async def api(self, data: ApiData) -> JSON:
DiarioT = self.alchemy.get(Diario)
try:
amount = int(data["amount"])
except ValueError:
raise InvalidParameterError("'amount' is not a valid int.")
entries: List[Diario] = await asyncify(
data.session
.query(DiarioT)
.order_by(func.random())
.limit(amount)
.all
)
if len(entries) < amount:
raise NotFoundError("Not enough diario entries.")
return list(map(lambda e: e.json(), entries))