mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-23 19:44:20 +00:00
Do stuff
This commit is contained in:
parent
5b9c441113
commit
bad35daf5b
9 changed files with 48 additions and 49 deletions
|
@ -1,4 +1,4 @@
|
|||
from ..utils import Command, CommandArgs, Call
|
||||
from ..utils import Command, Call
|
||||
from telegram import Update, User
|
||||
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import datetime
|
||||
import dateparser
|
||||
from ..utils import Command, Call
|
||||
from ..error import InvalidInputError
|
||||
|
||||
|
||||
class DateparserCommand(Command):
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import traceback
|
||||
from logging import Logger
|
||||
from ..utils import Command, CommandArgs, Call
|
||||
from ..utils import Command, Call
|
||||
from ..error import NoneFoundError, \
|
||||
TooManyFoundError, \
|
||||
UnregisteredError, \
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import asyncio
|
||||
from ..utils import Command, Call
|
||||
from royalnet.error import InvalidInputError
|
||||
from ..error import InvalidInputError
|
||||
|
||||
|
||||
class PingCommand(Command):
|
||||
|
|
|
@ -2,7 +2,7 @@ import typing
|
|||
from telegram import Update, User
|
||||
from discord import Message, Member
|
||||
from ..utils import Command, Call, asyncify
|
||||
from royalnet.error import UnsupportedError
|
||||
from ..error import UnsupportedError
|
||||
from ..database.tables import Royal, Telegram, Discord
|
||||
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
from .asyncify import asyncify
|
||||
from .call import Call
|
||||
from .command import Command, CommandArgs
|
||||
from .command import Command
|
||||
from .commandargs import CommandArgs
|
||||
from .safeformat import safeformat
|
||||
from .classdictjanitor import cdj
|
||||
from .sleepuntil import sleep_until
|
||||
from .plusformat import plusformat
|
||||
|
||||
__all__ = ["asyncify", "Call", "Command", "safeformat", "CommandArgs",
|
||||
"cdj", "sleep_until", "plusformat"]
|
||||
__all__ = ["asyncify", "Call", "Command", "safeformat", "cdj", "sleep_until", "plusformat", "CommandArgs"]
|
||||
|
|
|
@ -2,7 +2,9 @@ import typing
|
|||
import asyncio
|
||||
import logging
|
||||
from ..network.messages import Message
|
||||
from .command import Command, CommandArgs
|
||||
from .command import Command
|
||||
from royalnet.utils import CommandArgs
|
||||
|
||||
if typing.TYPE_CHECKING:
|
||||
from ..database import Alchemy
|
||||
|
||||
|
|
|
@ -1,47 +1,8 @@
|
|||
import re
|
||||
import typing
|
||||
|
||||
from royalnet.error import InvalidInputError
|
||||
|
||||
if typing.TYPE_CHECKING:
|
||||
from .call import Call
|
||||
|
||||
|
||||
class CommandArgs(list):
|
||||
"""The arguments of a command. Raises InvalidInputError if the requested argument does not exist."""
|
||||
|
||||
def __getitem__(self, item):
|
||||
if isinstance(item, int):
|
||||
try:
|
||||
return super().__getitem__(item)
|
||||
except IndexError:
|
||||
raise InvalidInputError(f'Tried to get missing [{item}] arg from CommandArgs')
|
||||
if isinstance(item, slice):
|
||||
try:
|
||||
return super().__getitem__(item)
|
||||
except IndexError:
|
||||
raise InvalidInputError(f'Tried to get invalid [{item}] slice from CommandArgs')
|
||||
raise ValueError(f"Invalid type passed to CommandArgs.__getattr__: {type(item)}")
|
||||
|
||||
def joined(self, *, require_at_least=0):
|
||||
if len(self) < require_at_least:
|
||||
raise InvalidInputError("Not enough arguments")
|
||||
return " ".join(self)
|
||||
|
||||
def match(self, pattern: typing.Pattern) -> typing.Sequence[typing.AnyStr]:
|
||||
text = self.joined()
|
||||
match = re.match(pattern, text)
|
||||
if match is None:
|
||||
raise InvalidInputError("Pattern didn't match")
|
||||
return match.groups()
|
||||
|
||||
def optional(self, index: int, default=None) -> typing.Optional:
|
||||
try:
|
||||
return self[index]
|
||||
except InvalidInputError:
|
||||
return default
|
||||
|
||||
|
||||
class Command:
|
||||
"""A generic command, called from any source."""
|
||||
|
||||
|
|
38
royalnet/utils/commandargs.py
Normal file
38
royalnet/utils/commandargs.py
Normal file
|
@ -0,0 +1,38 @@
|
|||
import re
|
||||
import typing
|
||||
from royalnet.error import InvalidInputError
|
||||
|
||||
|
||||
class CommandArgs(list):
|
||||
"""The arguments of a command. Raises InvalidInputError if the requested argument does not exist."""
|
||||
|
||||
def __getitem__(self, item):
|
||||
if isinstance(item, int):
|
||||
try:
|
||||
return super().__getitem__(item)
|
||||
except IndexError:
|
||||
raise InvalidInputError(f'Tried to get missing [{item}] arg from CommandArgs')
|
||||
if isinstance(item, slice):
|
||||
try:
|
||||
return super().__getitem__(item)
|
||||
except IndexError:
|
||||
raise InvalidInputError(f'Tried to get invalid [{item}] slice from CommandArgs')
|
||||
raise ValueError(f"Invalid type passed to CommandArgs.__getattr__: {type(item)}")
|
||||
|
||||
def joined(self, *, require_at_least=0):
|
||||
if len(self) < require_at_least:
|
||||
raise InvalidInputError("Not enough arguments")
|
||||
return " ".join(self)
|
||||
|
||||
def match(self, pattern: typing.Pattern) -> typing.Sequence[typing.AnyStr]:
|
||||
text = self.joined()
|
||||
match = re.match(pattern, text)
|
||||
if match is None:
|
||||
raise InvalidInputError("Pattern didn't match")
|
||||
return match.groups()
|
||||
|
||||
def optional(self, index: int, default=None) -> typing.Optional:
|
||||
try:
|
||||
return self[index]
|
||||
except InvalidInputError:
|
||||
return default
|
Loading…
Reference in a new issue