mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-23 19:44:20 +00:00
Create CommandArgs class
This commit is contained in:
parent
144ff53752
commit
d42c1a6cd7
7 changed files with 78 additions and 59 deletions
|
@ -1,4 +1,4 @@
|
||||||
from ..utils import Command, Call
|
from ..utils import Command, CommandArgs, Call
|
||||||
|
|
||||||
|
|
||||||
class NullCommand(Command):
|
class NullCommand(Command):
|
||||||
|
@ -6,5 +6,5 @@ class NullCommand(Command):
|
||||||
command_name = "null"
|
command_name = "null"
|
||||||
command_title = "Do nothing"
|
command_title = "Do nothing"
|
||||||
|
|
||||||
async def common(self, call: Call, *args, **kwargs):
|
async def common(self, call: Call, args: CommandArgs):
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from ..utils import Command, Call
|
from ..utils import Command, CommandArgs, Call
|
||||||
|
|
||||||
|
|
||||||
class PingCommand(Command):
|
class PingCommand(Command):
|
||||||
|
@ -6,5 +6,5 @@ class PingCommand(Command):
|
||||||
command_name = "ping"
|
command_name = "ping"
|
||||||
command_title = "Ping pong!"
|
command_title = "Ping pong!"
|
||||||
|
|
||||||
async def common(self, call: Call, *args, **kwargs):
|
async def common(self, call: Call, args: CommandArgs):
|
||||||
await call.reply("Pong!")
|
await call.reply("Pong!")
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import re
|
import re
|
||||||
from ..utils import Command, Call, safeformat
|
from ..utils import Command, CommandArgs, Call, safeformat
|
||||||
|
|
||||||
|
|
||||||
SHIP_RESULT = "💕 {one} + {two} = <b>{result}</b>"
|
SHIP_RESULT = "💕 {one} + {two} = <b>{result}</b>"
|
||||||
|
@ -10,7 +10,7 @@ class ShipCommand(Command):
|
||||||
command_name = "ship"
|
command_name = "ship"
|
||||||
command_title = "Create a ship between two items"
|
command_title = "Create a ship between two items"
|
||||||
|
|
||||||
async def common(self, call: Call, *args, **kwargs):
|
async def common(self, call: Call, args: CommandArgs):
|
||||||
name_one = args[0]
|
name_one = args[0]
|
||||||
name_two = args[1]
|
name_two = args[1]
|
||||||
if name_two == "+":
|
if name_two == "+":
|
||||||
|
|
|
@ -1,53 +1,53 @@
|
||||||
import random
|
import random
|
||||||
from ..utils import Command, Call, safeformat
|
from ..utils import Command, CommandArgs, Call, safeformat
|
||||||
|
|
||||||
|
|
||||||
DS_LIST = ["della secca", "del seccatore", "del secchiello", "del secchio", "del secchione", "del secondino",
|
DS_LIST = ["della secca", "del seccatore", "del secchiello", "del secchio", "del secchione", "del secondino",
|
||||||
"del sedano", "del sedativo", "della sedia", "del sedicente", "del sedile", "della sega", "del segale",
|
"del sedano", "del sedativo", "della sedia", "del sedicente", "del sedile", "della sega", "del segale",
|
||||||
"della segatura", "della seggiola", "del seggiolino", "della seggiovia", "della segheria", "del seghetto",
|
"della segatura", "della seggiola", "del seggiolino", "della seggiovia", "della segheria", "del seghetto",
|
||||||
"del segnalibro", "del segnaposto", "del segno", "del segretario", "della segreteria", "del seguace",
|
"del segnalibro", "del segnaposto", "del segno", "del segretario", "della segreteria", "del seguace",
|
||||||
"del segugio", "della selce", "della sella", "della selz", "della selva", "della selvaggina", "del semaforo",
|
"del segugio", "della selce", "della sella", "della selz", "della selva", "della selvaggina", "del semaforo",
|
||||||
"del seme", "del semifreddo", "del seminario", "della seminarista", "della semola", "del semolino",
|
"del seme", "del semifreddo", "del seminario", "della seminarista", "della semola", "del semolino",
|
||||||
"del semplicione", "della senape", "del senatore", "del seno", "del sensore", "della sentenza",
|
"del semplicione", "della senape", "del senatore", "del seno", "del sensore", "della sentenza",
|
||||||
"della sentinella", "del sentore", "della seppia", "del sequestratore", "della serenata", "del sergente",
|
"della sentinella", "del sentore", "della seppia", "del sequestratore", "della serenata", "del sergente",
|
||||||
"del sermone", "della serpe", "del serpente", "della serpentina", "della serra", "del serraglio",
|
"del sermone", "della serpe", "del serpente", "della serpentina", "della serra", "del serraglio",
|
||||||
"del serramanico", "della serranda", "della serratura", "del servitore", "della servitù", "del servizievole",
|
"del serramanico", "della serranda", "della serratura", "del servitore", "della servitù", "del servizievole",
|
||||||
"del servo", "del set", "della seta", "della setola", "del sidecar", "del siderurgico", "del sidro",
|
"del servo", "del set", "della seta", "della setola", "del sidecar", "del siderurgico", "del sidro",
|
||||||
"della siepe", "del sifone", "della sigaretta", "del sigaro", "del sigillo", "della signora",
|
"della siepe", "del sifone", "della sigaretta", "del sigaro", "del sigillo", "della signora",
|
||||||
"della signorina", "del silenziatore", "della silhouette", "del silicio", "del silicone", "del siluro",
|
"della signorina", "del silenziatore", "della silhouette", "del silicio", "del silicone", "del siluro",
|
||||||
"della sinagoga", "della sindacalista", "del sindacato", "del sindaco", "della sindrome", "della sinfonia",
|
"della sinagoga", "della sindacalista", "del sindacato", "del sindaco", "della sindrome", "della sinfonia",
|
||||||
"del sipario", "del sire", "della sirena", "della siringa", "del sismografo", "del sobborgo",
|
"del sipario", "del sire", "della sirena", "della siringa", "del sismografo", "del sobborgo",
|
||||||
"del sobillatore", "del sobrio", "del soccorritore", "del socio", "del sociologo", "della soda", "del sofà",
|
"del sobillatore", "del sobrio", "del soccorritore", "del socio", "del sociologo", "della soda", "del sofà",
|
||||||
"della soffitta", "del software", "dello sogghignare", "del soggiorno", "della sogliola", "del sognatore",
|
"della soffitta", "del software", "dello sogghignare", "del soggiorno", "della sogliola", "del sognatore",
|
||||||
"della soia", "del solaio", "del solco", "del soldato", "del soldo", "del sole", "della soletta",
|
"della soia", "del solaio", "del solco", "del soldato", "del soldo", "del sole", "della soletta",
|
||||||
"della solista", "del solitario", "del sollazzare", "del sollazzo", "del sollecito", "del solleone",
|
"della solista", "del solitario", "del sollazzare", "del sollazzo", "del sollecito", "del solleone",
|
||||||
"del solletico", "del sollevare", "del sollievo", "del solstizio", "del solubile", "del solvente",
|
"del solletico", "del sollevare", "del sollievo", "del solstizio", "del solubile", "del solvente",
|
||||||
"della soluzione", "del somaro", "del sombrero", "del sommergibile", "del sommo", "della sommossa",
|
"della soluzione", "del somaro", "del sombrero", "del sommergibile", "del sommo", "della sommossa",
|
||||||
"del sommozzatore", "del sonar", "della sonda", "del sondaggio", "del sondare", "del sonnacchioso",
|
"del sommozzatore", "del sonar", "della sonda", "del sondaggio", "del sondare", "del sonnacchioso",
|
||||||
"del sonnambulo", "del sonnellino", "del sonnifero", "del sonno", "della sonnolenza", "del sontuoso",
|
"del sonnambulo", "del sonnellino", "del sonnifero", "del sonno", "della sonnolenza", "del sontuoso",
|
||||||
"del soppalco", "del soprabito", "del sopracciglio", "del sopraffare", "del sopraffino", "del sopraluogo",
|
"del soppalco", "del soprabito", "del sopracciglio", "del sopraffare", "del sopraffino", "del sopraluogo",
|
||||||
"del sopramobile", "del soprannome", "del soprano", "del soprappensiero", "del soprassalto",
|
"del sopramobile", "del soprannome", "del soprano", "del soprappensiero", "del soprassalto",
|
||||||
"del soprassedere", "del sopravvento", "del sopravvivere", "del soqquadro", "del sorbetto", "del sordido",
|
"del soprassedere", "del sopravvento", "del sopravvivere", "del soqquadro", "del sorbetto", "del sordido",
|
||||||
"della sordina", "del sordo", "della sorella", "della sorgente", "del sornione", "del sorpasso",
|
"della sordina", "del sordo", "della sorella", "della sorgente", "del sornione", "del sorpasso",
|
||||||
"della sorpresa", "del sorreggere", "del sorridere", "della sorsata", "del sorteggio", "del sortilegio",
|
"della sorpresa", "del sorreggere", "del sorridere", "della sorsata", "del sorteggio", "del sortilegio",
|
||||||
"del sorvegliante", "del sorvolare", "del sosia", "del sospettoso", "del sospirare", "della sosta",
|
"del sorvegliante", "del sorvolare", "del sosia", "del sospettoso", "del sospirare", "della sosta",
|
||||||
"della sostanza", "del sostegno", "del sostenitore", "del sostituto", "del sottaceto", "della sottana",
|
"della sostanza", "del sostegno", "del sostenitore", "del sostituto", "del sottaceto", "della sottana",
|
||||||
"del sotterfugio", "del sotterraneo", "del sottile", "del sottilizzare", "del sottintendere",
|
"del sotterfugio", "del sotterraneo", "del sottile", "del sottilizzare", "del sottintendere",
|
||||||
"del sottobanco", "del sottobosco", "del sottomarino", "del sottopassaggio", "del sottoposto",
|
"del sottobanco", "del sottobosco", "del sottomarino", "del sottopassaggio", "del sottoposto",
|
||||||
"del sottoscala", "della sottoscrizione", "del sottostare", "del sottosuolo", "del sottotetto",
|
"del sottoscala", "della sottoscrizione", "del sottostare", "del sottosuolo", "del sottotetto",
|
||||||
"del sottotitolo", "del sottovalutare", "del sottovaso", "della sottoveste", "del sottovuoto",
|
"del sottotitolo", "del sottovalutare", "del sottovaso", "della sottoveste", "del sottovuoto",
|
||||||
"del sottufficiale", "della soubrette", "del souvenir", "del soverchiare", "del sovrano", "del sovrapprezzo",
|
"del sottufficiale", "della soubrette", "del souvenir", "del soverchiare", "del sovrano", "del sovrapprezzo",
|
||||||
"della sovvenzione", "del sovversivo", "del sozzo", "dello suadente", "del sub", "del subalterno",
|
"della sovvenzione", "del sovversivo", "del sozzo", "dello suadente", "del sub", "del subalterno",
|
||||||
"del subbuglio", "del subdolo", "del sublime", "del suburbano", "del successore", "del succo",
|
"del subbuglio", "del subdolo", "del sublime", "del suburbano", "del successore", "del succo",
|
||||||
"della succube", "del succulento", "della succursale", "del sudario", "della sudditanza", "del suddito",
|
"della succube", "del succulento", "della succursale", "del sudario", "della sudditanza", "del suddito",
|
||||||
"del sudicio", "del suffisso", "del suffragio", "del suffumigio", "del suggeritore", "del sughero",
|
"del sudicio", "del suffisso", "del suffragio", "del suffumigio", "del suggeritore", "del sughero",
|
||||||
"del sugo", "del suino", "della suite", "del sulfureo", "del sultano", "di Steffo", "di Spaggia",
|
"del sugo", "del suino", "della suite", "del sulfureo", "del sultano", "di Steffo", "di Spaggia",
|
||||||
"di Sabrina", "del sas", "del ses", "del sis", "del sos", "del sus", "della supremazia", "del Santissimo",
|
"di Sabrina", "del sas", "del ses", "del sis", "del sos", "del sus", "della supremazia", "del Santissimo",
|
||||||
"della scatola", "del supercalifragilistichespiralidoso", "del sale", "del salame", "di (Town of) Salem",
|
"della scatola", "del supercalifragilistichespiralidoso", "del sale", "del salame", "di (Town of) Salem",
|
||||||
"di Stronghold", "di SOMA", "dei Saints", "di S.T.A.L.K.E.R.", "di Sanctum", "dei Sims", "di Sid",
|
"di Stronghold", "di SOMA", "dei Saints", "di S.T.A.L.K.E.R.", "di Sanctum", "dei Sims", "di Sid",
|
||||||
"delle Skullgirls", "di Sonic", "di Spiral (Knights)", "di Spore", "di Starbound", "di SimCity", "di Sensei",
|
"delle Skullgirls", "di Sonic", "di Spiral (Knights)", "di Spore", "di Starbound", "di SimCity", "di Sensei",
|
||||||
"di Ssssssssssssss... Boom! E' esploso il dizionario", "della scala", "di Sakura", "di Suzie", "di Shinji",
|
"di Ssssssssssssss... Boom! E' esploso il dizionario", "della scala", "di Sakura", "di Suzie", "di Shinji",
|
||||||
"del senpai", "del support", "di Superman"]
|
"del senpai", "del support", "di Superman"]
|
||||||
SMECDS = "🤔 Secondo me, è colpa {ds}."
|
SMECDS = "🤔 Secondo me, è colpa {ds}."
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,6 +56,6 @@ class SmecdsCommand(Command):
|
||||||
command_name = "smecds"
|
command_name = "smecds"
|
||||||
command_title = "Secondo me, è colpa dello stagista..."
|
command_title = "Secondo me, è colpa dello stagista..."
|
||||||
|
|
||||||
async def common(self, call: Call, *args, **kwargs):
|
async def common(self, call: Call, args: CommandArgs):
|
||||||
ds = random.sample(DS_LIST, 1)[0]
|
ds = random.sample(DS_LIST, 1)[0]
|
||||||
return await call.reply(safeformat(SMECDS, ds=ds))
|
return await call.reply(safeformat(SMECDS, ds=ds))
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from .asyncify import asyncify
|
from .asyncify import asyncify
|
||||||
from .call import Call
|
from .call import Call
|
||||||
from .command import Command, InvalidInputError, UnsupportedError
|
from .command import Command, CommandArgs, InvalidInputError, UnsupportedError
|
||||||
from .safeformat import safeformat
|
from .safeformat import safeformat
|
||||||
|
|
||||||
__all__ = ["asyncify", "Call", "Command", "safeformat", "InvalidInputError", "UnsupportedError"]
|
__all__ = ["asyncify", "Call", "Command", "safeformat", "InvalidInputError", "UnsupportedError", "CommandArgs"]
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import typing
|
from .command import Command, CommandArgs
|
||||||
from .command import Command
|
|
||||||
|
|
||||||
|
|
||||||
class Call:
|
class Call:
|
||||||
|
@ -25,4 +24,4 @@ class Call:
|
||||||
coroutine = getattr(self.command, self.interface_name)
|
coroutine = getattr(self.command, self.interface_name)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
coroutine = getattr(self.command, "common")
|
coroutine = getattr(self.command, "common")
|
||||||
return await coroutine(self.command, self, *self.args, **self.kwargs)
|
return await coroutine(self.command, self, CommandArgs(*self.args, **self.kwargs))
|
||||||
|
|
|
@ -13,11 +13,31 @@ class InvalidInputError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CommandArgs:
|
||||||
|
"""The arguments of a command. Raises InvalidInputError if the requested argument does not exist."""
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
self.args = args
|
||||||
|
self.kwargs = kwargs
|
||||||
|
|
||||||
|
def __getitem__(self, item):
|
||||||
|
if isinstance(item, int):
|
||||||
|
try:
|
||||||
|
return self.args[item]
|
||||||
|
except IndexError:
|
||||||
|
raise InvalidInputError(f'Tried to get missing [{item}] arg from CommandArgs')
|
||||||
|
elif isinstance(item, str):
|
||||||
|
try:
|
||||||
|
return self.kwargs[item]
|
||||||
|
except IndexError:
|
||||||
|
raise InvalidInputError(f'Tried to get missing ["{item}"] kwarg from CommandArgs')
|
||||||
|
raise ValueError(f"Invalid type passed to CommandArgs.__getattr__: {type(item)}")
|
||||||
|
|
||||||
|
|
||||||
class Command:
|
class Command:
|
||||||
"""A generic command, called from any source."""
|
"""A generic command, called from any source."""
|
||||||
|
|
||||||
command_name: str = NotImplemented
|
command_name: str = NotImplemented
|
||||||
command_title: str = NotImplemented
|
command_title: str = NotImplemented
|
||||||
|
|
||||||
async def common(self, call: "Call", *args, **kwargs):
|
async def common(self, call: "Call", args: CommandArgs):
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
Loading…
Reference in a new issue